0

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

4

2 回答 2

2

好的,显然文档不是很清楚。当然, smua.measure.X()(需要的参数在哪里X)命令所做的是将测量结果写入缓冲区。然而,为了读取该缓冲区,简单viREAD[]是不够的。

所以基本上答案是简单地添加一个print命令:这样我就有了

viWRITE[print(smua.measure.X())];
viREAD[]

而且我不再有错误了。不知道为什么需要这样的命令,但就是这样。谢谢大家花时间回答我。

于 2017-03-08T16:58:37.767 回答
0

正如@Tom Blodget 在评论中提到的那样,设置电压后机器可能没有任何读取响应。该*IDN?字符串既是 command 又是 query。也就是说,您将编写命令*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 命令末尾添加问号
于 2017-03-06T20:13:59.233 回答