问题标签 [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 投票
1 回答
499 浏览

python - 尝试与作用域通信时出错,VisaIOError: VI_ERROR_TMO (-1073807339): Timeout expired before operation completed

我需要使用 python 2.7 与示波器进行通信,Agilent Infiniium DCA-J 86100C。Keysight 公司提供各种 python 代码,虽然我试图运行其中一个来帮助我学习,但它崩溃了。我正在使用 GPIB 和 pyvisa 进行连接。

我已经尝试更改为终止字符,但它没有改变任何东西。我不确定我可以尝试什么频段速率。

0 投票
1 回答
60 浏览

python - 如何通过 GPIB 轻松切换通道并从 Kiethley DMM 提取数据?

我正在编写一个简单的 DAQ 程序,它将记录来自各种来源的数据并将它们保存到 csv 文件中,同时提供实时绘图。除了一个一直困扰我的问题之外,它进展顺利。

我必须从中提取数据的地方之一是旧的 Kiethley 2001 DMM,其中装有 scan-2001 10 通道扫描卡。使用 Pymeasure 和 Prologix USB 到 GPIB 适配器,我可以轻松地与设备通信,但我不知道我需要使用哪些 GPIB 命令字符串才能简单地更改为特定通道,记录显示的值,然后在不干扰数字万用表当前设置的情况下移动到下一个通道。不同的通道包括电压读数、电流强度、温度和在该项目之前已经在仪表中设置的电阻。

项目使用 Python3.7 编写,并在 Raspberry Pi 3B+ 上实现

我知道通信正常,因为我可以发送 IDN?并获取单元信息和 ROUT:SCAN:INT? 将显示所有 10 个通道都可用。

0 投票
2 回答
149 浏览

c - 将 IEEE 读/写从 C 转换为 LabVIEW

我正在尝试通过 LabVIEW 中的 IEEE 与 Solartron 7060 电压表进行通信。我必须转换一些最初用于通信的旧 C 代码,但无法找到从 Solartron 获取主要数据的方法。

这是C代码:

dvmtime此代码在以秒为单位的某个积分时间内对直流电压(来自静电计检测到的旧质谱仪上的法拉第检测器)进行采样。以便告诉 7060 DVM 在volt设定的积分时间内读取读数Dvmtime

我尝试了以下 LabVIEW 代码,其中一部分来自控制 Solartron 7061 万用表的 .vi。在我发送的这段代码D3F1MOR3中,它来自ieeewtC 代码第一块中的函数。但是,我很难找到与ieeescnfLabVIEW 中等效的函数。

我第一次运行 .vi 时,它会返回正确的电压读数,然后在第二次运行时返回0,在第三次运行时返回大量数据。此外,每次运行所需的时间也有很大差异。

任何帮助将不胜感激,因为我不确定这个 C 代码在每个阶段都在做什么。

到目前为止我尝试过的LabVIEW .vi

0 投票
1 回答
1224 浏览

python - GPIB 与 Python (PyVisa) 的通信

我正在尝试通过 Python 与一个非常古老的仪器(CCD 相机)进行通信。仪器制造商于 1999 年出版的 GPIB 编程手册仅提供了基本命令列表。它还描述了 GPIB 通信的一些标准过程。

我之前已经成功地编写了一些 Python 程序(使用 PyVisa)来控制和获取通过以太网或 USB 与计算机连接的仪器的数据。然而,GPIB 对我来说是新的,它在 ATN、SRQ、谈话者或听众方面似乎与他们有很大不同。

我从 PyVisa API 文档中找到了 GPIBInterface 和 GPIBInstrument 类,但找不到任何有关谈话者或听众设置的信息。

以下是我的问题,

一个。我对数据采集过程的以下假设是否正确?

  1. 将控制器 (PC) 设置为说话者,将仪器设置为听者。
  2. 控制器断言 ATN。
  3. 控制器命令仪器采集数据。
  4. 等待来自仪器的 SRQ。
  5. 将仪器设置为说话者,将控制器设置为听者。
  6. 控制器将 ATN 置低。
  7. 仪器向控制器发送数据信息。
  8. 单次采集完成。

湾。来自控制器的控制消息和 GPIBInstrument 类中的直接“写入”函数有什么区别?

下面的代码仍然有效,尽管它省略了设置 ATN、说话者或听众。为什么?

C。他们有任何通过 PyVisa 进行 GPIB 编程的示例或教程吗?

找不到合适的。。

任何评论都会有所帮助。提前致谢。

0 投票
1 回答
271 浏览

python - 如何使用 PyVISA 发送低级 GPIB 命令?

所以我已经像这样初始化了一个 GPIB 仪器:

根据PyVISA docskk有一种send_command编写 GPIB 命令的方法。所以我尝试了以下几行,但没有成功:

Keithley 2400 手册 (PDF)在第D-9 和 D-10 页上显示了一些与 GPIB 命令相关的代码,但我不知道如何理解这些代码: Keithley 2400 SMU 用户手册第 D-9 页 Keithley 2400 SMU 用户手册第 D-10 页

问题:在 PyVISAsend_command中使用实例的方法发送低级 GPIB 命令的正确方法是什么?GPIBInstrument

0 投票
1 回答
45 浏览

gpib - 使用 GPIB 命令确定 GPIB 主/辅助地址

如何使用通用接口总线命令确定通用接口总线主/次地址?

0 投票
1 回答
583 浏览

python - PyVISA 错误:系统资源不足,无法执行必要的内存分配

我正在使用 PyVISA 通过 GPIB-USB 通信/控制 Santec TSL-550 可调谐激光器。

几天前我的设置工作正常,一切都正确安装(NI-VISA、NI-MAX、NI 488.2、pip installed pyvisa-py 等),但我今天随机收到此错误。

终端和 PyCharm 中的错误是一样的:

pyvisa.errors.VisaIOError: VI_ERROR_ALLOC (-1073807300): 系统资源不足,无法执行必要的内存分配

网上资源很少,在NI论坛上也没有找到解决办法。

0 投票
0 回答
905 浏览

python-3.x - 使用 Python (Pyvisa) 连接到仪器

我正在尝试使用 python 自动化 Keithley 2000 源表。我使用以下代码连接到仪器(GPIB):

由于 gpib 不是在这里建立的,所以我尝试了以下所有方法,但出现以下错误:

有谁能帮助我吗?

0 投票
1 回答
1292 浏览

python - 在 Python 中使用 PyVISA 通过 GPIB 连接到仪器

我正在研究接触电阻,为此我将使用 Keithley 2400 源表和 Keithley 2182a 纳伏表。两台仪器都通过带有 Keithley KUSB-488b 适配器的 USB 连接到 Windows 计算机。

我正在使用 Python、Pyvisa 模块和 National Instruments 后端 (NI VISA) 创建一个脚本,让我能够进行所需的测量。但是,我在与仪器通信时遇到了麻烦。根据 Pyvisa 开发人员提供的官方文档,我已经运行了几个简单的脚本,但是我无法连接任何一种仪器。以下简单的代码块可能有助于我的解释:

第 4 行的结果应该给我一个我的仪器地址的列表。但是,这些都不正确,因此VI_ERROR_TMO当我尝试第 4 行提供的四个地址时,我得到一个超时错误 ()。这个简单代码块的第 4 行的预期输出将是两个仪器的 GPIB 地址,根据文档。我尝试使用 KI-488 诊断工具与两个设备进行通信。这两个我都成功地沟通了。SMU 的地址是 GPIB::24,纳伏表是 GPIB::7。

我还尝试在更复杂的脚本(当前扫描)中传递从诊断工具获得的 GPIB 地址。然而这导致

pyvisa.errors.VisaIOError: VI_ERROR_LIBRARY_NFOUND (-1073807202)

我在网上搜索了类似的错误,其中大多数是缺少 dll 或位数不正确的结果。然而这不是我的情况,因为一个简单的python -m visa info证明实现的后端是正确的。我也尝试过通过resourcemanager( path ),但这也没有成功。

另外,我尝试安装 Keithley I/O Layer,但还是没有成功。此外,在 Keithley 通信器中,这两个设备实际上都带有相应的 GPIB 地址。问题在于使用 Python 和正确的地址。

0 投票
1 回答
65 浏览

python - 在多种方法中减少常用命令 - Python

对于不同的类,我对共享对象有不同的设置(例如:地址)。每次调用该方法时,我都必须加强地址变量 s.addr,因为类 ItemA 和 ItemB 将 s.addr 设置为不同的地址。有没有办法简化这种冗余?

前任:

ItemsA, B 是随机调用的,因此需要在每个方法中更新地址。

有关额外信息,它是用 GPIB 控制仪器,每个仪器都有不同的地址。s 期望将通用命令发送到 s.addr 中指定的地址。但对更一般的python问题感兴趣。