问题标签 [gpib]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
2595 浏览

python - pyVISA:以编程方式将仪器返回到本地模式

我正在使用 pyVISA 来控制 GPIB 网络中的一些仪器。当我创建资源管理器时,我的 GPIB 网络中的所有仪器都进入远程模式,因此前面板显示被锁定并且不会更新。当我关闭资源管理器时,仪器仍处于远程模式。

在这种特殊情况下,我只想控制网络中的一台仪器,但需要打开其他仪器的电源,并实时显示前面板。

有没有办法以编程方式从资源管理器中排除“额外”仪器(如果我可以帮助,不想断开 GPIB 电缆或手动关闭 GPIB 通信)和/或类似“转到本地" 命令我可以发送到整个网络或特定仪器,因此一旦根据需要配置了相关仪器,前面板就会生效?

更新:

经过一些实验和进一步阅读,我发现以下将我的仪器返回到本地模式:

值 0 和 6 是在 pyVISA 中设置的常量(http://pyvisa.readthedocs.io/en/stable/_modules/pyvisa/constants.html)似乎我应该能够在这里指定一个变量名而不是常量所以那里显然是我不理解的其他东西,但至少我现在有一个可行的解决方案。

0 投票
1 回答
237 浏览

matlab - Matlab GPIB - 如何从状态字节寄存器读取消息可用?

正如标题所说...

我想检查通过GPIB连接的设备的SBR寄存器。我有兴趣阅读 MAV 位 4,如果仪器有要发送给我的东西,应该设置它。

问题是,为了检查SBR,我不可避免地必须发送另一个查询(*STB?),默认情况下会清除设备输出缓冲区。换句话说,每当我检查是否有要阅读的内容时,我只是通过查看将其删除。这是重现它的代码,问题出在最后一次调用fscanf()

我怀疑,有一些方法可以在不查询设备的情况下检查 SBR,但我找不到任何东西。VISA 驱动程序的 MATLAB 帮助没有提及直接与驱动程序或总线通信的主题。

我也尝试检查BusManagementStatus无济于事。

作为参考,我使用MATLAB R2011b的是 32 位Agilent VISA驱动程序,支持 GPIB 的设备是Agilent E4980A LCR Meter. 谢谢你的帮助。

0 投票
0 回答
431 浏览

python - PyVisa“更复杂的例子”根本不运行 - Keithley 2400 不理解的命令

把我的头撞在桌子上——一直在用这个吉时利 2400 转来转去,以快速阅读。我遇到的一个问题是,当预期超过 100 个读数时,只有 10 个读数从系统返回……但这不是这个问题的意义所在……

我已经为“更复杂的示例”编写了 PyVisa 文档中的示例,但演示代码根本不起作用。Keithley 2400 在 Sample:Count 生产线上死亡。事实上,在吉时利的手册中,并没有出现这个功能。写在这里是为了让遇到同样问题的人也能谅解。

PyVisa 文档中的示例代码如下:

导入签证 rm = visa.ResourceManager() rm.list_resources() keithley = rm.open_resource('GPIB0::24::INSTR')

keithley.write("*RST;状态:预设;*CLS")

interval_in_ms = 500 number_of_readings = 10 keithley.write("STATUS:MEASUREMENT:ENABLE 512; *sre 1") keithley.write("SAMPLE:COUNT %d" % number_of_readings) keithley.write("TRIGGER:SOURCE BUS")

keithley.write("TRIGGER:DELAY %f" % (interval_in_ms / 1000.0)) keithley.write("TRACE:POINTS %d" % number_of_readings) keithley.write("TRACE:FEED SENSE1; FEED:CONTROL NEXT")

keithley.write("启动")

keithley.assert_trigger()

keithley.wait_for_srq()

keithley.query("跟踪:数据?")

电压 = keithley.query_ascii_values("TRACE:DATA?")

print("平均电压:", sum(voltages) / len(voltages))

keithley.query("状态:测量?")

keithley.write("TRACE:CLEAR; FEED:CONTROL NEXT")

问题似乎出现在这一行:

keithley.write("SAMPLE:COUNT %d" % number_of_readings)

这在文档和 sourcemeter2400 单元中是完全未知的

当前固件是c32

希望这篇文章对某人有所帮助。

0 投票
1 回答
247 浏览

python - 了解 GPIB 接口的 Perl 脚本

我是 perl 和 python 的新手。作为我目前工作的一部分,我被要求将 perl 脚本转换为 python。该脚本的目的是自动化 magnum 测试仪和参数分析仪的任务。你们中的任何人都能够理解 get_gpib_status 函数试图做什么吗?具体问题是

  1. perl 中的 if(/Error/) 是什么意思?
  2. 这是什么意思

    在 perl 中?get_gpib_status 函数的 python 等效项是什么?

    任何形式的帮助都将受到高度赞赏。提前致谢。脚本如下图所示。

    /li>
0 投票
2 回答
1012 浏览

python - 使用 GPIB 上仪器的 PyVISA 没有响应

我正在尝试使用 PyVISA 在 GPIB 上控制仪器(非常旧的霍尔测量设备)。我知道它适用于labview,在那里我发现了哪些地址可以使用跟踪器执行什么操作以及一些基本命令,但没有任何乐趣。我被要求在 python 3 中编写数据采集和分析代码。

到目前为止,我已经能够识别地址:

但是,当我尝试使用任何“wave”或实际上的测量命令字符串(找到跟踪 labview I/O)进行查询时,我总是遇到超时错误。

这是我尝试从仪器中读取的所有内容的结果。

(PyVISA 和 GPIB 与 Keithley 源仪表 IDN 查询一起工作,所以我知道后端正在工作。该仪器是 bio-rad HL 5200,对任何人都有用,我发现没有手册,几乎没有网上参考。)

这是读取磁铁位置的labview框图的图像。从那以后,我可以通过使用 pyvisa 编写来改变位置,但阅读仍然会超时,github 上的类似问题让我相信终止字符是错误的,但我还没有修复。

0 投票
1 回答
103 浏览

labview - Labview(通过 PCI-GPIB 连接到仪器)以研究二极管特性

我是LabVIEW的新手。我希望绘制二极管的 IV、CV 曲线(特性)。有人可以帮我写代码吗?我有 HP 6611c(直流电源)和 HP 34401A(万用表)和 LabVIEW 8.5 等仪器。我想用这个仪器来研究二极管的特性。我不知道如何使用仪器驱动程序。有没有办法在不使用仪器驱动程序的情况下做到这一点,只需编写程序并使用 GPIB Read GPIB write 等,即使用 SCPI 命令。

0 投票
1 回答
179 浏览

vb.net - SCPI 命令 VB.net 负整数到字符串错误

在 VB.net 中,我通过 GPIB-to-USB 将 SCPI 命令发送到安捷伦/是德科技设备。我正在使用此示例将数据写入仪器。https://www.keysight.com/main/editorial.jspx?cc=BR&lc=por&ckey=492255&nid=-33170.1090751.08&id=492255

这是我遇到问题的代码的一部分。

我的代码构建成功,但与我通信的设备显示一条错误消息,提示“分隔符无效”。我认为问题在于 P 以负数开头。如果我要做类似的事情,对于 P=0 到 10 步骤 1,它将在接收命令的设备上工作。但是, Str$ 似乎不适用于负数。使用 Console.WriteLine,我确实看到我的循环在控制台输出中正常工作。根据控制台输出,循环的结构不是问题。

我怎样才能使 P 从负数开始工作?我测试了代码和设备,看看它是否可以通过简单地使用 instrument.WriteString("POW -5 dbm") 来获取负数,并且可以。我真的相信问题涉及Str$。我也尝试过 ("POW" & P.​​ToString() & "dbm") 但这也没有用。我也用 CStr 替换了 Str$ ,但这也不起作用。另请注意,睡眠/延迟不是问题,因为我在另一个 for 循环中实现了它并且它没有错误地工作。

0 投票
1 回答
1238 浏览

embedded - 如何使用 SCPI 命令以编程方式从 E5071C 检索跟踪数据?

我正在使用 Agilent E5071C VNA 并尝试从机器中检索跟踪数据。与其他 VNA 的文档不同,我发现 E5071C 的文档更难理解。我要做的是为特定通道选择一条迹线,然后获取测量数据。

使用 PNA,这很简单,只需设置通道和轨迹,查询CALC<num>:DATA? FDATA,然后获取频率CALC<num>:X?

如何为 E5071C 编写类似的程序。编程手册并没有提供太多关于如何检索这样的数据的见解。

0 投票
1 回答
607 浏览

vb.net - SCPI 命令 VB.net 在循环中显示值

我通过 GPIB-USB 向信号发生器发送 SCPI 命令。我正在发送一个改变频率的命令,这个命令是循环的,这样频率就会不断变化,直到循环完成。这是成功的。我还发送了一个读取频率的命令。我希望能够在每一步读取频率。

我将其用作从信号发生器读取和写入的参考。https://www.keysight.com/main/editorial.jspx?ckey=492255&id=492255&nid=-536900124.0.08&lc=fin&cc=FI

我遇到的问题是,在我完成循环之前,频率不会显示在我的文本框中。然后,我看到最后一个频率,即 500。我在 Visual Studio 中插入了一个断点,我确实看到频率值正在发生变化,但是我应该显示该值的文本框没有正确更新。信号发生器上的值也在变化。我什至尝试只显示 F 而不是我的 sig gen 中的值。我的程序只是不想在循环完成之前在我创建的文本框中显示频率。为什么我不能逐步读取每个频率?我该如何解决这个问题?

0 投票
1 回答
273 浏览

capl - 在 CAPL 中通过 GPIB 生成波形

我有一个使用 GPIB 接口控制的电源生成波形的仿真。这样做的问题是波形频率受到 PC/电源响应速度的限制,因为它通过 VOLT 命令 (SCPI) 生成每个点。

我听说您可以通过 GPIB 将 CSV 文件上传到 Agilent PS (N7973A) 并执行它。这怎么可能?是否有可用于执行此操作的 dll 或 SCPI 命令?