LabVIEW和Keithley 2635A - 无法读取数据

时间:2017-03-06 14:04:37

标签: timeout labview visa gpib

我正在使用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交互控制程序中。

2 个答案:

答案 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?查询是否生成了任何错误
  • 在用于设置电压的GPIB命令的末尾添加问号?