發(fā)布時間:2022年09月29日 作者:德國GMC-I高美測儀(上海電勵士)
LMG600功率計特殊功能之示波周期模式怎么測量
LMG600功率計特殊功能之示波周期模式:
LMG600功率計具有一個特殊功能,即示波周期模式,可以設(shè)置UIP(電壓、電流和功率)采樣值的連續(xù)無間隙輸出和C值的無間隙輸出。對于前面的選項,重點是H值或C值,并存在重復(fù)或缺失的數(shù)據(jù)。現(xiàn)在,重點放在無間隙采樣上,而C值和H值可以在每個周期輸出。在固定間隔模式下,周期時間由用戶定義,諧波模式上是基于諧波窗口次數(shù)的固定值。在示波模式下,周期時間僅取決于真實記錄速率/記錄頻率。
用戶可以通過GLCSR命令定義設(shè)定采樣頻率(以Hz為單位),在設(shè)定的頻率和實際的頻率之間,存在差異。原因是基于儀器的Z大采樣率,即LMG600功率計的1.2MHz(A模塊),有預(yù)定義的采樣頻率集。當用戶選擇一個采樣頻率時,儀器將選定下一個Z大的預(yù)定義值。可以使用GLPSR命令讀取真實記錄頻率。
周期時間是根據(jù)真實記錄速率計算和每個周期的樣本總數(shù)按等式(1.1)計算的,可以使用GLPTLEN命令獲取樣本總數(shù)。當緩存滿時,當前周期結(jié)束,新周期開始。
★ 通過選擇“Scope示波”周期模式,重點是采樣值的計算。所有其他的測量值(例如H值、C值、瞬態(tài)值、閃爍值)可以每個周期輸出一次。
下面提供了有關(guān)如何使用此功能的Python代碼示例。在本例中,設(shè)置了一個通道的電壓、電流和功率的連續(xù)無間隙輸出采樣值。同一通道的電壓和電流的真有效值以及功率通過使用Cont On命令每周期輸出一次。Z終,所有結(jié)果都存儲在CSV文件中。請注意,此示例對于讀取瞬態(tài)事件采樣值或閃爍值無效。
#同一個通道的電壓、電流和功率采樣值和真有效值
cycleno=int(raw_input("nPlease specify the number of cycles: ")) #設(shè)置周期數(shù)
sampling_rate=int(raw_input("nPlease specify the sampling rate: ")) #設(shè)置采樣速率
if (sampling_rate>1212121 or sampling_rate<=0):
print "nThe maximum sampling rate is 1,212121 MSamples per Second!nPlease restart and specify a valid sampling raten"
sys.exit()
IP=str(raw_input("nPlease specify the IP address of the device: ")) #定義儀器的IP地址
TestDevice = LMG600(10) #超過10秒之后連接超時
TestDevice.open("ethernet", IP)
TestDevice.write_opc("*zlang short") #選擇短指令模式
TestDevice.write_opc("glctrac 0,'U1111'") #選擇Track0軌跡 0 的信號
TestDevice.write_opc("glctrac 1,'I1111'") #選擇Track1軌跡 1 的信號
TestDevice.write_opc("glctrac 2,'P1111'") #選擇Track2軌跡 2 的信號
TestDevice.write_opc("glcsr %d" % (sampling_rate))
TestDevice.write_opc("cyclmod SCOPE") #調(diào)整周期長度到采樣速率模式
TestDevice.write_opc("inim") #實現(xiàn)采樣值的緩存讀取
samples_per_cycle = TestDevice.request("glptlen?") #讀取每周期的采樣值
ts = TestDevice.request("glpsr?") #讀取真實采樣速率
upper_border = int(samples_per_cycle) - 1
#讀取每條軌跡的采樣值
glpquery = "glpval? 0,(0:%d); glpval? 1,(0:%d); glpval? 2,(0:%d)" % (upper_border, upper_border, upper_border)
print glpquery
print ts
col_sep = ";" #列分隔符
dec_sep = "." #小數(shù)分隔符
answer = TestDevice.request(glpquery)
TestDevice.write("ACTN; DURNORM?; UTRMS?; ITRMS?; P?; %s" % glpquery) #指定所有的輸出
TestDevice.write("CONT ON") #開始連續(xù)輸出
#得到每周期的結(jié)果
x = 0
answer = ""
while x < cycleno:
current_answer = TestDevice.read()
current_answer_splitted = current_answer.split(";")
durnorm = current_answer_splitted[0]
utrms = current_answer_splitted[1]
itrms = current_answer_splitted[2]
p = current_answer_splitted[3]
glctrac_0 = current_answer_splitted[4]
glctrac_1 = current_answer_splitted[5]
glctrac_2 = current_answer_splitted[6]
glctrac_0_splitted = glctrac_0.split(",")
glctrac_1_splitted = glctrac_1.split(",")
glctrac_2_splitted = glctrac_2.split(",")
sample_count = 0
while sample_count < len(glctrac_0_splitted):
answer += ("%d" % (x)) + col_sep + durnorm + col_sep + ("%d" % (sample_count)) + col_sep + utrms + col_sep + glctrac_0_splitted[sample_count] + col_sep + itrms + col_sep + glctrac_1_splitted[sample_count] + col_sep + p + col_sep + glctrac_2_splitted[sample_count] + "r"
sample_count = sample_count + 1
x=x+1
TestDevice.write("CONT OFF") #停止連續(xù)輸出
print answer
#輸出結(jié)果到CSV文件
csv_handle = open("Gapless Scope.csv", "w") #創(chuàng)建文件對象
#生成CSV文件參數(shù)名欄
csv_header = "Cycle" + col_sep + "Measuring Time (sec)" + col_sep + "Samples Number" + col_sep + "Voltage Rms (V)" + col_sep + "Voltage Sample (V)" + col_sep + "Current Rms (A)" + col_sep + "Current Sample (A)" + col_sep + "Power (W)" + col_sep + "Power Sample (W)" + "n"
csv_handle.write(csv_header) #寫參數(shù)名到文件
csv_handle.write(answer) #寫測量結(jié)果到文件
TestDevice.write("GTL") #關(guān)閉通訊接口并設(shè)置到本地控制
TestDevice.close(False) #使用False避免重置儀器設(shè)置或移除它以重置儀器設(shè)置
print "Measurement finished!n"
csv_handle.close() #關(guān)閉記錄文件#結(jié)束
信號選擇基于以下定義:
★ 使用GLCTRAC命令,您可以定義軌跡的信號并選擇將要測量的信號的采樣值。Z多可提供16條軌跡(使用GLPNTR命令在無間隙示波期間讀取可用軌跡的數(shù)量)。
★ 使用ACTN命令,可以指定將輸出的值。通過添加通道數(shù)字從特定通道中選擇一個,例如,UTRMS2表示第二個通道的真有效值電壓。如果不添加任何數(shù)字(例如UTRMS),則將輸出D一個通道的真有效值電壓。
★ 通過使用Cont On命令,選定的測量值將在每個周期連續(xù)輸出 。