发布时间:2022年09月29日 作者:德国GMC-I高美测仪(上海电励士)
LMG600功率计特殊功能之示波周期模式怎么测量
LMG600功率计特殊功能之示波周期模式:
LMG600功率计具有一个特殊功能,即示波周期模式,可以设置UIP(电压、电流和功率)采样值的连续无间隙输出和C值的无间隙输出。对于前面的选项,重点是H值或C值,并存在重复或缺失的数据。现在,重点放在无间隙采样上,而C值和H值可以在每个周期输出。在固定间隔模式下,周期时间由用户定义,谐波模式上是基于谐波窗口次数的固定值。在示波模式下,周期时间仅取决于真实记录速率/记录频率。
用户可以通过GLCSR命令定义设定采样频率(以Hz为单位),在设定的频率和实际的频率之间,存在差异。原因是基于仪器的Z大采样率,即LMG600功率计的1.2MHz(A模块),有预定义的采样频率集。当用户选择一个采样频率时,仪器将选定下一个Z大的预定义值。可以使用GLPSR命令读取真实记录频率。
周期时间是根据真实记录速率计算和每个周期的样本总数按等式(1.1)计算的,可以使用GLPTLEN命令获取样本总数。当缓存满时,当前周期结束,新周期开始。
★ 通过选择“Scope示波”周期模式,重点是采样值的计算。所有其他的测量值(例如H值、C值、瞬态值、闪烁值)可以每个周期输出一次。
下面提供了有关如何使用此功能的Python代码示例。在本例中,设置了一个通道的电压、电流和功率的连续无间隙输出采样值。同一通道的电压和电流的真有效值以及功率通过使用Cont On命令每周期输出一次。Z终,所有结果都存储在CSV文件中。请注意,此示例对于读取瞬态事件采样值或闪烁值无效。
#同一个通道的电压、电流和功率采样值和真有效值
cycleno=int(raw_input("nPlease specify the number of cycles: ")) #设置周期数
sampling_rate=int(raw_input("nPlease specify the sampling rate: ")) #设置采样速率
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") #调整周期长度到采样速率模式
TestDevice.write_opc("inim") #实现采样值的缓存读取
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 = "." #小数分隔符
answer = TestDevice.request(glpquery)
TestDevice.write("ACTN; DURNORM?; UTRMS?; ITRMS?; P?; %s" % glpquery) #指定所有的输出
TestDevice.write("CONT ON") #开始连续输出
#得到每周期的结果
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") #停止连续输出
print answer
#输出结果到CSV文件
csv_handle = open("Gapless Scope.csv", "w") #创建文件对象
#生成CSV文件参数名栏
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) #写参数名到文件
csv_handle.write(answer) #写测量结果到文件
TestDevice.write("GTL") #关闭通讯接口并设置到本地控制
TestDevice.close(False) #使用False避免重置仪器设置或移除它以重置仪器设置
print "Measurement finished!n"
csv_handle.close() #关闭记录文件#结束
信号选择基于以下定义:
★ 使用GLCTRAC命令,您可以定义轨迹的信号并选择将要测量的信号的采样值。Z多可提供16条轨迹(使用GLPNTR命令在无间隙示波期间读取可用轨迹的数量)。
★ 使用ACTN命令,可以指定将输出的值。通过添加通道数字从特定通道中选择一个,例如,UTRMS2表示第二个通道的真有效值电压。如果不添加任何数字(例如UTRMS),则将输出D一个通道的真有效值电压。
★ 通过使用Cont On命令,选定的测量值将在每个周期连续输出 。