zl程序教程

您现在的位置是:首页 >  其他

当前栏目

SCPI 语言简介

语言 简介
2023-09-11 14:15:08 时间

电子负载中需要用到,所以记录下。来源是德科技

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 个字符,并可以包括一个或多个参数。 命令关键字与第一个参数由空格分开。 使用分号 ( ; ) 可分隔多个命令,如下所示:

*RST; *CLS; *ESE 32; *OPC?

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}

ASCII 字符串参数

字符串参数实际上可包含所有 ASCII 字符集。 字符串必须以配对的引号开始和结尾;可以用单引号或双引号。 引号分隔符也可以作为字符串的一部分,只需键入两次并且不在中间添加任何字符。 下面这个命令使用了字符串参数:

DISPlay:TEXT <quoted string>

例如,下面的示例在仪器的前面板上显示了信息 "WAITING..." (不显示引号)。

DISP:TEXT "WAITING..."

还可以使用下面的示例用单引号显示同一信息。

DISP:TEXT 'WAITING...'

使用设备清除

设备清除是一个 IEEE-488 低级的总线消息,可用于将仪器返回到响应状态。 不同的编程语言和 IEEE-488 接口卡通过其特有的命令来提供对该功能的使用。 当收到设备清除信息时,状态寄存器、错误队列以及所有配置状态都保持不变。

设备清除执行以下操作:

  • 如果正在测量时,则其被终止。
  • 仪器返回到触发“空闲”状态。
  • 清除仪器的输入和输出缓冲区。
  • 仪器准备好接受新的命令串。
  • 重复的命令(即便需要)将被终止而无需“操作完成”指示(适用于 INIT)。
注意

ABORt 命令是终止测量的建议方法。