VISA简介 / VISA Introduction
在学术阶段或是工作中,使用仪器是很正常的。仪器仪表一般都是带有通讯口,比如网口,串口等等,玩labview的可能会知道一些。labview内置的控制仪器就是依赖于Visa。
VISA,虚拟仪器软件架构,是对带有GPIB、VXI、PXI、串口(RS232/485)、以太网、USB和/或IEEE 1394接口的仪器系统进行配置、编程和故障排除的标准。简单的说就是两个人沟通,类似于语言的中介,VISA将你的语言转换变成仪器能听懂的命令。
VISA功能强大,但是读和写基本不是人看的。我个人认为其可读性非常差,尤其是对于类似于我这种非程序员人士来说很痛苦。python则是易读性非常高,两者结合,因此有大佬编写了基于visa内核的python第三方库,即本系列主角,pyvisa。
一.pyvisa模块的安装
1.这边使用pip的方式进行安装
pip install pyvisa
pip接口详细说明可以看:https://blog.csdn.net/pengneng123/article/details/129556320
安装NI-VISA,这一点需要解释一下,pyvisa仅仅只提供了一种中介,让使用者可以利用python以简洁的方式对仪器进行操作,而内核依然是VISA,因此需要安装驱动,VISA驱动有很多种,常用的为NI(labview母公司)提供的NI-VISA。直接到官网下载即可
下载地址:https://www.ni.com/zh-cn/support/downloads/drivers/download.ni-visa.html#329456
二.与仪器建立连接
首先我们安装好pyvisa库以及NI-VISA以后,就可以开始尝试与仪器建立连接了
检查测试环境
(1)仪器IP获取
这边我们通过网口与仪器建链,罗德的仪器IP在屏幕左下角会显示。(需接好仪器到电脑的网线)
配置电脑IP
(1)打开适配器,找到对应的网络配置
(2)配置IP
查看仪器的ip,然后适配器配置好就OK了
连接
import pyvisa as visa ###导入visa库
FSW = visa.ResourceManager()
FSW= FSW.open_resource("TCPIP::192.168.1.100::INSTR") ##连接仪器
FSW.write(":SOURce1:FREQuency:CW 345000000") ###配置频点
(1)配置好的频点信息
(2)显示Remote代表已经与仪器建链
三.实际运用
1.测试仪器:罗德FSW频谱分析仪
测试5G NR的EVM值
import pyvisa as visa
import time
###创建ResourceManager验证安装
Evm=visa.ResourceManager()
###这边通过仪器lan口连接,TCPIP::192.168.100.60为仪器的IP地址
FSW1=Evm.open_resource("TCPIP::192.168.100.60::INSTR")
###获取仪器标识
FSW1.query("*IDN?")
###输入罗德仪器SCPI指令,获取详细指令可登录罗德官网查询,以下指令仅供参考
FSW1.write(":SYST:DISP:UPD ON")
FSW1.write(":INIT:CONT OFF")
FSW1.write(":INST:CRE:NEW NR5G,'5G NR'")
time.sleep(3)
FSW1.write(":INIT:CONT OFF")
FSW1.write(":MMEM:SEL:CHAN:ITEM:HWS ON")
FSW1.write(":MMEM:LOAD:TYPE NEW")
FSW1.write(":MMEM:LOAD:STAT 1,'C:/R_S/Instr/user/PDSCH_256QAM_3450000000'")
time.sleep(3)
FSW1.write(":DISP:WIND:SUBW:TRAC:Y:SCAL:RLEV:OFFS 33.78")
time.sleep(3)
print(FSW1.query(":FETC:CC1:ISRC:FRAM:SUMM:EVM:DSTS:AVER?"))
####获取到的值一般以科学计数法呈现,这边可以用eval()函数做数据转换
EVM = FSW1.query(":FETC:CC1:ISRC:FRAM:SUMM:EVM:DSTS:AVER?")
EVM=eval(EVM)
###保留小数点后两位,打印输出
evm = '%.2f' % EVM
print(evm)
write()函数指像仪器发送指令
query()函数指获取仪器的值
2.如何获取仪器的SCPI指令
例:我们用罗德SMW200A来做演示
注意:罗德仪器的SCPI指令追踪,可直接长按屏幕,出现SCPI后点击进入,后点击开始,会记录操作的每一步,并保存在list里面,结束后可查看,指令写进代码里面运行,这样就完成了仪器自动控制啦。
3.如何获取FSW频谱evm值
如上图,我们想要获取实时数据该怎么做呢
长按面板,出现如下图指令集后,便根据自己想要获取的数据,找到对应的指令。
以上就是一个简单的仪器控制程序,visa还支持GPIB、RS232、USB、Ethernet等接口实现仪器连接。
四.SCPI简介
可编程仪器标准命令(英语:Standard Commands for Programmable Instruments,缩写:SCPI)定义了一套用于控制可编程测试测量仪器的标准语法和命令。
1.常用SCPI指令
*CLS 清楚状态
*ESE 标准事件状态使能
*ESE? 标准事件状态使能
*ESR? 标准事件状态寄存器查询
*IDN? 仪器标识查询
*OPC 操作完成
*OPC? 操作完成询问
*RST 复位
*SRE 服务请求使能
*SRE? 服务请求使能查询
*STB? 读状态字节查询
*TST? 自测试查询
*WAI 等操作完成
@Neng