Engee 文档

通过 Engee 中的 VISA 与外部设备协作

页面进行中。

VISA(虚拟仪器软件架构)是一种规范,旨在统一与测量仪器的交互。

VISA 为与不同类型的硬件(如 USB、以太网、GPIB 和其他接口)进行通信提供了一个抽象概念。在 Engee 中,VISA 用于集成第三方仪器,并允许在不离开 Engee 的情况下通过 Julia 代码对其进行控制。

要在 Engee 中开始使用 VISA,必须连接外部设备支持包,启动客户端程序,并在其中插入用于 Engee 侧服务器操作的 URL,详情请参见文章

然后,需要创建一个 VISA 对象,用于与测量仪器进行交互:

visa = VISA.Visa()

使用 VISA 的基本方法

以下方法用于与通过 VISA 规范连接的设备一起工作:

  • VISA.close_instrument - 为通过 VISA 规范连接的设备释放总线。

  • VISA.close_session - 关闭 VISA 操作会话。

  • VISA.create_instrument - 创建通过指定端口连接的仪器实例。

  • VISA.create_session - 创建 VISA 工作会话。

  • VISA.flush - 清除设备的 I/O 缓冲区。

  • VISA.get_ports - 获取可用物理端口列表。

  • VISA.read - 从设备读取数据。

  • VISA.readbinblock - 从设备读取二进制数据。

  • VISA.visatrigger - 为设备提供中断命令。

  • VISA.write - 向设备写入信息。

  • VISA.writebinblock - 向设备写入二进制数据。

  • VISA.writeeread - 向设备写入信息并读取响应。

有关每种方法的详细说明,请参阅文章VISA 软件控制

使用 VISA 的分步示例

让我们来看一个例子:创建会话、获取端口列表、创建设备、向设备写入命令并读取响应:

  1. 创建会话以使用 VISA 设备 - 通过指定硬件实现(如 @py)来创建会话:

    VISA.create_session(visa, "@py")
    有关硬件实现的更多信息,请访问链接
  2. 获取可用物理端口列表 - 获取可用端口列表并选择最后一个:

    ports = VISA.get_ports(visa).data
    port = last(ports)
  3. 在指定端口上创建仪器抽象 - 创建一个与所选端口协同工作的仪器:

    VISA.create_instrument(visa, port)
    如果需要使用多个仪器,请使用另一个设备的端口重复 VISA.create_instrument(visa, port) 命令。
  4. 发送信息重置仪器 - 发送命令重置仪器:

    VISA.write(visa, port, "*RST;:SYSTEM:LOCK OFF", "")
  5. 向仪器写入数据并延迟读取响应 - 发送命令并延迟 1.2 秒读取响应:

    writeread_result = VISA.writeread(visa, port, ":CHAN1:BASE:WAV?", 1.2).data
  6. 从仪器读取信息 - 从仪器读取数据(确保仪器发送数据):

    read_result = VISA.read(visa, port, "").data
  7. 向仪器写入二进制数据 - 向仪器写入两个字节:

    VISA.writebinblock(visa, port, [0x01, 0x00])
  8. 从仪器读取二进制数据 - 从仪器读取 8 个字节的数据:

    bytes = VISA.readbinblock(visa, port, 8).data
  9. 在设备中启动中断 - 发送中断命令(某些设备可能没有):

    VISA.visatrigger(visa, port)
  10. 清除设备中的 I/O 写缓冲区 - 清除写缓冲区(某些设备可能无法使用):

    VISA.flush(visa, port, "flush_write_buffer")
  11. 为仪器清除总线 - 清除总线,允许其他仪器使用端口:

    VISA.close_instrument(visa, port)
  12. 关闭仪器会话 - 关闭 VISA 会话:

    VISA.close_session(visa)

可能出现的问题及其解决方案

  1. 端口映射问题 - 如果 VISA.get_ports 方法不返回可用端口,请确保用户端有可用的测量设备:

    • 在 Linux 中,与设备交互可能需要以 sudo 权限运行已安装的客户端程序,或将用户添加到 dialout 组。

    • 在 Windows 系统中,检查是否安装了所有必需的驱动程序,必要时以管理员身份运行客户端程序。

  2. 以太网设备问题 - 要使用以太网连接,请确保接口配置正确。如果端口以`"TCPIP::INSTR"`格式返回,则使用`VISA.create_instrument`函数创建仪器:

    VISA.create_instrument(visa, "TCPIP::INSTR")
  3. 阻塞传输总线 - 如果调用`VISA.write`后下一次调用失败,则传输总线可能被阻塞。使用 `VISA.read`释放资源。

  4. 驱动程序冲突 - 如果仪器驱动程序与 VISA 实现驱动程序冲突,请检查用户端仪器日志,以确定缺少的驱动程序。