前言
目前测试测量仪器不仅在终端本身上可显示数值波形等功能,通常已经被集成到控制系统中,如新能源、电动汽车、开关电源、变压器等多个领域中,系统集成时一般都使用SCPI远程与仪器进行交互。本文就来聊聊常用测量仪器和SCPI协议通信相关的那些事。
1.SCPI是什么
SCPI(Standard Commands for Programmable Instruments)是一种标准命令集,于1990与IEEE 488.2协议一起面世,定义了一套用于控制可编程测试测量仪器的标准语法和命令。一种建立在现有标准IEEE488.1和IEEE488.2基础上的标准化仪器编程语言。通过使用标准化的编程信息、仪器响应和数据格式来保证编程环境的兼容性。
2.SCPI能做什么
使用SCPI可以远程与仪器交互,如配置仪器参数、获取仪器数据等。SCPI中所有命令都以ASCII码字符串形式存在,用户发送字符串给仪器后,仪器返回的数据也是字符串,然后用户需要自己解析返回字符串的含义。兼容各种通信方式如以太网、GPIB和串口等,同时无论用户使用C++、Java,Python等哪种编程语言,用户发送的SCPI命令字符串也都是相同的。
3.SCPI语法要求
- 每个SCPI命令都需要一个结束字符,支持“\0”、“\n”两者中任意一个作为结束字符,建议使用“\n”作为命令结束符,这样每次发送命令时,字符串结尾都要附加一个“n”
- 同一个命令,一般都有设置和查询两种类型。比如:RATE? ,这是查询更新率的命令,其中?表示该命令为查询命令,:RATE 1,这是设置更新率的命令,其中1表示要设置更新率为1s
- SCPI命令字符串不区分大小写
- SCPI命令集小写可省略、大写不能省略当命令
- 带有参数时,用一个英文空格将命令和参数分隔。
- 命令中间不允许用空格分隔。
- 命令带有多参数时,用逗号将不同参数分隔。
4.SCPI命令类型
一般都有设置和查询两种类型,改变仪器运行状态的set操作(打开/关闭电压自动量程),或者查询仪器状态的query操作(例如读取输出电压值)。
查询指令:*IDN?,可以用来获取设备的基本信息。
设置指令::INPUT:CURRENT:AUTO:ALL ON,设置所有电流输入单元的自动量程功能。
举例:获取常规数值项目
绑定常规测量项
//分别是:电压、电流、有功功率、功率因数、电压中谐波失真、电流总谐波失真
:num:norm:number 6
:num:norm:item1 U,1
:num:norm:item2 I,1
:num:norm:item3 P,1
:num:norm:item4 LAMB,1
:num:norm:item5 UTHD,1
:num:norm:item6 ITHD,1
:num:norm?
查询常规绑定的测量项
查询方式1:这种查询方式返回6个值,依次上上面设置好的绑定测量项
:num:norm:value?
查询方式2:这种查询方式每次只返回一个数值,1~6分别对应上面绑定的测量项。
:num:norm:value? 1
:num:norm:value? 2
:num:norm:value? 3
:num:norm:value? 4
:num:norm:value? 5
:num:norm:value? 6
5.使用SCPI从致远PA300系列功率计获取数据流程
操作步骤:硬件连接、仪器设置、获取数据、使用预设方式、自定义获取数据(自定义读取、设置读取的个数、设置获取的测量项、读取数据)
其他
此外,SCPI通用命令与仪器的测量无关,主要用来控制重设、自我测试以及状态操作,并且该组操作以*开始,没有层次结构,SCPI仪器的特定控制命令用来从事测量、读取数据以及控制仪器设置等工作,特定控制命令,每个厂家具有自己特色,具体可查阅各厂家对外公开的通信命令手册。