PyVISA 实战:用 Python 控制物理实验室常用仪器
背景
物理及理工科实验中常涉及各类仪器,如函数发生器、示波器、台式万用表等。手动操作效率低且难以实现复杂控制。本文介绍如何通过 Python 编程控制实验室设备,以服务于科研或项目需求。
准备工作
- 一台电脑(笔记本亦可)
- 支持标准通信接口的测试测量仪器(Ethernet、GPIB、Serial、USB 等),本文以 USB 为例
- USB 2.0 至 USB Type B 连接线
NI MAX 与 NI VISA
NI VISA(Virtual Instrument Software Architecture)是 National Instruments 开发的标准化仪器通信架构,为 GPIB、USB、以太网、串口等提供统一接口。NI MAX(Measurement & Automation Explorer)是其配套图形化管理工具,用于自动发现设备、查看 VISA 资源地址及配置通信参数。
在 Python 仪器控制中,NI VISA 作为底层引擎,PyVISA 库提供通信能力;NI MAX 用于前期配置,帮助用户找到仪器的 VISA 地址。
安装完成后,打开 NI VISA 获取设备通信地址。连接 USB 线后点击 Refresh,VISA 会显示新设备,红框内的字符串(如 USB0::0x1AB...)即为通信地址,需复制到 Python 代码中使用。
Python 控制实现
1. 导入库与初始化 ResourceManager
import pyvisa
import time
import numpy as np
import matplotlib.pyplot as plt
import openpyxl
# --- 请根据实际情况修改这些地址 ---
dmm_address = 'USB0::0x1AB1::0x09C4::DM3R240300120::INSTR' # DMM 地址
func_gen_address = 'USB0::0x1AB1::0x0641::DG4E232700999::INSTR' # 函数发生器地址
# 建立 ResourceManager(与 VISA 后端连接)
rm = pyvisa.ResourceManager()
说明:
ResourceManager()对接系统 VISA 库(NI-VISA / Keysight / pyvisa-py 等)。- 地址字符串为资源字符串,不同连接方式格式不同(USB、GPIB、TCP/IP 等)。可用
rm.list_resources()列出当前设备。
2. 发现设备
print("发现的 VISA 资源:")
for r in rm.list_resources():
print(" ", r)
说明:
- 第一步通常调用 发现附近仪器。

