张届飞,张浩腾,孟景涛,2
(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081;2.中华通信系统有限责任公司 河北分公司,河北 石家庄 050081)
可程控仪器自动测试软件的国产化研究
张届飞1,张浩腾1,孟景涛1,2
(1.中国电子科技集团公司第五十四研究所,河北 石家庄 050081;2.中华通信系统有限责任公司 河北分公司,河北 石家庄 050081)
随着操作系统国产化的不断推进,自动测试系统中测试计算机采用了国产的麒麟操作系统,目前缺乏支持国产操作系统的仪器驱动程序。因此需要对自动测试软件与仪器的连接方式、通信协议和功能接口重新进行研究。介绍了可程控仪器标准命令(SCPI),分析了可程控仪器连接方式和接口的特点,在此基础上研究了一种适合国产化的自动测试软件的程序框架。通过与可程控仪器的测试,结果表明其实现了对仪器的连接和控制并提高了软件的可控性和可靠性。
可程控仪器标准命令;自动测试;Linux;可程控仪器
在自动测试系统中,自动测试软件需要通过串口通信[1]、网络通信或GPIB通信等多种接口与各分系统或测试仪器进行数据交互,实现对自动测试设备的管理。而随着操作系统国产化的推进,在新的平台下需要重新研究自动测试软件与可程控仪器的接口与通信的设计、编码和调试。
由于国产操作系统(中标麒麟Linux[2])与Windows操作系统架构有较大区别,驱动程序无法实现兼容。针对这个问题,研究了可程控仪器标准命令[3](Standard Command for Programmable Instrument)以及仪器的连接方式和对外通信机制。本着统一化设计[4]的思想,使用QT[5]作为开发工具,设计了适合国产化的程序构架和相应的功能函数。通过对可程控仪器的测试,表明其功能得以实现。同时软件的通用性、可维护性也大大增强。
为了将可程控仪器的接口通信命令进行规范化描述,使用了SCPI可程控仪器标准命令的形式。SCPI是架构在IEEE488.2[6]基础上的新一代仪器控制语法,其着眼点在于能用相同的标准仪器控制语言就可以控制任意厂家的仪器,使用者不必学习每一部仪器的命令语法,方便系统的组建。通用计数器SCPI命令层次结构如图1所示,SCPI采用这样一个仪器模型作为达成兼容性的一种方式,作为仪器程控命令,实现对仪器的控制,使得不同测试仪器的相同功能具有相同的命令形式,在横向上使测试仪器兼容。同时,SCPI使用相同的命令来控制同一类仪器中的相同功能,从而使得仪器在纵向上兼容。
图1 SCPI仪器模型
国产化自动测试软件采用标准的SCPI命令语法格式,其命令格式为一树状阶层结构,可分为好几个次系统,每一个次系统均为阶层结构关系,分别由1个顶层命令(可称为根命令)配合1个或数个阶层命令构成。以通用计数器SCPI命令子集为例,其阶层结构如图2所示。
图2 通用计数器SCPI命令层次结构
自动测试软件是自动测试系统中的自动运行核心,可在监控分系统的调度下协调其他分系统,完成指定指标测试。
自动测试软件直接通过网络连接至监控分系统,本控时接收监控分系统的调度,向监控分系统汇报测试结果及频谱监视数据;切换测试开关,打通测试链路,选择各分系统的输入信号连接到频谱仪等测试仪器,按照测试项要求通过自动测试流程控制实现各个指标测试,或选择模拟信号发送到需要的分系统;通过网络控制频谱仪、示波器等测试仪器,将采集到的频谱数据和波形数据再通过网络发送到监控分系统。自动测试软件结构如图3所示。
图3 自动测试软件结构
自动测试软件中的监控分系统代理、日志管理、源码显示、零值管理和B码对时[7]等部分均为已有或成熟模块,下面重点介绍与可程控测试仪器之间的国产化设计,分为连接方式设计、通信管理设计和API功能接口设计3个部分。
2.1 连接方式设计
测试仪器与计算机的接口方式有GPIB、网口、USB[8]和串口等多种方式,为了能灵活选择接口类型,与仪器之间的通信采用了VISA-COM标准[9]。Aglient的SICL库和NI的NI-488库都统一到了此标准,VISA库支持对仪器的完全控制,覆盖了仪器100%的功能。其最大优点在于良好的接口无关性,无论接口如何,VISA都可以使用相同的操作与仪器进行通信。
由于目前没有支持GPIB[10]卡的国产操作系统驱动程序,而且GPIB存在可用速率低、连接距离短、电缆柔性差等缺点。USB也存在连接不稳固、故障率高、不适合车载的缺陷,故自动测试软件采用了网络接口[11]通信作为总线接口类型。
自动测试软件采用VISA-COM标准,针对网络接口,采用了TCP/IP协议[12]进行通信,并且没有添加额外的帧协议,通信内容为SCPI标准库[13]函数,如下所示:
[:SENSe]:
[:SENSe]:ACPower:AVERage:COUNt
[:SENSe]:ACPower:AVERage:COUNt?
[:SENSe]:ACPower:AVERage[:STATe]?
[:SENSe]:ACPower:AVERage:TCONtrol EXPonential|REPeat
[:SENSe]:ACPower:AVERage:TCONtrol?
[:SENSe]:ACPower:BANDwidth:INTegration
[:SENSe]:ACPower:BANDwidth[:RESolution]?
[:SENSe]:ACPower:BANDwidth[:RESolution]:AUTO ON |OFF|1|0
[:SENSe]:ACPower:BANDwidth:SHAPe GAUSsian|FLATtop
[:SENSe]:ACPower:BANDwidth:SHAPe?
[:SENSe]:ACPower:BANDwidth:TYPE DB3|DB6
[:SENSe]:ACPower:BANDwidth:TYPE?
[:SENSe]:ACPower:BANDwidth:VIDeo
[:SENSe]:ACPower:BANDwidth:VIDeo?
[:SENSe]:ACPower:BANDwidth:VIDeo:AUTO OFF|ON|0|1
2.2 通信管理设计
自动测试软件与可程控仪器之间的通信管理主要由QTCPClient类完成,QTCPClient类定义的主要函数如表1所示。
表1 QTCPClient类定义的主要函数
各个函数的主要功能如下:
createSocket(unsigned short port,const char*host):根据形参提供的端口号和IP地址创建网络连接,创建成功返回true,否则返回false;
sendWithoutQue(char*buf,int len):其中*buf为要发送的数组,数组为单字节数组,len为要发送的数组长度,直接发送数据,不带返回值;
sendWithQue(char*buf,int len):其中*buf为要发送的数组,数组为单字节数组,len为要发送的数组长度,直接发送数据,返回发送成功的数组长度;
SetID(short PortId):其中PortId为要设置的网络标识,设置连接ID,以区分多个网络连接对应的多个测试仪器;
GetLinkState():获取当前网络连接状态,当前连接正常返回true,网络连接不正常则返回false;
connectServerThread(void*arg):创建网络服务进程,先判断链路状态,是否网络连接通信成功,并记录状态日志,然后创建接收数据线程和发送数据线程;
socketSendThread(void*arg):网络连接发送数据线程;
closeALL():关闭网络连接。
自动测试软件定义了配置文件config.ini,这样当主程序读取配置文件后,根据配置文件获取本机IP和各网络连接对象的IP以及端口号,自动调用网络通信类来获取通讯资源,从而实现和多个可程控仪器建立一对一的网络连接的通信功能,进行数据的打包、接收和发送等工作。
2.3 API功能接口设计
对于可程控仪器对象定义了相应的类,提供与仪器相关的功能接口,并对所有的仪器类进行了统一化和标准化设计,各个仪器类具有相同的结构和基本函数,只有具体的控制函数不同。在基本的类框架上可以根据不同的可程控仪器修改或扩展相应的控制功能接口,提高了扩展性。以Agilent N9320B频谱仪的类SpectrumN90XX为例,由于频谱仪的基本功能函数数量较多,故只选择几个有代表性的函数介绍。SpectrumN90XX类定义的主要函数如表2所示。
表2 SpectrunN90XX类定义的主要函数
各个函数的主要功能如下:
GetLinkStatus():获取当前与仪器的链路状态,若链路正常返回true,否则返回false;
WriteCommandString(int cmdID,Qstring strCmd):只发送命令并且仪器不带返回值,其中cmdID为命令标识,strCmd为字符型命令内容;
WriteReadCommandString(int cmdID,Qstring strCmd):发送命令并且仪器有返回值,其中cmdID为命令标识,strCmd为字符型命令内容;
HashMapInit():设置仪器控制指令标识和状态初始化;
CreateCmdLog(QString strCommand):生成命令型日志;
CreateErrorLog(QString strEvent):生成错误日志;
DataIn(char*pData,int iLen):处理从仪器接收到的原始数据,对数据进行合理性判断,将数据按本地定义的数据结构组帧,将组帧后的数据交DataProceess函数进一步处理,其中*pData为数据内容,iLen为数据长度;
DataProceess(int cmdID):对接收到的数据按命令标识进行处理,判断数据合法性,按要求对数据进行类型转换、上报或显示,其中cmdID为命令标识;
Close():关闭仪器链接退出相关进程;
SetIDN(QString &ret):向仪器发送查询命令以获取仪器的型号等基本信息,其中ret为仪器返回的字符型信息;
SetCenterFreq(double Freq):设置频谱仪的中心频率,其中Freq为中心频率;
GetCenterFreq(double Freq):获取频谱仪的中心频率,其中Freq为中心频率。
运行环境采用中标麒麟Liunx操作系统、龙芯3A(主频1.0 G)处理器、4 G内存和捷世智通工控机,开发环境为Qt集成开发环境[14]。仪器选用Agilent N9320B频谱仪和Agilent MSOX2022A示波器。配置好仪器和计算机的IP地址,通过计算机网卡用网线直接与仪器连接。频谱仪控制和状态显示界面如图4所示,示波器控制和状态显示界面如图5所示。
频谱仪:启动软件与仪器连接成功。发送频谱采集指令,接收到1 611 Byte长度的频谱数据并在界面显示成功,如图4所示。界面实时显示仪器上报的中心频率、分析带宽、视频带宽、参考电平和Mark点频率等并与仪器状态一致。
示波器:启动软件与仪器连接成功,发送通道波形采集指令,接收到551 Byte长度的波形数据并在界面显示成功,如图5所示。A为模拟信号,D1和D2为数字信号。界面实时显示时基和垂直灵敏度等并与仪器状态一致。
图4 频谱仪控制和状态显示界面
图5 示波器控制和状态显示界面
实验结果表明,本文软件实现了在国产操作系统下与仪器的连接和控制。与Windows环境下通过特定驱动控制仪器[15]的方式相比,本文提出的设计框架无需安装繁琐的仪器驱动,只需配置好网络IP即可,具有易于维护、移植性强、占用资源少和可控性高的优点。
针对自动测试技术的发展形势,结合当前国产化的升级需求,分析了可程控仪器标准命令格式SCPI以及可程控仪器的连接和通信[16]。提出了通过网络连接,采用SCPI作为控制命令,并设计了合理的通信和处理方法,解决了在国产化平台下无法使用的问题[17]。通过对仪器的应用验证,表明功能得以实现。统一化和标准化设计的程序框架在提升了开发的工作效率同时还提高了软件的可靠性。削弱了各个设备的开发差异性,为自动测试系统国产化和统一化设计打下基础。
[1] 刘亚兵,马瑞卿,张庆超,等.基于FIFO的串口通信模式研究[J].计算机测量与控制,2014(7):2 301-2 303.
[2] 曾树洪.Linux嵌入式操作系统的实时性研究[D].长沙:中南大学,2008.
[3] 李 博,赵 健.基于Linux的SCPI命令解释器的研究与实现[J].计算测量与控制,2008(7):1 007-1 010.
[4] 孙 婧,刘 莹,孟景涛,等.基于XML 的软件通用程序框架[J].无线电工程,2015,45(6):25-27.
[5] 孙伟杰,张晓欣,毕嘉鸿,等.C程序代码结构审查算法的研究与实现[J].无线电工程,2013,39(3):89-92.
[6] 吴海洲,王志国,王鹏毅.基于帧格式调频遥测信号检测方法分析[J].无线电工程,2012,42(5):18-20.
[7] 刘 浩,苏 理,丁 敏.B码对时在保护测控装置中的实现[J].电网技术,2006(2):63-65.
[8] 索晓杰,翟正军,姜红梅.USB3.0协议与框架设计[J].计算机测量与控制,2012(8):2 233-2 235.
[9] 李 扬,赵葛宵,汪仁煌.基于VISA标准的仪器驱动设计[J].工业仪表与自动化装置,2001(6):59-62.
[10] 史丽萍.关于GPIB接口在自动测试系统中的应用[J].实用测试技术,1995(4):34-36.
[11] 狄彩云,张 英,狄卫国,等.航天测控通信中指定源组播的技术研究[J].无线电工程,2014,44(9):5-7.
[12] 李立清,路 海.基于嵌入式系统的TCP/IP协议栈的实现[J].计算机工程,2004(19):83-84.
[13] 杜秀伟,王前程.SCPI语言解析器的设计与实现[J].计算机测量与控制,2008(7):1 007-1 010.
[14] 徐生模,余 敏.嵌入式QT的内核分析与优化[J].微计算机信息,2007(29):59-61.
[15] 叶小杰,龙 兵.自动测试系统中的仪器设备驱动通用封装研究[J].计算机测量与控制,2011(4):975-977.
[16] 何廷润.进口通信测试仪表垄断下的安全隐患分析[J].移动通信,2014,38(11):10-13.
[17] 白 瑛.异构网络的构建与小基站的测试需求[J].移动通信,2014,38(11):34-36.
Research on Localization of Auto Test Software ofProgrammable Instrument
ZHANG Jie-fei1,ZHANG Hao-teng1,MENG Jing-tao1,2
(1.The54thResearchInstituteofCETC,ShijiazhuangHebei050081,China;2.HebeiBranch,ChinaCommunicationSystemCo.,Ltd.,ShijiazhuangHebei050081,China)
With the continuous advance of the operating system localization,the computer in the auto test system uses the domestic Kylin operating system.At present,instrument drivers are lacking for support of the domestic operating system.Therefore,it is necessary to research the connection mode,communication protocol,and functional interface between the auto test software and instrument.To solve this problem,the Standard Commands for Programmable Instruments(SCPI)is introduced,and then the connection mode and the characteristics of the interface are analyzed.On the basis of this,a program framework suitable for localized auto test software is studied.Test is made with the programmable instrument,the results show that it can realize the connection and control of the instrument and improve the controllability and reliability of the software.
SCPI;auto test;Linux;programmable instrument
ataThread(void*arg):网络连接接收数据线程;
2017-03-09
国家高技术研究发展计划(“863”计划)基金资助项目(2013AA122105)。
10.3969/j.issn.1003-3106.2017.06.03
张届飞,张浩腾,孟景涛.可程控仪器自动测试软件的国产化研究[J].无线电工程,2017,47(6):10-14.[ZHANG Jiefei, ZHANG Haoteng, MENG Jingtao. Research on Localization of Auto Test Software of Programmable Instrument[J].Radio Engineering,2017,47(6):10-14.]
TP319
A
1003-3106(2017)06-0010-05
张届飞 男,(1987—),助理工程师。主要研究方向:航天测控应用软件及自动化测试技术。
张浩腾 男,(1990—),助理工程师。主要研究方向:航天测控应用软件及系统监控软件。