0

我正在尝试使用 PyVisa 使用其 FLEX 命令集来控制 Agilent 4156C。通信似乎工作正常,因为我可以使用 *IDN? 查询仪器?并读取状态字节。我还认为我现在正在正确设置电压扫描,因为当我执行 Python 脚本时,我在 4156 的屏幕上看不到任何错误。我的问题是,当我尝试使用 RMD 读取测量数据时?命令,仪器无响应,超时导致程序错误。这是我目前的程序:

import visa

rm = visa.ResourceManager()

inst = rm.open_resource('GPIB0::17::INSTR')
print(inst.query('*IDN?'))
inst.timeout = 6000

print(inst.write('US'))
print(inst.write('FMT 1,1'))

# Set short integration time
print(inst.write('SLI 1'))
# Enable SMU 3
print(inst.write('CN 3'))
# Set measurement mode to sweep (2) on SMU 3
print(inst.write('MM 2,3'))
# Setup voltage sweep on SMU 3
#print(inst.write('WV 3,3,0,0.01,0.1,0.01'))
print(inst.write('WV 3,3,0,-0.1,0.1,0.01,0.01,0.001,1'))
# Execute
print(inst.write('XE'))

# Query output buffer
print("********** Querying RMD **********")
print(inst.write('RMD? 0'))
print(inst.read())

print("********** Querying STB **********")
print(inst.query('*STB?'))

当我在写入'RMD? 0',或者如果我查询该命令。我觉得我遗漏了一些简单的东西,但无法在可用的 Agilent 或 PyVisa 文档中找到它。任何帮助将不胜感激。我正在使用 LabView 附带的标准 NI VISA(我提到这一点是因为我遇到了这篇文章)。

4

1 回答 1

2

我遇到了同样的问题并解决了。命令 XE 启动使用 Agilent 4156C 执行电流/电压测量:因此在执行期间无法发送任何额外的 GPIB 命令。甚至“机顶盒”?不起作用。我发现检查状态字节和测量完成的唯一方法是不断检查签证驱动程序不断更新的“inst.stb”参数。希望这将有助于其他用户。我的代码:

class Agilent4156C:
    def __init__(self, address):
        try:
            rm = visa.ResourceManager(r'C:\\Windows\\system32\\visa32.dll')
            self.com=rm.open_resource(address)
            self.com.read_termination = '\n'
            self.com.query_delay = 0.0
            self.com.timeout=5000
        except:
            print("** error while connecting to B1500 **")
    def execution(self):
        self.com.write("XE")
        while self.com.stb != 17:
            time.sleep(0.5)         
于 2019-12-20T10:16:45.360 回答