我正在使用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交互控制程序中。
答案 0 :(得分:2)
好的,显然文档不是很清楚。当然,smua.measure.X()
(其中X
是所需参数)命令的作用是将测量结果写在缓冲区上。但是,为了读取缓冲区,简单的viREAD[]
是不够的。
所以基本上答案就是简单地添加一个print
命令:这样我就有了
viWRITE[print(smua.measure.X())];
viREAD[]
我不再有错误了。不确定为什么需要这样的命令,但那就是那个。谢谢大家的时间回答我。
答案 1 :(得分:0)
正如@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?
查询是否生成了任何错误?