基于最优解空间树的SCPI解析器设计
优利德 UTL8500+系列编程手册 说明书

系列直流电子负载编程手册REV 002024.02版权优利德中国科技有限公司商标信息UNI-T是优利德中国科技有限公司的注册商标。
文档编号声明●本公司产品受中国及其它国家和地区的专利(包括已取得的和正在申请的专利)保护。
●本公司保留改变规格及价格的权利。
●本手册提供的信息取代以往出版的所有资料。
●本手册提供的信息如有变更,恕不另行通知。
●对于本手册可能包含的错误,或因手册所提供的信息及演绎的功能以及因使用本手册而导致的任何偶然或继发的损失,UNI-T概不负责。
●未经UNI-T事先书面许可,不得影印、复制或改编本手册的任何部分。
●产品认证UNI-T认证本产品符合中国国家产品标准和行业产品标准及ISO9001:2008标准和ISO14001:2004标准,并进一步认证本产品符合其它国际标准组织成员的相关标准。
本章主要涵盖以下内容:命令解析器——了解命令解析器的一些规则。
命令语法——命令行的书写规则。
查询语法——查询命令的书写规则。
查询响应——查询响应的格式。
命令参考本章节提供了仪器使用的所有的SCPI命令,通过这些SCPI命令,可以完全控制仪器所有功能。
1.1命令串解析主机可以发送一串命令给仪器,仪器命令解析器在捕捉到结束符(\n)或输入缓冲区溢出后开始解析。
例如:合法的命令串:AAA:BBB CCC;DDD EEE;:FFF仪器命令解析器负责所有命令解析和执行,在编写程序前您必须首先对其解析规则有所了解。
1.1.1命令解析规则命令解析器只对ASCII 码数据进行解析和响应。
SCPI 命令串必须以NL(‘\n’ ASCII 0x0A)为结束符,命令解析器在收到结束符后或缓冲区溢出才开始执行命令串。
如果指令握手打开,命令解析器在每接收到一个字符后,立即将该字符回送给主机,主机只有接收到这个回送字符后才能继续发送下一个字符。
命令解析器在解析到错误后,立即终止解析,当前指令作废。
命令解析器在解析到查询命令后,终止本次命令串解析,其后字符串被忽略。
MCP2515中文详解

数据字段
协议 引擎
发送 <7:0>
移位 <14:0> { 发送 <5:0>,接收 <8:0>}
比较器
接收 <7:0>
CRC<14:0>
接收 错误 计数器
发送 错误 计数器
REC TEC
ErrPas BusOff
协议 有限 状态 机
SOF
发送 逻辑
TX
位 时序 逻辑
RX
时钟 发生器
配置 寄存器
2005 Microchip Technology Inc.
监控 SOF 信号:
- 可用于时隙协议和/或总线诊断以检测早期总 线性能退化
• 带有可选使能设定的中断输出引脚 • “缓冲器满”输出引脚可配置为:
- 各接收缓冲器的中断引脚 - 通用数字输出引脚 • “请求发送 (Request-to-Send, RTS)”输入引 脚可各自配置为: - 各发送缓冲器的控制引脚,用于请求立即发送
初稿
DS21801D_CN 第 3 页
MCP2515
图 1-2:
典型系统实现方法图
节点 控制器
SPI MCP2515
TX
RX
XCVR
节点 控制器
SPI
MCP2515
TX
RX
XCVR
CANH CANL
节点 控制器
SPI MCP2515
TX
RX
XCVR
表 1-1:
引脚说明
名称
PDIP/SOIC TSSOP I/O/P 引脚号 引脚号 类型
RXCAN TXCAN
CAN 协议
引擎
发送和接收缓冲器
全数字电源设计

ADC
S/H
Reference
反馈
Rf1 Rf2
© 2014 Microchip Technology Incorporated.版权所有。
Microchip dsPIC® DSC
C15L12 APS
幻灯片 6
III型补偿器 (原极点 + 两个零点/极点对)
步骤1:确定系统传递函数
f p2 = f ESR
建立 闭环控制系统
– 电压模式 –
谐振频率fR下的双极点
交叉 频率fX
开关频率的 一半fSW/2
G(s) x H(s) 执行器 补偿器
ESR 频率fESR
© 2014 Microchip Technology Incorporated.版权所有。
二阶系统(电压模式控制下的降压转换器)
C15L12 APS
Zf
=1 s ⋅C2
(R2
+
s
1 ⋅ C1
)
Zi
= R1
1 s ⋅C2
步骤2:确定系统极点和零点
Gain (dB)
f z1 = 0.6 ⋅ fLC
f p0
90
Phase (o)
90
© 2014 Microchip Technology Incorporated.版权所有。
C15L12 APS
幻灯片 7
累加器
数字III型(3p3z)补偿器的线性差分方程
© 2014 Microchip Technology Incorporated.版权所有。
C15L12 APS
幻灯片 9
课程安排
回顾数字补偿器 用于优化电源转换器的非线性控制方法 功率因数校正改善 高级8位电源示例
IA模块总汇

ACCUM (Accumulator) 积算模块ACCUM 积算模块用于计算模拟型输入信号(流量或脉冲数)的累计值,通常用作流量积算,用户可以清除、预设或保持模块的输出,积算模块可以串接起来使用。
AIN (Analog Input) 模拟信号输入模块AIN 模拟信号输入模块用于处理从模拟量输入类型的现场总线组件(FBM) 或(FBC) 来的单点输入信号,也可接受其它模块的信号。
它同时提供输入信号的修正、滤波、输出保持上次正常值、标度输出到所要求的工程单位、输入通道故障报警、超量程报警以及高、低绝对值报警。
AINR (Redundant Analog Input) 冗余的模拟信号输入模块AINR 模拟信号输入模块用于处理从冗余的模拟量输入类型的现场总线组件(FBMs)或(FBCs) 来的单点输入信号,也可接受二个其它模块的信号。
其它功能与AIN 模块相同。
ALMPRI (Alarm Priority Change) 报警优先级更改模块报警优先级更改模块可以动态地更改某个模块的报警点的优先级使得该报警点的报警优先级随过程的工况而改变。
它有5 个布尔输入PR_INj ( j=1~5 ) 第j 个为“1”时,就将第j 级优先级从PRIOUT 输出。
当PR_INi 与PR_INj (i<j)的输入同时为“1”时,PRIOUT=i 。
AOUT (Analog Output) 模拟信号输出模块模拟信号输出模块将一个单点模拟输出信号送往模拟量输出类型的现场总线组件的某个通道,它同时提供带偏置的手/自动功能,输出信号限制以及输出通道故障报警。
AOUTR (Redundant Analog Output) 冗余的模拟信号输出模块其功能与AOUT 模块基本相同。
BIAS (Bias) 偏置模块偏置模块的输出测量值(MEAS) 和偏置值(BIAS) 之和。
这两个输入可以分别进行标度。
同时,模块提供测量值报警。
但它不提供输出报警。
通信原理实验指导书(学生)

通信原理实验指导书西南大学电子信息工程学院实验教学中心目录前言 .............................................. 错误!未定义书签。
目录 (1)拨码器开关设置一览表 (2)第一部分通信原理预备性实验 (5)实验1 平台介绍及实验注意事项 (5)实验2 DDS信号源实验 (8)第二部分通信原理重要部件实验 (11)实验1 抽样定理及其应用实验 (11)实验2 PCM编译码系统实验 (16)实验3 FSK(ASK)调制解调实验 (20)实验4 PSK DPSK调制解调实验 (25)实验5 位同步提取实验 (33)实验6 眼图观察测量实验 (38)实验7 基带信号的常见码型变换实验 (43)实验8 AMI/HDB3编译码实验 (50)实验9 幅度调制(AM)实验* (54)实验10 幅度解调(AM)实验* (61)实验11 频率调制(PM)实验* (64)实验12 频率解调(PM)实验* (68)第三部分信道复用技术和均衡技术实验 (72)实验1 频分复用/解复用实验 (72)实验2 时分复用/解复用(TDM)实验 (76)拨码器开关设置一览表在本实验平台上,我们采用了红色的拨码器,设置各种实验的项目、信号类型、功能和参数。
拨码器的白色开关上位为1;下位为0。
现将各主要拨码开关功能列表说明如下:注:1. 时钟与基带数据产生模块中各铆孔与测量点说明:4P01为原始基带数据输出铆孔; 4P02为码元时钟输出铆孔;4P03为相对码输出铆孔。
4TP01为码型变换后输出数据测量点;4TP02为编码时钟测量点。
2.以上实验设置的功能和各种参数也可根据学校要求定制。
表0-2“信道编码与ASK。
FSK。
PSK。
QPSK调制”拨码开关SW03状态设置与功能一览表表0-3“基带同步与信道译码模块”拨码开关25SW01状态设置与功能一览表注:译码模块25SW01第一位X为空位待用。
知识点理顺:传输设备中的 GE FE POS 接口

GE接口,FE接口,POSFE接口又称为FE端口,是Fast Ethernet 的缩写,即快速以太网,是目前主流100M网络的称呼。
也是通常说的百兆网。
GE是Gigabit Ethernet 的缩写,即1000M传输速率的以太网。
/i"M1Z2C#i$c.K5q通常用的FE和GE多是指端口配置。
1000BASE-T Gigabit Ethernet 标准的千兆以太网MSCBSC 移动通信论坛A2W:C8x#t'g10/100/1000BASE-T Gigabit Ethernet 自适应千兆以太网在这些接口中,还有一些简称即光口和电口,实际上是指| 国内领先的通信技术论坛/^8w7p-h$i光纤接口和(RJ45)电缆接口的意思。
mscbsc 移动通信论坛拥有30万通信专业人员,超过50万份GSM/3G等通信技术资料,是国内领先专注于通信技术和通信人生活的社区。
/Q+^9V)R!R3E*a6QSONET(Synchronous Optical Network)是ANSI定义的同步传输体制,是一种全球化的标准传输协议,采用光传输,传输速率组成一个序列,包括STM-1(155Mbit/s)、STM-4c (622Mbit/s)和STM-16c/STM-16(2.5Gbit/s),每一级速率都是较低一级的4倍。
由于是同步信号,因此SDH可以方便地实现多路信号的复用。
mscbsc 移动通信论坛拥有30万通信专业人员,超过50万份GSM/3G等通信技术资料,是国内领先专注于通信技术和通信人生活的社区。
$W(o1j0?.v%p:I8M8O SDH(Synchronous Digital Hierarchy)是CCITT(现在的ITU-T)定义的,使用SONET速率的一个子集。
路由器常见的接口有:通用串行接口(通过电缆转换成RS232DTE/DCE接口、V35DTE/DCE接口、X.21DTE/DCE接口、RS449DTE/DCE接口和EIA530DTE接口等)、10M以太网接口、快速以太网接口、10/100自适应以太网接口、千兆以太网接口、ATM接口(2M、25M、155M、633M 等)、POS接口(155M、622M等)、TokenRing接口、FDDI 接口、E1/TI接口、E3/T3接口、ISDN接口等。
信道状态信息无线感知数据获取及应用综述
I只 能 提 供 媒 体 访 问
文
近几 年,在 CS
I研 究 领 域 已 有 众 多 综 述 类 论
,在数据处理、算法以及应用等方面进行详细
[
18
23]
综述,但对 CS
I数据采集设备/工具及相关开源数据
集方面的统计分析内容较浅,未能全面统计当前现有
的 CS
I数据采集设备/工具及相关开源数据集。
播的无线信号即可 实 现 高 效、经 济 及 全 天 候 的 非 接
触式感知。与同 样 非 接 触 式 感 知 的 计 算 机 视 觉
[
4
5]
相比,无线 信 号 具 有 穿 透 感 知 能 力 强、对 环 境 光 线
要求低、室内无缝覆 盖 成 本 低 以 及 不 直 接 涉 及 隐 私
等优势,并拥有感知设备不易被察觉的特点。
i
tTe
chno
l
ogy,The54
t
hRe
s
e
a
r
ch
yo
ga
pmen
I
ns
t
i
t
u
t
eo
fCh
i
naEl
e
c
t
r
on
i
c
sTe
chno
l
ogyGr
oupCo
r
r
a
t
i
on,Sh
i
i
a
zhuang050081,Ch
i
na)
po
j
Ab
s
t
r
a
c
t:I
nr
e
c
en
动态规划经典教程
动态规划经典教程引言:本人在做过一些题目后对DP有些感想,就写了这个总结:第一节动态规划基本概念一,动态规划三要素:阶段,状态,决策。
他们的概念到处都是,我就不多说了,我只说说我对他们的理解:如果把动态规划的求解过程看成一个工厂的生产线,阶段就是生产某个商品的不同的环节,状态就是工件当前的形态,决策就是对工件的操作。
显然不同阶段是对产品的一个前面各个状态的小结,有一个个的小结构成了最终的整个生产线。
每个状态间又有关联(下一个状态是由上一个状态做了某个决策后产生的)。
下面举个例子:要生产一批雪糕,在这个过程中要分好多环节:购买牛奶,对牛奶提纯处理,放入工厂加工,加工后的商品要包装,包装后就去销售……,这样没个环节就可以看做是一个阶段;产品在不同的时候有不同的状态,刚开始时只是白白的牛奶,进入生产后做成了各种造型,从冷冻库拿出来后就变成雪糕(由液态变成固态=_=||)。
每个形态就是一个状态,那从液态变成固态经过了冰冻这一操作,这个操作就是一个决策。
一个状态经过一个决策变成了另外一个状态,这个过程就是状态转移,用来描述状态转移的方程就是状态转移方程。
经过这个例子相信大家对动态规划有所了解了吧。
下面在说说我对动态规划的另外一个理解:用图论知识理解动态规划:把动态规划中的状态抽象成一个点,在有直接关联的状态间连一条有向边,状态转移的代价就是边上的权。
这样就形成了一个有向无环图AOE网(为什么无环呢?往下看)。
对这个图进行拓扑排序,删除一个边后同时出现入度为0的状态在同一阶段。
这样对图求最优路径就是动态规划问题的求解。
二,动态规划的适用范围动态规划用于解决多阶段决策最优化问题,但是不是所有的最优化问题都可以用动态规划解答呢?一般在题目中出现求最优解的问题就要考虑动态规划了,但是否可以用还要满足两个条件:最优子结构(最优化原理)无后效性最优化原理在下面的最短路径问题中有详细的解答;什么是无后效性呢?就是说在状态i求解时用到状态j而状态j就解有用到状态k…..状态N。
自动测试系统(考试必考)--桂林电子科技大学
第一章1、什么是自动测试系统,它由哪几部分组成?自动测试系统:通常把以计算机为核心,在程控指令的指挥下,能自动完成某种测试任务而组合起来的测量仪器和其它设备的有机整体称为自动测试系统,简称ATS (automatic test system)。
组成部分:控制器;可程控仪器、设备;总线与接口;测控软件;被测对象;2、简述自动测试系统的发展历程和发展趋势。
1、第一代自动测试系统(专用型):2、第二代自动测试系统(台式仪器积木型):3、第三代自动测试系统(模块化仪器集成型):3、什么是虚拟仪器,它有什么特点,虚拟仪器系统有哪些组成部分?1.虚拟仪器:是计算机与仪器仪表相结合的产物,它利用计算机的强大功能,结合相应的硬件,大大突破了传统仪器仪表在数据传送、处理、显示和存储等方面的限制,使用户可以方便的对其维护、扩展和升级。
用户可以通过编制软件来定义它的功能。
2.虚拟仪器系统组成:硬件和软件4、虚拟仪器系统中的软件主要包括什么,常用的软件开发工具是什么?1.软件:虚拟仪器能否成功运行,就取决于软件。
包括仪器驱动程序、应用程序和软面板程序。
2.测试软件开发工具:可视化软件平台:HP-VEE,LabVIEW,LabWindows/CVI高级编程语言:C,VC++,VB,Delphi(5.谈谈你对自动测试系统的了解和认识。
6.)结合“电子测量与仪器”课程知识,构建一个自动测试系统,画出系统结构图。
第二章1. VXIbus系统的两种结构外置计算机结构和嵌计算机结构2. 常用VXIbus系统接口GPIB接口、 IEEE1394接口、MXI总线接口、 RS-232C接口、VMEbus接口3. 器件及其分类•器件定义:器件(device)是VXI总线系统中的基本逻辑单元。
•器件编号:在一个VXI总线系统中最多可有256个器件,每个器件有一个唯一的逻辑地址,编号:000~255。
•器件分类:根据其性质、特点和它所支持的通信规程,可以分为消息基器件、寄存器基器件、存储器基器件和扩展器件四种类型。
基于深度聚类的开源软件漏洞检测方法
收稿日期:2018 09 06;修回日期:2018 11 15 基金项目:国家电网公司总部科技项目(SGFJXT00YJJS1800074) 作者简介:李元诚(1970 ),男,教授,博导,博士,主要研究方向为机器学习与信息安全(yuancheng@ncepu.cn);黄戎(1995 ),女,博士研究生,主要研究方向为机器学习与信息安全;来风刚(1971 ),男,高级工程师,硕士,主要研究方向为计算机科学与技术;毛一凡(1964 ),男,工程师,主要研究方向为计算机系统与软件安全;蔡力军(1964 ),男,高级工程师,主要研究方向为信息安全、通信与信息系统.基于深度聚类的开源软件漏洞检测方法李元诚1,黄 戎1,来风刚2,毛一凡2,蔡力军3(1.华北电力大学控制与计算机工程学院,北京102206;2.国家电网公司信息通信分公司,北京100761;3.国网福建省电力有限公司信息通信分公司,福州350003)摘 要:针对开源软件漏洞,提出一种基于深度聚类算法的软件源代码漏洞检测方法。
该方法利用代码图模型构造开源软件代码属性图,遍历得到关键代码节点并提取出应用程序编程接口(API)序列,将其嵌入向量空间,以关键代码为中心进行聚类,根据聚类结果计算每个函数的异常值,生成检测报告并匹配漏洞库,从而检测出源代码中的漏洞。
实验结果表明,该方法能够定位开源软件中漏洞所在的关键代码段并检测出相应漏洞。
关键词:开源软件;漏洞检测;源代码分析;深度学习;聚类中图分类号:TP311 5 文献标志码:A 文章编号:1001 3695(2020)04 031 1107 04doi:10.19734/j.issn.1001 3695.2018.09.0721OpensourcesoftwarevulnerabilitydetectionmethodbasedondeepclusteringLiYuancheng1,HuangRong1,LaiFenggang2,MaoYifan2,CaiLijun3(1.SchoolofControl&ComputerEngineering,NorthChinaElectricPowerUniversity,Beijing102206,China;2.StateGridInformation&Tele communicationBranch,Beijing100761,China;3.StateGridFujianInformation&TelecommunicationBranch,Fuzhou350003,China)Abstract:Aimingattheopensourcesoftwarevulnerability,thispaperproposedasoftwaresourcecodevulnerabilitydetectionmethodbasedondeepclusteringalgorithm.Thismethodusedcodegraphmodeltoconstructthecodeattributemapandtraversedthekeycodenodestoextracttheapplicationprogramminginterfaces(API)sequence,thentookthekeysequenceasthecentertoclusterandcalculatedtheoutliersofthefunctionineachclusteringtogenerateatestreport,matchedthevulnera bilitylibrarytodetectvulnerabilitiesinthesourcecode.Theexperimentalresultsshowthattheproposedmethodcanlocatethekeycodesegmentsofthevulnerabilityinopensourcesoftwareanddetectthevulnerability.Keywords:opensourcesoftware;vulnerabilitydetection;sourcecodeanalysis;deeplearning;clustering 随着互联网和大数据技术的高速发展、社会信息化程度不断提高,开源软件由于具有开放、共享、商用免费、功能灵活等特点,不断融入到各行各业的信息化建设中。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
- -基于最优解空间树的SCPI解析器设计中国电子科技集团第四十一研究所 于鲁波【摘要】提出一种基于解空间树的通用SCP I命令解析器实现方案。
先将SCPI命令集标识成一棵解空间树,给树中每个节点赋予不同的属性。
进行命令解析时,采用贪心算法,搜索解空间树的路径,寻找最优的匹配解。
试验证明针对SCPI规范的各种等效变种命令,该算法具有非常好的普适性。
【关键词】SCPI命令;解空间树;贪心算法;SCPI解析器1.引言SCPI( Standard Commands for Programmable Instruments)是一种标准化的程控仪器编程语言,采用标准语法格式描述仪器功能,为所有仪器仪表提供了一个广泛兼容的编程和数据使用环境。
SCPI命令具有纵向兼容性,横向兼容性和功能兼容性,最大限度的保证了SCPI命令在控制仪器中的灵活性。
根据SCPI99[1]规范,SCPI指令同时具有长命令名和短命令名,命令中某些节点可以作为缺省节点忽略,导致SCPI 命令使用灵活,会产生大量的变形等效命令。
如何将这些等效命令编译成同一条执行指令是SCPI解析器设计的一个难点。
目前常见的SCPI解析器,如文献[2]将SCPI指令提前写入应用程序,如果修改SCPI指令或者将SCPI解析器移植到其他程序,就需要重新修改程序,使用不灵活。
文献[3]虽然提出用XML文件描述SCPI指令,但是在描述SCPI指令的时候,没有充分发挥XML的自描述性和树形结构,因而无法识别全部的等效命令。
本文将解空间树这一技术引入到SCPI解析器设计,通过设计相应的贪心算法,解决了SCPI的等效命令问题。
本文结构如下,第2节介绍SCPI语法和解空间树的基本概念与模型;第3节提出基于解空间树的SCPI解析器生成算法;第4节最后介绍研究意义和进一步的研究方向。
2.SCPI语法与解空间树2.1 SCPI语法简介SCPI是一个基于标准IEEE488.2建立的,适合所有仪器的命令集。
其主要目的是为了使相同功能具有相同的程控命令,以实现程控命令的通用性。
整个SCPI命令可以分为两个部分:一部分IEEE488.2公用命令,以“* ”开头,要求仪器必须执行;另一部分SCPI仪器特定控制命令。
特定命令是以树型结构组织的字符串集,以“:”开头, 节点之间也是以“:”间隔。
每个节点的字符串都有长格式和短格式两种写法, 而且根据仪器需要, 部分命令还会有独立的后缀。
对于缺省节点,还可以省略。
SCPI命令使用一个相似于文件系统的结构,这种命令结构被称为命令树。
最靠近顶端的命令称为根命令,其次为第一级命令,第二级命令等。
因而,对于一条特定的SCPI命令必须根据一个特定的路径才能到达下一层命令。
2.2 解空间树解空间树又称为状态树。
它是一棵树,在这棵树中,包含着问题的所有解。
对于给定的问题,如何在解空间树上寻找问题的最优或者次优解,一般需要用到贪心算法作为空间树回朔的依据。
解空间树的解是一条从根节点到问题解叶节点的路径。
SCPI命令本身以命令树的形式存在,因而,给定一条SCPI命令字符串,能否完全在命令树上找到其对应的解路径,成为解析SCPI命令的关键。
在本文中,将XML文件引入到SCPI解析中,采用XML描述系统的SCPI命令集。
解析该XML文件,在计算机内存中形成一棵解空间树。
对于从程控端收到的SCPI指令,通过搜索该解空间树,判断接收到的SCPI命令是否合法。
对于合法的SCPI指令编译其执行码,执行SCPI命令。
不合法的SCPI命令则返回相应的编译错误。
3.SCPI解空间树算法实现3.1 SCPI命令配置文件通过编写不同的SCPI命令脚本可以生成不同的SCPI指令集。
SCPI命令脚本采用XML描述SCPI指令,不同命令节点分配不同的属性。
这样一棵命令树就形成了一个解空间,通过搜索解空间树,来解释不同的命令。
SCPI命令配置文件部分如图1所示。
图1 SCPI命令配置脚本3.2 脚本节点属性SCPI命令配置脚本采用XML语言描述。
由于XML具有非常突出的自描述性,为动态配置SCPI指令集提供了方便。
配置脚本根节点为“scpi”,子命令节点全部为“cmd”。
根节点仅有一个“version”属性,表示此SCPI配置脚本当前的版本号,用于向上兼容SCPI解析器引擎。
“cmd”节点有5种节点属性,具体如下:1)name:SCPI命令符。
配合cmd节点层次,用于区分不同的SCPI命令。
2)type:SCPI命令类型。
命令符在SCPI命令串中是否为缺省节点。
取值为“mandatory”,该命令符不可省略节点;取值“optional”,可以省略节点。
按照SCPI规范,处于同一层的SCPI命令符有且仅有一个节点可以作为默认节点。
如果同一层出现多个默认节点,应当给出编译错误。
3)canQuery:该SCPI命令是否支持询问。
取值“true”,可以询问;取值“false”不可以询问。
该属性省略时,默认为该命令不可询问。
4)argsType:该SCPI命令所带参数类型。
用于检验接收到的SCPI命令是否符合标准规范。
该节点取值类型与SCPI-99命令规范取值一致。
该属性仅在SCPI叶节点有效。
5)code:SCPI叶节点命令编译执行代码。
该属性仅在叶节点命令有效。
对于等价的SCPI 命令会编译出同一个执行代码。
该脚本文件被解析器解释成一棵解空间树,如图2所示。
图中“[]”内的命令符表示该节点是缺省节点,可以省略。
图2 SCPI命令解空间树在该命令树中,一级节点MEASure的子节点SCALar、VOLTage均为可省略节点。
一级节点SOURce是可省略节点。
3.3 算法实现SCPI解释器工作流程分两个阶段。
第一阶段词法分析。
该阶段会分析收到的SCPI命令字符串,并按照SCPI-99规范对命令进行语法检查,如发现语法错误则返回错误代码;否则将命令字符串按照SCPI语法规则分割成命令符集合和参数集合。
第二阶段搜索解空间树。
根据第一阶段得到的命令字符集和参数集合,搜索解空间树,编译出指令码。
流程如图3所示:图3 SCPI命令解析流程贪心算法:如果解空间树某一层没有对应的节点命令,且该层有可省略节点,则递进到该省略节点的子节点继续搜索,否则回溯到解空间树上一层节点。
按照SCPI-99规范,以图2解空间树构建的SCPI命令集,如下命令为等效命令,SCPI解析器需要编译出同一条执行代码。
:MEASure:SCALar:VOLTage:FREQuency? (1):MEASure:VOLTage:FREQuency? (2):MEASure:SCALar:FREQuency? (3):MEASure:FREQuency? (4):MEA:SCAL:VOLT:FREQ? (5)根据算法的贪心策略,命令(1)通过搜索解空间树,可以立即成功返回。
命令(2)在搜索解空间树到SCALar层时,无法匹配命令,但是该节点为可省略节点,继续搜索其子节点。
在SCALar的子节点匹配命令,成功完成命令树搜索返回。
同样命令(3)在匹配VOLTage节点时失败。
但是该节点为可省略节点,继续搜索其子节点,在VOLTage的子节点匹配命令,成功完成命令树搜索返回。
命令(4)在搜索到SCALar节点匹配失败,但是该节点为可省略节点,按照贪心算法的策略,递归到该节点的子节点VOLTage。
在VOLTage节点匹配失败,但是该节点为可省略节点,递归到该节点的子节点FREQuency,匹配成功返回。
命令(5)为SCPI 短命令格式,SCPI词法分析器会自动辨认长短命令,匹配该命令。
所以该命令也会成功返回。
以上命令都会编译唯一解代码code=”0x010001”。
命令执行器将该代码,交给仪器的Excutor。
不同仪器的Excutor对该代码执行仪器特定的操作,完成SCPI指令的执行。
4.结论本文设计的SCPI解析器有两个特点:1)采用XML语言将SCPI指令描述成解空间树;2)设计了一个基于最优解的贪心算法。
对于给定的SCPI命令串通过搜索解空间树,来判断给定的SCPI命令串是否合法。
该设计有如下优点:1)通过书写不同的XML脚本可以生成不同的SCPI命令集,无需修改修改SCPI解析引擎,就可以部署到不同的仪器上。
2)解决了SCPI的等效命令问题。
所有符合规范的SCPI等效命令都可以编译成同一条执行代码。
因而本文设计的SCPI解析引擎具有通用性、普适性,非常适合程控仪器的SCPI命令内置执行引擎。
参考文献[1]Standard Commands for Programmable Instruments(SCPI).Consortiums SCPI standard[J].May,1999(6).[2]于红雨,李智,刘畅.函数/任意波形发生器SCPI解释器设计与实现[J].国外电子测量技术,2009(4):70-73.[3]孟德伟,唐承苗,秦开宇.基于XML的通用SCPI命令解析器设计[J].仪器仪表用户,2010(17):76-78.基于最优解空间树的SCPI解析器设计作者:于鲁波作者单位:中国电子科技集团第四十一研究所刊名:电子世界英文刊名:Electronics World年,卷(期):2014(19)1.Standard Commands for Programmable Instruments(SCPI)Consortiums SCPI standard 1999(06)2.于红雨;李智;刘畅函数/任意波形发生器SCPI解释器设计与实现[期刊论文]-国外电子测量技术 2009(04)3.孟德伟;唐承苗;秦开宇基于XML的通用SCPI命令解析器设计 2010(17)引用本文格式:于鲁波基于最优解空间树的SCPI解析器设计[期刊论文]-电子世界 2014(19)。