在 Python 编程环境下控
制 R&S 仪器
技术方案
目录
产品:
| R&S
ZVA
| R&S
ZVB
| R&S
ZNB
| R&S
ZNC
| R&S
ZVL
方案说明:Python 是一种一种面向对象、的解释
型编程语言,开发便捷,适用于在自动化测试中编
写测试脚本。本文说明了如何在 Python 语言的开
发环境下控制 R&S 仪器,并给出示例和编程工具
建议。
案
方
术
技
飞
于
1
2
-
6
0
-
2
1
0
2
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
2
目录
目录
1
2
Python 和 PyVisa 简介 ............................................................................................. 4
安装和配置 ................................................................................................................ 5
2.1 软硬件需求 ............................................................................................................................................. 5
2.2
Pythonxy 安装包 ................................................................................................................................... 5
2.3
PyVisa 配置 ........................................................................................................................................... 7
3
Pyvisa 库函数 ........................................................................................................... 8
3.1 仪器访问 ................................................................................................................................................ 8
3.2 仪器读写 ................................................................................................................................................ 8
3.3 触发、同步和服务请求 .......................................................................................................................... 9
4
例程 ......................................................................................................................... 10
4.1
ZNB 读取 Trace ................................................................................................................................... 10
5
其他工具 ................................................................................................................. 10
5.1
Scikit-rf ............................................................................................................................................... 10
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
3
1 Python 和 PyVisa 简介
Summary
Python 是一种简单易学,功能强大的编程语言,它有高效率的高层数据结构,简单
而有效地实现面向对象编程。Python 简洁的语法和对动态输入的支持,再加上解释
性语言的本质,使得它在大多数平台上的许多领域都是一个理想的脚本语言,特别
适用于快速的应用程序开发。
Python 语言当前有多个版本并行,由于 3.0 以上版本有巨大变更,各种代码库尚未
完全支持,因此建议使用 2.x 版本。
Python 有多种发行版本以及安装包,本文选择的是 Pythonxy,因为其包含诸多科学
计算库。
http://code.google.com/p/pythonxy/
部分库列表如下:
NumPy
SymPy
SciPy
Matplotlib
PyVisa
Spyder
PyQt
多维数组和矩阵
符号运算库
科学计算工具包
绘图库
仪器控制接口
开发环境
图形库
在 Python 环境下操作仪器需要对应的 VISA 接口库 PyVisa。Pyvisa 库以直接而便
捷的方式来控制测量仪器。PyVisa 并不提供 VISA 实现,具体的仪器操作功能是由
底层的 VISA 库完成的,关于 VISA 库,推荐安装 NI-VISA。
PyVisa:
http://sourceforge.net/projects/pyvisa/
NI-VISA:
http://www.ni.com/visa/
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
4
2 安装和配置
Summary
2.1 软硬件需求
安装有 WindowsXP 操作系统或 Linux 操作系统的 PC 主机。
带有和仪器连接的端口,如 GPIB,USB,LAN 等。
安装一个 VISA 实现,如 NI-VISA。
在 NI-VISA 的仪器管理器中添加仪器并确认可以连接。
2.2 Pythonxy 安装包
安装方法:
在 Windows 环境下,下载其安装包的 EXE 文件直接双击安装即可。注意安装
时需要手动选择 Pyvisa 项。
安装完成后,双击桌面快捷方式 Python(x,y),在弹出的面板中选择“Spyder”的网
状图标即可启动 Spyder 开发环境,也可以切换至 iPython 或 Eclipse 等。
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
5
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
Summary
6
2.3 PyVisa 配置
Pythonxy 已包含了 PyVisa,但并未默认安装。在安装 Pythonxy 时手动勾选即可:
Summary
安装后在命令栏中输入
>>> import visa
不报错即为正常载入,可以用
>>> visa
来查看安装信息,如:
如果是单独下载安装,需要确定以下文件的存在:
Windows
C:\windows\system32\visa32.dll
Linux
/usr/local/vxipnp/linux/bin/libvisa.so.7
如果文件不在指定位置,则需要在以下位置创建名为“.pyvisarc”的文件以提供 visa 文件
位置:
C:\Documents and Settings\username\.pyvisarc
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
7
或
Summary
c:\Python2x\share\pyvisa\.pyvisarc
其中“username”为 windows 系统的用户名,Python2x 随版本号变换
文件内容:
Windows:
[Paths]
VISA library: C:\windows\system32\visa32.dll
Linux:
[Paths]
VISA library: /usr/lib/libvisa.so.7
上述内容应指向 visa 文件的路径。
3 Pyvisa 库函数
3.1 仪器访问
首先需要在代码中加载 VISA 库,使用
from visa import *
然后可以使用地址初始化仪器,
visa.instrument(resource_name[, **keyw])
例如:
my_instrument = instrument("TCPIP0::192.168.0.23::INSTR")
3.2 仪器读写
Instrument.write(message)
将指定消息写入仪器
例如:
my_instrument.write("*IDN?")
或
my_instrument.write("trigger:delay %f" % (interval_in_ms / 1000.0))
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
8
Summary
Instrument.read()
从仪器读出字符串,返回该字符串
Instrument.read_values([format])
以指定格式读取字符串
Instrument.ask(message)
发送指定消息至仪器并返回响应,例如:
my_instrument.ask("*IDN?")
其返回值即为仪器信息
Instrument.ask_for_values(message[, format])
发送指定消息至仪器并以指定格式返回响应。
3.3 触发、同步和服务请求
pyVisa 有一些函数实现上述请求,例如:
Instrument.clear()
重置仪器。
Instrument.timeout
指定每次 I/O 操作的超时值。
Instrument.delay
指定每次写操作后停止的秒数。
Instrument.trigger()
对仪器发出一个触发信号。
同步,pyVisa 同样使用 SCPI 指令的同步命令*WAI 和*OPC?,例如
Instrument.ask(“*OPC?”)
后续语句将在仪器执行完当前所有操作后再行工作。
2012 年 6 月 21 日
罗德与施瓦茨 在 Python 编程环境下控制 R&S 仪器
9