文/邓细凤 宋帆
ATS在直升机机载电子设备的保障维修中发挥着重要作用,测试仪器的可互换性作为衡量ATS的重要指标之一,是ATS设计时应考虑的重点问题。伴随着仪器互换技术的发展,先后出现了IEEE-488、SCPI(Standard Command for Programming Instrument)、VISA(Virtual Instrument Software Architecture)、IVI(Interchangeable Virtual Instrument)等仪器驱动模型标准和规范。针对仪器驱动开发的研究很多,张波等人针对ATS中仪器的可互换性提出了构建面向信号仪器驱动模型的方法,验证了面向信号的仪器驱动能真正实现仪器的可互换。曲宾等人提出了ATML描述仪器通道资源方法研究,验证了XML在资源描述及资源配置过程中的通用性和灵活性。本文结合某型机机载电子设备的地面综合测试诊断设备项目,基于面向信号的ATS软件平台,设计并实现了基于ATML的仪器驱动,解决了ATS中的仪器可互换性问题。
本文的面向信号ATS软件基于自动测试标记语言(Automatic Test Markup Language,ATML)和信号测试定义规范(Signal & Test Definition,STD),采用层次化体系结构,自上至下分为用户交互层、数据交互层、运行期解析执行层和仪器驱动层,软件架构图如图1所示。用户交互层提供交互式的开发工具,用户利用开发工具完成测试仪器、测试平台、测试配置、UUT、适配器、测试线缆、测试策略等的建模,动态转换成相应的XML文件;数据交互层以XML文件接口形式完成测试资源信息的交互,运行期解析执行层解析XML文件包含的测试项目及测试动作,完成物理路径的匹配及虚拟仪器资源的映射,仪器驱动层通过调用面向信号的仪器驱动来实现整个测试任务。为了实现仪器的互换,测试运行期引擎首先调用面向信号的仪器驱动,在面向信号仪器驱动内部通过测试仪器描述文件实现信号能力与资源的映射。采用该体系结构,若需要更换仪器,只需修改测试仪器描述文件,TPS无需任何改动,确保了ATS的通用性。
在测试仪器能力描述中,ATML标准不直接利用仪器的物理端口,而是定义信号能力和逻辑端口,通过逻辑端口实现信号能力到资源的映射。本文的仪器驱动设计以ATML标准发布的仪器描述模式(InstrumentDescription.xsd)、仪器实例模式(InstrumentInstance.xsd)为原型,根据实际测试需求确定仪器所需的元素、属性,仪器模型的树形结构图如图2所示,分为基本信息、信号能力、资源、接口信息、连线五部分。基本信息包括仪器名称、版本号、简要描述、仪器编号、型号和厂商名称,其中仪器编号、型号和厂商名称是仪器的识别信息。信号能力对仪器产生/测量信号的能力进行描述,包括能力名称、能力描述、逻辑端口信息、信号信息。资源是仪器内部的功能模块,包括资源名称和逻辑端口信息。接口信息包括逻辑端口和物理连接器,以及逻辑端口针脚与物理连接器针脚的对应关系。连线是通过信号能力的逻辑端口与资源的逻辑端口的连接、资源的逻辑端口与接口信息的逻辑端口的连接,实现信号能力到资源的映射。
基于ATML的仪器驱动开发分为测试仪器描述和接口函数实现两大部分。本文以NI PXIe-4080数字万用表为例阐述基于ATML的仪器驱动的实现过程。
分析厂商提供的资料获取仪器模型所需的基本信息、接口信息、信号能力、资源、连线,万用表的模型信息如下:
(1)仪器名称:6位半万用表;
(2)仪器型号:PXIe-4080;
(3)版本号:
(4)厂商:NI。
万用表的接口信息包括逻辑端口、物理连接器及其映射关系,如图3所示。
万用表的基本信号能力包括直流电压测量、交流电压测量、直流电流测量、交流电流测量、频率测量、二线电阻测量、四线电阻测量、二极管正向电压测量、波形点采集,如图4所示。
图1:ATS软件架构图
资源名称:DMM4080_MEASURE;逻辑端口与图2中的端口一致。
按照图3的端口信息完成信号能力的逻辑端口与资源的逻辑端口的连线;按照图2完成资源的逻辑端口与物理连接器的连线。
利用ATS软件平台的驱动开发工具,仪器模型中所需的元素、属性可通过人机界面输入相关信息,动态生成ATML测试仪器模型文档TI.xml。
ATS软件平台利用测试仪器TI.XML自动生成仪器驱动程序框架,包括SOD_PXIe-4080.c( 源 文 件)、SOD_PXIe-4080.cws、SOD_PXIe-4080.h( 头 文 件)、SOD_PXIe-4080.prj四个文件,将万用表厂家提供的IVI底层驱动文件nidmm.fp、nidmm.h、nidmm_32.dll、nidmm_32.lib添加到仪器驱动工程中,供源文件调用。
源文件中的接口函数主要分为仪器公共接口和信号接口函数两大类。仪器公共接口主要功能是实现仪器的初始化、自检、复位和关闭,该接口方法包括SOD_Init、SOD_SelfTest、SOD_Reset、SOD_Close,其方法、参数定义及功能实现如下:
Int SOD_Init(char* TIAddress, char*optionString,int* handle, struDriverReturnVal*drivReturnVal);//DMM初始化,获取仪器句柄,如果初始化失败,则返回“初始化失败”提示信息
Int SOD_SelfTest(int handle,struDriverReturnVal* drivReturnVal);//DMM自检,如果自检失败,则返回“自检失败”提示信息
图2:仪器模型树形结构图
图3:万用表接口信息
图4:万用表信号能力
Int SOD_Reset(int handle,struDriverReturnVal* drivReturnVal);// DMM复位,如果复位失败,则返回“复位失败”提示信息
Int SOD_Close(int handle,struDriverReturnVal* drivReturnVal);// DMM关闭,如果关闭失败,则返回“关闭失败”提示信息
信号接口函数通过获取信号能力名称,完成该信号的建立、连接、读取、断开、复位等操作。该接口方法包括Setup、Connect、Read、Disconnect、Reset。以直流电压测量信号为例,其方法、参数定义及功能实现如下:
int SOD_Measure_DC_VOLTS_Setup(int handle,char* chName,char*signalXml,struDriverReturnVal*drivReturnVal);// 直流电压信号建立,如果建立失败,则返回“直流电压信号建立”提示信息
int SOD_Measure_DC_VOLTS_Connect(int handle,char* chName,char*signalXml,struDriverReturnVal*drivReturnVal);// 直流电压信号连接,如果连接失败,则返回“直流电压信号连接失败”提示信息
int SOD_Measure_DC_VOLTS_Read(int handle,char* chName,char*signalXml,struDriverReturnVal*drivReturnVal);// 直流电压信号读取,如果读取失败,则返回“直流电压信号读取失败”提示信息
int SOD_Measure_DC_VOLTS_Disconnect(int handle,char* chName,char*signalXml,struDriverReturnVal*drivReturnVal);// 直流电压信号断开,如果断开失败,则返回“直流电压信号断开失败”提示信息
int SOD_Measure_DC_VOLTS_Reset(int handle,char* chName,char*signalXml,struDriverReturnVal*drivReturnVal);// 直流电压信号复位,如果复位失败,则返回“直流电压信号复位失败”提示信息
基于ATML的测试仪器驱动使得ATS测试仪器互换简单可行,当需要更换测试仪器时,只需更改相关仪器的测试仪器描述文件(TI.xml),该方法已应用于某型机机载电子设备的地面综合测试诊断设备项目中。结果表明,该驱动设计方法有效解决了ATS中的仪器可互换性问题。
参考文献
[1]刘金宁,孟晨,方新,陈德祥.基于信号接口的IVI驱动器设计标准—IVISignal Interface及其应用[J].测控技术,2004,23(04):68-70.
[2]张波,刘洪文,刘金宁.面向信号的ATS仪器驱动器研究[J].测控技术,2011,30(02):1-3.
[3]曲宾,李晓白,路辉.ATML描述仪器通道资源方法研究[J].计算机与现代化,2008,9:14-17.
[4]张文,杨京礼.一种面向信号的自动测试系统资源分配方法设计[J].现代电子技术,2013,36(19):116-119.
[5]刘昕.面向信号的测试资源映射技术研究[D].哈尔滨工业大学,2011.