KEYSIGHT 是德科技 E36233A 电源编程
KEYSIGHT官网提供了基于C#,VB.NET,C/C++,MATLAB,LabVIEW和Python的驱动,同时也提供了基于Win和Linux的用户程序IO Libraries Suite, 如果用户需要将该电源集成到其他系统中,适合使用前者通过编程进行控制和监测;如果用户只是需要简单的远程控制和监测,IO Libraries Suite可以提供比较好的图形界面。
这里以python为例,对E36233A进行简单控制与监测。E36233A的编程手册详见这里,复杂的指令也可以通过Command Expert工具进行软件模拟或者测试。
PyVISA
一般而言,来自Python开发环境的仪器控制需要第三方PyVISA模块来虚拟仪器软件架构(VISA)库。不过大家也许注意到KEYSIGHT也提供了自家的Python Instrument Driver,不过很可惜,暂时还没找到它的使用手册,似乎也没有使用例程。下文还是使用基于PyVISA的方法。
首先连接网络,通过面板设置电源的IP地址为192.168.10.19
打开电源脚本(powerup.py)
import traceback
import pyvisa
def main():
volt_out = 11.0
current_limit = 2.0
rm = pyvisa.ResourceManager()
# rm.list_resources_info()
# E36233A
e36200 = rm.open_resource('TCPIP0::192.168.10.19::inst0::INSTR')
print(e36200.query("*IDN?"), end="")
# CH1
power_ch = 1
e36200.write('VOLT %.3f, (@%d)'%(volt_out, power_ch))
e36200.write('CURR %.3f, (@%d)'%(current_limit, power_ch))
print('CH%d: volt_set = %.3f, curr_limit = %.3f'%(power_ch, volt_out, current_limit))
e36200.write('OUTP 1, (@%d)'%(power_ch))
# CH2
power_ch = 2
e36200.write('VOLT %.3f, (@%d)'%(volt_out, power_ch))
e36200.write('CURR %.3f, (@%d)'%(current_limit, power_ch))
print('CH%d: volt_set = %.3f, curr_limit = %.3f'%(power_ch, volt_out, current_limit))
e36200.write('OUTP 1, (@%d)'%(power_ch))
# Issues a single beep immediately
e36200.write('SYST:BEEP')
e36200.close()
try:
main()
except:
traceback.print_exc()
关闭电源脚本(poweroff.py)
import traceback
import pyvisa
def main():
rm = pyvisa.ResourceManager()
# rm.list_resources_info()
# E36233A
e36200 = rm.open_resource('TCPIP0::192.168.10.19::inst0::INSTR')
print(e36200.query("*IDN?"), end="")
# CH1
power_ch = 1
e36200.write('OUTP 0, (@%d)'%(power_ch))
# CH2
power_ch = 2
e36200.write('OUTP 0, (@%d)'%(power_ch))
# Issues a single beep immediately
e36200.write('SYST:BEEP')
e36200.close()
try:
main()
except:
traceback.print_exc()
读取电源输出电压和电流(powerread.py)
import traceback
import pyvisa
def main():
rm = pyvisa.ResourceManager()
# rm.list_resources_info()
# E36233A
e36200 = rm.open_resource('TCPIP0::192.168.10.19::inst0::INSTR')
print(e36200.query("*IDN?"), end="")
# CH1
power_ch = 1
voltage = eval(e36200.query('MEAS:VOLT? CH%d'%(power_ch)))
current = eval(e36200.query('MEAS:CURR? CH%d'%(power_ch)))
print('CH%d: volt = %.3f V, curr = %.3f A'%(power_ch, voltage, current))
# CH2
power_ch = 2
voltage = eval(e36200.query('MEAS:VOLT? CH%d'%(power_ch)))
current = eval(e36200.query('MEAS:CURR? CH%d'%(power_ch)))
print('CH%d: volt = %.3f V, curr = %.3f A'%(power_ch, voltage, current))
# Issues a single beep immediately
e36200.write('SYST:BEEP')
e36200.close()
try:
main()
except:
traceback.print_exc()