跳转到主要内容

测试仪器硬件抽象层 (HAL)

项目描述

Python实验室硬件抽象层,Py-Lab-HAL

Py-Lab-HAL是一个多平台Python库,用于实验室测试设备的控制和自动化。它已在Windows、Linux和Mac上运行和测试。

我们支持一些常见和不常见的实验室测试设备

  • 直流电源
  • 电池仿真器
  • 万用表
  • 电子负载
  • 函数发生器
  • 光源板
  • 功率计
  • 通用USB继电器
  • 远程电源开关
  • 示波器
  • SMU
  • 光谱辐射计
  • 步进电机
  • 恒温箱
  • 机械臂

Py-Lab-HAL还支持多种设备接口

  • 串行
  • VXI-11
  • USB
  • 套接字
  • HiSLIP(即将推出...)

要求

  1. 操作系统:Windows、Mac或Linux
  2. Python 3.9+
  3. 在Windows上运行时需要NI-VISA
    1. 在此处下载

安装

py-lab-hal 已在 PyPI 上发布,可以通过 pip 进行安装。

pip install py-lab-hal

对于 Linux 用户,您需要运行额外的步骤

echo "SUBSYSTEM==\"usb\", MODE=\"0666\", GROUP=\"usbusers\"" | sudo tee -a /etc/udev/rules.d/99-usbusers.rules

以配置您的 USB 设备访问,否则您将无法通过 USB 连接看到仪器。您可能需要在输入命令后重新启动计算机。

入门指南

让我们先将基本导入项处理完毕

from py_lab_hal import builder
from py_lab_hal.cominterface import cominterface

builder 帮助我们构建仪器,而 cominterface 定义了主机/测试计算机将用于与测试设备通信的通信接口。

创建 Builder

创建 builder 是一个简单的单行命令

build = builder.PyLabHALBuilder()

配置 cominterface

由于 Py-Lab-HAL 支持多种接口,每个接口都需要设置很多参数。有关详细信息,请查看源代码。

要查看连接到您的系统及其资源数据,您可以在终端使用我们内置的实用工具

python3 -m py_lab_hal.scan

这将扫描并列出系统中可用的所有 visa_resources。

配置 USB 和 VXI-11

USB 或 VXI-11 连接很简单,只需填写所需的 visa_resource

build.connection_config = cominterface.ConnectConfig(
    visa_resource='USB0::10893::769::MY59006118::0::INSTR',
)

配置 Socket

对于 Socket 连接,您需要知道仪器的 socket_hostsocket_port。这将填充到一个额外的配置 NetworkConfig 中,您可以单独定义它,或者像我们在这里这样直接定义

build.connection_config = cominterface.ConnectConfig(
    network=cominterface.NetworkConfig(
        host='192.168.11.11',
        port=5025,
    ),
)

配置串行

设置串行连接是最复杂的,因为它包含最多的参数。就像 Socket 一样,您需要填写一个额外的配置 SerialConfig。如果您使用所有默认值,则可以直接传递 SerialConfig,否则您需要设置它。参数及其默认值如下

  • 波特率
    • 默认 = 9600
cominterface.SerialConfig(baud_rate = 9600)
  • 数据位
    • 默认 = 8
cominterface.SerialConfig(data_bits = 8)
  • 停止位
    • 默认 = 1 或 cominterface.StopBits.ONE
    • 选择
cominterface.StopBits.ONE
cominterface.StopBits.ONE_POINT_FIVE
cominterface.StopBits.TWO

#Usage
cominterface.SerialConfig(stop_bits = cominterface.StopBits.ONE)
  • 奇偶校验
    • 默认 = 'N' 或 cominterface.Parity.NONE
    • 选择
cominterface.Parity.EVEN
cominterface.Parity.NONE
cominterface.Parity.SPACE
cominterface.Parity.MARK
cominterface.Parity.ODD

#Usage
cominterface.SerialConfig(parity = cominterface.Parity.NONE)
  • 流控制
    • 默认 = 0 或 'cominterface.ControlFlow.NONE'
    • 选择
cominterface.ControlFlow.DTR_DSR
cominterface.ControlFlow.RST_CTS
cominterface.ControlFlow.NONE
cominterface.ControlFlow.XON_XOFF

#Usage
cominterface.SerialConfig(flow_control = cominterface.ControlFlow.RST_CTS)

在设置 SerialConfig 时覆盖一些默认值的小示例

build.connection_config = cominterface.ConnectConfig(
    visa_resource='ASRL/dev/ttyUSB0::INSTR',
    serial_config=cominterface.SerialConfig(
        baud_rate=115200,
        flow_control=cominterface.ControlFlow.RST_CTS,
    ),
)

构建仪器对象

现在,builder 已经实例化并且 cominterface 设置好了,是时候构建和实例化实际的仪器了!

但首先,我们需要确保对仪器的初始化调用设置正确

仪器配置

以下列出了仪器配置及其默认值

build.instrument_config.reset = True
build.instrument_config.clear = True
build.instrument_config.idn = True
build.instrument_config.auto_init = True

resetclearidn 是标准 VISA SCPI 命令,而 auto_init 是 Py-Lab-HAL 命令。以下为前三个命令及其 SCPI 等价命令

  • reset = *RST
  • clear = *CLR
  • idn = *IDN?

auto_init 决定在 builder 实例化对象后是否打开与仪器的连接。如果您选择 false,您将需要单独调用以打开与仪器的连接。

注意:reset、clear 和 idn 仅适用于 VISA SCPI 仪器。对于非 VISA 仪器,这三个标志都必须设置为 False,否则您将收到仪器的错误。一些非 VISA 仪器的示例包括:机器人臂、面板灯、恒温箱和通用 USB 中继。

构建仪器

要完成仪器的构建,我们将调用 build_instrument 函数

build.build_instrument(builder.FOLDER_NAME.MODULE_NAME)

其中

  • FOLDER_NAME = 设备类型,例如,DMM、直流电源等。
  • MODULE_NAME = 仪器的模块或型号名称,例如,Keysight、Tektronix、Lecroy 等。The MODULE_NAME 遵循以下约定
  • MAKER_MODEL,例如:全部大写的 KEYSIGHT_N6705C

用法

dcpsu = build.build_instrument(builder.DCPowerSupply.KEYSIGHT_N6705C)
dmm = build.build_instrument(builder.DMM.AGILENT_34465A)

关于如何组合使用,请参阅下面的示例以及我们的演示文件夹中的更多示例。

示例

import time
from py_lab_hal import builder
from py_lab_hal.cominterface import cominterface

build = builder.PyLabHALBuilder()

build.connection_config = cominterface.ConnectConfig(
  visa_resource='USB0::10893::769::MY59006118::0::INSTR',
)
dmm = build.build_instrument(builder.DMM.AGILENT_34465A)

build.connection_config = cominterface.ConnectConfig(
  visa_resource='ASRL/dev/ttyUSB0::INSTR',
  serial_config=cominterface.SerialConfig()
)
dcpsu = build.build_instrument(builder.DCPowerSupply.GWIN_PST3202)

try:
  dcpsu.set_output(1, 5, 1)
  dcpsu.enable_output(1, True)
  print('output 5 V')
  time.sleep(1)
  for i in range(5):
    print(dmm.read())

  dcpsu.set_output(1, 6, 1)
  dcpsu.enable_output(1, True)
  print('output 6 V')
  time.sleep(1)
  for i in range(5):
    print(dmm.read())

finally:
  dmm.close()
  dcpsu.close()

免责声明

这不是一个官方的Google产品。

项目详情


下载文件

下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。

源代码分发

py_lab_hal-2.4.20241001.tar.gz (136.0 kB 查看哈希值)

上传时间 源代码

构建分发

py_lab_hal-2.4.20241001-py3-none-any.whl (199.0 kB 查看哈希值)

上传时间 Python 3

支持者