LabVIEW 和 Keithley 2635A - 无法读取数据
LabVIEW and Keithley 2635A - Unable to read data
我正在使用 LabVIEW 及其 VISA 功能来控制 Keithley 2635A 源表。每当我尝试识别设备时,它在读取和写入方面都运行良好。
viWRITE(*IDN?) /* VISA subVI to send the command to the machine */
viREAD /* VISA subVI to read output */
但是,一旦我设置了电压(或电流),它就会这样做。然后我发送命令来执行测量,但我无法读取该数据,出现错误
VISA: (Hex 0xBFFF0015) Timeout expired before operation completed.
之后,我也无法读取 *IDN?
输出。
源表通过 National Instrument GPIB-USB-HS 适配器连接到 PC。
编辑:我忘了补充,这也发生在 VISA Interactive Control 程序中。
正如@Tom Blodget 在评论中提到的,设置电压后机器可能没有任何响应读取。 *IDN?
字符串是 命令和查询 。也就是说,您将写入命令*IDN?
并读取结果。部分命令读取无任何响应。这是一个快速测试,看看您是否应该从仪器中读取数据。以下代码在python;我编写了GPIB命令来设置电压。
sm = SourceMonitor()
# Prints out IDN
sm.query('*IDN?')
# Prints out current voltage (change this to your actual command)
sm.query('SOUR:VOLT?')
# Set a new voltage
sm.write('SOUR:VOLT 1V')
# Read the new voltage
sm.query('SOUR:VOLT?')
请注意,带问号的 GPIB 命令和 query
是在您希望从仪器获得响应时使用的。仪器不会对 write
命令作出响应。查询是 write(...)
和 read(...)
的组合。如果您使用的是 LabView,则可能需要分别编写和读取。
如果您需要验证机器是否收到您的指令并按照指令执行,大多数仪器都有以下常用命令:
*OPC?
查询操作是否完成
SYST:ERR?
查询是否产生任何错误
- 在用于设置电压的GPIB命令末尾添加一个问号
?
好吧,显然文档不是很清楚。 smua.measure.X()
(其中 X
是所需参数)命令的作用当然是将测量结果写入缓冲区。然而,为了读取该缓冲区,简单的 viREAD[]
是不够的。
所以基本上答案是简单地添加一个 print
命令:这样我就有了
viWRITE[print(smua.measure.X())];
viREAD[]
我再也没有错误了。不确定为什么需要这样的命令,仅此而已。谢谢大家花时间回答我。
我正在使用 LabVIEW 及其 VISA 功能来控制 Keithley 2635A 源表。每当我尝试识别设备时,它在读取和写入方面都运行良好。
viWRITE(*IDN?) /* VISA subVI to send the command to the machine */
viREAD /* VISA subVI to read output */
但是,一旦我设置了电压(或电流),它就会这样做。然后我发送命令来执行测量,但我无法读取该数据,出现错误
VISA: (Hex 0xBFFF0015) Timeout expired before operation completed.
之后,我也无法读取 *IDN?
输出。
源表通过 National Instrument GPIB-USB-HS 适配器连接到 PC。
编辑:我忘了补充,这也发生在 VISA Interactive Control 程序中。
正如@Tom Blodget 在评论中提到的,设置电压后机器可能没有任何响应读取。 *IDN?
字符串是 命令和查询 。也就是说,您将写入命令*IDN?
并读取结果。部分命令读取无任何响应。这是一个快速测试,看看您是否应该从仪器中读取数据。以下代码在python;我编写了GPIB命令来设置电压。
sm = SourceMonitor()
# Prints out IDN
sm.query('*IDN?')
# Prints out current voltage (change this to your actual command)
sm.query('SOUR:VOLT?')
# Set a new voltage
sm.write('SOUR:VOLT 1V')
# Read the new voltage
sm.query('SOUR:VOLT?')
请注意,带问号的 GPIB 命令和 query
是在您希望从仪器获得响应时使用的。仪器不会对 write
命令作出响应。查询是 write(...)
和 read(...)
的组合。如果您使用的是 LabView,则可能需要分别编写和读取。
如果您需要验证机器是否收到您的指令并按照指令执行,大多数仪器都有以下常用命令:
*OPC?
查询操作是否完成SYST:ERR?
查询是否产生任何错误- 在用于设置电压的GPIB命令末尾添加一个问号
?
好吧,显然文档不是很清楚。 smua.measure.X()
(其中 X
是所需参数)命令的作用当然是将测量结果写入缓冲区。然而,为了读取该缓冲区,简单的 viREAD[]
是不够的。
所以基本上答案是简单地添加一个 print
命令:这样我就有了
viWRITE[print(smua.measure.X())];
viREAD[]
我再也没有错误了。不确定为什么需要这样的命令,仅此而已。谢谢大家花时间回答我。