测试仪器硬件抽象层 (HAL)
项目描述
Python实验室硬件抽象层,Py-Lab-HAL
Py-Lab-HAL是一个多平台Python库,用于实验室测试设备的控制和自动化。它已在Windows、Linux和Mac上运行和测试。
我们支持一些常见和不常见的实验室测试设备
- 直流电源
- 电池仿真器
- 万用表
- 电子负载
- 函数发生器
- 光源板
- 功率计
- 通用USB继电器
- 远程电源开关
- 示波器
- SMU
- 光谱辐射计
- 步进电机
- 恒温箱
- 机械臂
Py-Lab-HAL还支持多种设备接口
- 串行
- VXI-11
- USB
- 套接字
- HiSLIP(即将推出...)
要求
- 操作系统:Windows、Mac或Linux
- Python 3.9+
- 在Windows上运行时需要NI-VISA
安装
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_host
和 socket_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
- 选择
- 默认 = 1 或
cominterface.StopBits.ONE
cominterface.StopBits.ONE_POINT_FIVE
cominterface.StopBits.TWO
#Usage
cominterface.SerialConfig(stop_bits = cominterface.StopBits.ONE)
- 奇偶校验
- 默认 = 'N' 或
cominterface.Parity.NONE
- 选择
- 默认 = 'N' 或
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
reset
、clear
和 idn
是标准 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 等。TheMODULE_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 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | db82cba4dcc81a1dca7b3098c6c97288950a7a792a384036c9d24a3c615686e7 |
|
MD5 | fc793641f3fffd51a9e143601643ac6a |
|
BLAKE2b-256 | f99447ae4bae7aafa2c581c39c9221beb0f01d36328e90c851b2c40cf426c257 |
py_lab_hal-2.4.20241001-py3-none-any.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c04a6d6dc7855fcc828183dbba5dd0c99e7b251a9e575140f3168b0b99eb4dee |
|
MD5 | 98733924a6fb7dd4a1fa49c5a47c307c |
|
BLAKE2b-256 | 64ea39dcba8ac8e42b529abb31ea6e1b2a9ab2b1dc37e8df8dfbb6e5d1e0880e |