SCPI 语言简介
电子负载中需要用到,所以记录下。来源是德科技
SCPI(可编程仪器的标准命令)是一种基于 ASCII 的仪器编程语言,供测试和测量仪器使用。 SCPI 命令采用分层结构,也称为树系统。 相关命令归组于共用结点或根,这样就形成了子系统。 下面一部分 SENSe 子系统说明了这一点。
SENSe:
VOLTage:
DC:RANGe {<range>|MIN|MAX|DEF}
DC:RANGe? [MINimum | MAXimum | DEFault]
SENSe 是命令的根级关键字,VOLTage 是第二级关键字,DC 是第三级关键字。 冒号 (:) 隔开连续的关键字。
语法惯例
命令语法格式图示如下:
VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}
大多数的命令(及一些参数)是大写和小写字母的混合。 大写字母表示命令的缩写,使程序行变短。 如果要获得较好的程序可读性,可以使用长格式命令。
例如,考虑到前文中 VOLTage 这个关键词。 您可以输入 VOLT 或 VOLTage,大小写字母随意结合。 因此,VolTaGe、volt 和 Volt 都可以接受。 其他格式(如 VOL 和 VOLTAG)将会产生错误。
- 大括号 ( { } ) 包含了参数选择。 大括号不随命令字符串发送。
- 垂直线 ( | ) 分隔参数选择。 例如,上述命令中的 {<range>|MIN|MAX|DEF} 指示您可以指定一个数字范围参数或 "MIN"、"MAX" 或 "DEF"。 条形图不随命令字符串发送。
- 尖括号 ( < > ) 表示必须给括号内的参数指定一个值。 例如,上述的语法语句表明尖括号中的 <range> 参数。 不随命令串一起发送尖括号。 必须为该参数指定一个值(例如 "VOLT:DC:RANG 10"),除非您选择语法中显示的其他选项中的一项(例如 "VOLT:DC:RANG MIN")。
- 可选参数放在放括号内 ( [ ] )。 方括号不会随命令串一起发送。 如果您未对可选参数指定数值,则仪器将使用默认值。
命令分隔符
冒号 (:) 隔开连续的关键字。 必须插入一个空格将参数与命令关键字分开。 如果一个命令需要多个参数,则用一个逗号分隔相邻的参数:
CONF:VOLT:DC 10,0.003
分号( ; ) 分隔同一子系统中的两个命令,并可最大限度地减少输入。 例如,下列字符串:
TRIG:SOUR EXT;COUNT 10
等同于下面两个命令:
TRIG:SOUR EXT
TRIG:COUNT 10
使用一个冒号和一个分号来链接不同子系统的命令。 例如,在下面的示例中,如果不使用冒号和分号,将会产生错误:
TRIG:COUN MIN;:SAMP:COUN MIN
使用 MIN、MAX 和 DEF 参数
可以用 "MIN" 或 "MAX" 代替很多命令的参数。 在某些情况下,您也可以使用 "DEF" 替换。 例如,参考下列例子:
VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}
不用为 <range 参数选择特定的值,可以用 MIN 参数将量程设置为最小值,用 MAX 参数将量程设置为最大值,或用 DEF 参数将量程设置为默认值。>
查询参数设置
要查询大多数参数的当前值,您可以添加问号 ( ? ) 给命令 例如,下面的示例将触发计数设置为 10 次测量:
TRIG:COUN 10
然后,通过发送可以查询计数值:
TRIG:COUN?
您也可以查询所允许的最小或最大计数,如下所示:
TRIG:COUN? MIN
TRIG:COUN? MAX
SCPI 命令终止符
发送到仪器的命令串必须以一个<换行> (<NL) 字符(ASCII 十进制数字 10)结尾。> 可以将 IEEE-488 EOI(结束或标识)信息当做 <NL> 字符,并用来代替 <NL> 字符终止命令串。 一个<回车>后跟一个<换行>也是可行的。 命令串终止总是将当前的 SCPI 命令路径复位到根级。
对于每个包括一个查询并发送到仪器的 SCPI 消息,此仪器用一个<换行>或换行符 (EOI) 终止返回的响应。 例如,如果发送 R?,则在数据块返回以后,用 <NL> 终止响应。 如果 SCPI 消息包括由分号隔开的多个查询(例如 "ROUTe:TERMinals?;R?"),在对最后一次查询响应以后,再次由 <NL> 终止返回的响应。 不论在哪种情况下,在将另一个命令发送到仪器之前,程序在响应中必须读取此 <NL>,否则将会出现错误。 |
IEEE -488.2 通用命令
IEEE-488.2 标准定义了一组常用命令,可执行复位、自检以及状态操作等功能。 常用命令总是以星号 ( * ) 开始,长度为 3 个字符,并可以包括一个或多个参数。 命令关键字与第一个参数由空格分开。 使用分号 ( ; ) 可分隔多个命令,如下所示:
SCPI 参数类型
SCPI 语言定义了程序信息和响应信息所使用的几种数据格式。
数值参数
要求使用数值参数的命令,支持所有常用的十进制数字表示法,包括可选符号、小数点和科学记数法等。 还可以接受数值参数的特殊值,如 MIN、MAX 和 DEF。 此外,还可以在数值参数后面添加单位(例如,M、k、m 或 u)。 如果命令只接受某些特定值,仪器自动将输入的数值参数四舍五入为可用接受的值。 下面这条命令要求给数值参数设置范围值:
VOLTage:DC:RANGe {<range>|MIN|MAX|DEF}
由于 SCPI 解析器不区分大小写,会有些混淆字母 "M"(或 "m")。 为了方便起见,仪器将 "mV"(或 "MV")认作毫伏,但是将 "MHZ"(或 "mhz")认作兆赫。 同样地,"MΩ"(或 "mΩ")被认作是 megΩ。 您可以使用前缀“MA”表示兆。 例如,将 "MAV" 认作兆伏。 |
离散参数
离散参数用于设置有限个参数值(例如 IMMediate、EXTernal 或 BUS)。 就象命令关键字一样,它们也可以有短格式和长格式。 可以混合使用大写和小写字母。 查询响应始终返回全部为大写字母的短格式。 下面的示例要求将离散参数用于温度单位:
UNIT:TEMPerature {C|F|K}
布尔参数
布尔参数代表一个真或假的二进制条件。 对于假条件,仪器将接受 "OFF" 或 "0"。 对于真条件,仪器将接受 "ON" 或 "1"。 当查询布尔设置时,仪器始终返回 "0" 或 "1"。 下面的示例要求使用布尔参数:
DISPlay:STATe {ON|1|OFF|0}