方 鹏 刘 毅 邱田华
(中国电子科技集团公司 第四十一研究所,山东 青岛266555)
笔者在参与一些自动测试系统软件开发工程中,发现很多仪器设备,有现成的驱动程序,比如供应商提供的,或者用户自己开发的;有些仪器设备直接就没有驱动程序,但支持远程控制;又或者,仪器设备的驱动程序提供的功能没有完全覆盖仪器设备的功能,而实际测试中又需要这些驱动之外的功能等。 对于以上几种情形,本文提出了一种综合性的仪器控制设计方法, 该设计方法在自动测试系统软件平台TestCenter 中已得到实际应用。TestCenter 是中国电子科技集团公司第四十一研究所研发的自动测试系统软件平台,集测试程序开发、调试、运行和管理于一体,主要应用于消费类电子产品、武器装备功能测试与故障诊断等测试领域的整机、模块、电路板等多级别的测试。本文将详细TestCenter 软件平台中仪器控制技术的设计和实现。
图1 软件架构
考虑到仪器功能和现有程控资源的差异性,TestCenter 软件平台采用如下图所示的软件结构实现对仪器设备的控制的,该软件结构包括应用层、中间层(或插件层)、驱动层和硬件层等四个部分。顶层是应用层,即TestCenter 软件平台。 中间层是数据交互层,包括SCPI 插件、仪器插件等数据交互组件,负责应用层与驱动层之间的数据交互。 由于硬件层的不确定性,仪器设备的控制方式的不同,对前端产品的使用带来挑战。 中间层通过TestCenter 的规范接口与前端应用层进行数据交互,并通过驱动层对硬件层的物理设备进行控制,从而屏蔽这个影响。驱动层负责对硬件设备的控制,它包括SCPI 指令集、IVI 标准驱动程序、非IVI 标准驱动程序和VISA 库等。而硬件层主要包括各种不同总线类型的硬件设备。由下图可知,TestCenter 软件平台采用两种方式控制硬件设备。 这两种控制方式可以独立使用,也可以相互结合使用。 在实现部分将主要对中间层的两个关键组件进行详细的介绍。
自动测试系统软件平台TestCenter 的设计借鉴了模块化仪器的硬件思想,采用了基于插件和软件背板的体系架构。插件是TestCenter可识别的动态可插拔软件模块,是具有特定功能的软件模块,类似于软件意义上的VXI 模块。 TestCenter 提供了一个类似VXI 机箱的软件背板,为插件的可插拔、插件的运行和插件间的数据共享提供支持。当然,插件与“背板”之间有规范的接口“插槽”,就如同VXI 或PXI 机箱与仪器模块的接口关系。
TestCenter 插件是实现了一定功能的软件模块,它符合TestCenter插件的接口规范, 可被TestCenter 识别和运行, 通过插件接口与TestCenter 软件平台进行数据交互。 插件由一个执行程序文件和两个网页文件组成。 插件通过网页的方式提供与用户的交互界面,它包括两个网页,一个是设置页面,用于让用户设置插件运行参数,另一个是状态页面,用于向用户显示插件运行结果。 插件执行程序用于提供设置页面和状态页面中使用的ActiveX 控件以及实现TestCenter 插件接口的插件模块。 TestCenter 通过调用插件接口方法, 从而完成插件功能。 仪器插件和SCPI 插件作为TestCenter 仪器控制插件,在其执行程序中实现了TestCenter 插件接口函数,其主要接口函数如图2 所示。
图2
主要接口函数功能描述如表1 所示。
表1
图3 仪器控制流程示意图
仪器插件和SCPI 插件是与TestCenter 软件平台中测试资源服务管理功能结合使用的。 测试资源服务管理是实现仪器互换的关键,它维护一个资源服务列表,包括对资源服务的添加、删除、编辑等操作,并将服务列表以XML 文件进行保存。 资源服务由硬件资源和软件资源组成。硬件资源主要包括硬件设备的描述属性,如程控地址、设备型号、控制方式(如是否仿真)等;软件资源主要包括驱动类别、驱动版本、驱动前缀及驱动程序路径等。仪器插件和SCPI 插件通过服务名称向资源服务管理器申请服务,获取服务的硬件或软件资源。
仪器插件主要是针对有驱动程序的仪器设备进行开发的。考虑到开发周期、成本和可重用性等实效性问题,实际应用中主要针对使用频繁,且驱动程序有标准接口规范的仪器设备,或用户自定义的驱动接口形式的仪器设备,如IVI 规范定义的仪器类。 当然,对于特定的仪器设备,其功能多,操作性强,且应用频繁的,提供友好的用户界面,能够提高设备的易用性,对于这种情况,也适合于开发相应的仪器插件。若驱动层和插件层的接口规范通用,则硬件设备更换的时候,只需更换统一接口规范的驱动程序,即能在不改变程序代码的前提下实现仪器设备的互换。
而相较之于新文人粉彩人物瓷画,现代民间粉彩人物瓷画在未来一段时间里会对其在现代粉彩人物瓷画的地位产生动摇。现代民间粉彩人物瓷画由于其更加迎合普罗大众的审美情趣,而非那些精英审美文化特质,而当中婴戏图、仕女图以及高士图等题材会更贴近现实生活,容易被大众所接受。其次,新文人粉彩人物瓷画需要更高的古典文化修养才能创作出更加震撼的作品。现代民间粉彩人物瓷画表现出来的民族性更加强烈更加直接,具有鲜明的文化符号,更容易被当代陶艺界所接受。
仪器插件的设计流程如下:
·通过服务名称查找服务对象;
·获取服务对象的硬件资源和软件资源;
·动态加载服务对象指定的设备驱动程序;
·调用驱动程序,控制服务对象指定的硬件设备。
SCPI 插件类似仪器插件, 区别在于仪器插件是通过调用仪器驱动程序来控制仪器设备的,而SCPI 插件不使用仪器驱动程序,而是通过直接调用VISA 库函数发送程控指定, 从而实现对仪器设备的控制。 SCPI 插件维护一个SCPI 指令列表,主要包括指令添加、删除、修改等操作, 并调用VISA 库函数将发送指令或回读数据。 SCPI (Standard Command for Programmable Instruments 程控仪器标准命令) 使用标准程控信息、 仪器响应和数据格式从而实现兼容的编程环境,具有很好的规范性和通用性,即使用SCPI 插件开发的测试程序也具有很好的移植性。
SCPI 插件的设计流程如下:
·通过服务名称查找服务对象;
·获取服务对象的硬件资源;
·直接通过VISA 库函数发送SCPI 澄空指令,控制服务对象指定的硬件设备。
SCPI 插件对仪器设备的控制分为三个步骤:
·连接仪器;
·发送指令,发送/接收;
·断开仪器连接。
所使用的VISA 库函数主要包括:
ViStatus _VI_FUNC viRead (ViSession vi, ViPBufbuf, ViUInt32 cnt, ViPUInt32 retCnt);
ViStatus _VI_FUNC viWrite (ViSession vi, ViBufbuf, ViUInt32 cnt,ViPUInt32 retCnt);
ViStatus _VI_FUNC viClose (ViObject vi);
仪器插件与SCPI 插件控制流程如图3 所示。
本文介绍了两种基于TestCenter 软件平台的仪器控制方式,两种方法各有优势。 仪器插件界面友好,适用于功能复杂、重用性高的,且有驱动程序有标准接口规范的仪器设备;SCPI 插件直接通过发送指令控制仪器设备,使用灵活便捷。在实际测试过程中,可以单独使用某一种方式,也可以两种方式结合使用,为用户的测试序列开发提供灵活的选择,从而更好地满足测试需要。 使用该方法开发的测试程序具有很好的重用性和可移植性, 在实际测试中已得到较广泛的应用,并取得了可观的经济效益。
[1]方葛丰,刘毅,等.自动测试系统软件平台技术[J].仪器仪表,2009,10.
[2]曹志伟,周晓东,等.TPS 可移植性及其评估方法研究[J].理论与方法,2007,9.