概述
SCPI于1990与IEEE 488.2协议一起面世。这套标准定义了可用于控制一切仪器的语法,命令结构以及数据格式。比如,通用的命令,如配置仪器参数的命令CONFigure,测量命令MEASure等。这些命令可用于任一仪器,并且同一类的命令属于同一子系统里。SCPI同时也定义了若干仪器的种类。比如,任何可控制的电源都会实现DCPSUPPLY基本功能类型。仪器的类别规定了它们会去实现什么样的子系统,当然也包括针对仪器的特定功能。需要注意的是,SCPI并未定义物理层的传输信道的实现方法。虽然上文指出它最开始是和IEEE 488.2(即GPIB)面世的,但SCPI控制命令也可用于串口(RS-232),以太网,USB接口,VXIbus等若干硬件总线。SCPI命令是ASCII字符串,通过物理传输层传入仪器。命令由一连串的关键字构成,有的还需要包括参数。在协议中,命令规定为如下形式:CONFigure。在使用中,即可以写全名,也可以仅写仅包含大写字母的缩写。通常仪器对于查询命令的反馈也为ASCII代码。在传输大量数据时,二进制数据也是可以使用的。
语法
SCPI命令大致分为两种功能:改变仪器运行状态的set操作(打开/关闭电源输出),或者查询仪器状态的query操作(例如读取输出电压值)。查询命令一般以问号(?)结尾。有些命令即可以用来设置,也可以用来查询仪器。相似的命令可以被归类成一种层状或树状结构。例如,任何读取仪器测量结果的命令均可以MEASure开头。特定的子命令以冒号同上级命令分隔开。例如,测量直流电压会是这样的形式:MEASure:VOLTage:DC?,或者测量交流电流会是这样的形式:MEASure:CURRent:AC?。 [2]
参数
有些命令需要额外的参数。参数一般跟在命令的后面,以空格隔开。例如,将某个仪器的触发模式设为normal的命令可写为:TRIGer:MODe NORMal。上述命令里NORMal即为参数。 [2]
串联命令
多个命令可用一条语句发送至仪器,只需在每条命令后使用分号;隔开即可。同时,除了第一条命令,随后的每条命令前必须加一个分号的前缀(除非其以星号开头)。例如,测量直流电压和交流电流可以写成一条语句:MEASure:VOLTage:DC?;:MEASure:CURRent:AC?。 [2]
SCPI 命令为树状层次结构,包括多个子系统,每个子系统由一个根关键词和一个或数 个层次关键字构成。命令行通常以冒号“:”开始(也可省略);关键词之间用冒号“:”分 隔,关键词后面跟随可选的参数设置;命令行后面添加问号“?”,表示查询;命令和参数 以“空格”分开。 例如: [:SOURce:]CURRent[:LEVel][:IMMediate][:AMPLitude] {|MINimum|MAXimum} [:SOURce:]CURRent[:LEVel][:IMMediate][:AMPLitude]? [MINimum|MAXimum] SOURce 是命令的根关键词,CURRent、LEVel、IMMediate 和 AMPLitude 分别是第 二、三、四和五级关键词。命令行以冒号“:”开始,同时将各级关键词分开, 表示可设置的参数;问号“?”表示查询;命令 [:SOURce:]CURRent[:LEVel][:IMMediate][:AMPLitude]和参数之间用“空格” 分开。 在一些带参数的命令中,通常用逗号“,”分隔多个参数。