基于C#的可编程仪器标准命令(SCPI)实践 (附源代码)
SCPI 概述
- SCPI于1990与IEEE 488.2协议一起面世。这套标准定义了可用于控制一切仪器的语法,命令结构以及数据格式。比如,通用的命令,如配置仪器参数的命令CONFigure,测量命令MEASure等。这些命令可用于任一仪器,并且同一类的命令属于同一子系统里。SCPI同时也定义了若干仪器的种类。比如,任何可控制的电源都会实现DCPSUPPLY基本功能类型。仪器的类别规定了它们会去实现什么样的子系统,当然也包括针对仪器的特定功能。
- 需要注意的是,SCPI并未定义物理层的传输信道的实现方法。虽然上文指出它最开始是和IEEE 488.2(即GPIB)面世的,但SCPI控制命令也可用于串口(RS-232),以太网,USB接口,VXIbus等若干硬件总线。
- SCPI命令S是ASCII字符串,通过物理传输层传入仪器。命令由一连串的关键字构成,有的还需要包括参数。在协议中,命令规定为如下形式:CONFigure。在使用中,即可以写全名,也可以仅写仅包含大写字母的缩写。通常仪器对于查询命令的反馈也为ASCII代码。在传输大量数据时,二进制数据也是可以使用的。
SCPI 语法格式和命令的使用方式
- 改变仪器运行状态的set操作(打开/关闭电源输出),或者查询仪器状态的query操作(例如读取输出电压值)。查询命令一般以问号(?)结尾。有些命令即可以用来设置,也可以用来查询仪器。
- 相似的命令可以被归类成一种层状或树状结构。例如,任何读取仪器测量结果的命令均可以MEASure开头。特定的子命令以冒号同上级命令分隔开。例如,测量直流电压会是这样的形式:MEASure:VOLTage:DC?,或者测量交流电流会是这样的形式:MEASure:CURRent:AC?。
- 有些命令需要额外的参数。参数一般跟在命令的后面,以空格隔开。例如,将某个仪器的触发模式设为normal的命令可写为:TRIGer:MODe NORMal。上述命令里NORMal即为参数。
- 缩略命令:可以只发送命令名中的大写字母部分。例如,命令SOURce:CURRent:PROTection:LEVel 20.000, 设置 OCP 电源过载保护为20A,缩略命令 可写为:SOUR:CURR:PROT:LEV 20.000(仅需大写字母)
程序设计实例
整个程序的设计是在固为(GW INSTEK) PSW-系列 多量程可编程开关直流电源 (PSW 30-108) 上进行完成的。 程序同样支持其它遵守SCPI标准命令的可编程仪器。
关于可编程开关直流电源 (PSW 30-108)的更多信息可以点击这里
C# 流程图
程序屏幕截图
下载源代码
这是原创代码!如需引用请注明出处
https://github.com/wengaoy/Programmable_Power_Supply