基于LabWindows/CVI的ATS软件框架
2008-11-12
作者:钟建林, 何 友, 任献彬
摘 要: 基于LabWindows/CVI" title="LabWindows/CVI">LabWindows/CVI的自动测试" title="自动测试">自动测试系统软件框架使用配置文件实现软、硬件模块之间信息交换和资源的动态配置。在同一个软件主框架下实现了多个UUT测试程序" title="测试程序">测试程序的开发和调试。提供良好的调试维护界面,实现测试软件" title="测试软件">测试软件的模块化、TPS的可移植,大大提高了开发和调试的效率。TPS通过调用格式化类驱动间接调用物理仪器驱动,实现了仪器的可互换。
关键词: LabWindows/CVI; 配置文件; 测试程序; 框架
某军用飞机电子设备自动测试系统(ATS)涉及的被测对象(UUT)有60多个,按专业可分为雷达、显控、飞控、电子对抗等。在设计、调试自动测试程序中,一方面要提高开发效率,按专业划分测试软件的开发任务,各小组、开发工程师能同时独立开展工作。其次要实现测试软件的模块化、可移植性:各小组、工程师开发出来的测试程序具有统一的格式和标准,便于调试和交流;当被测对象变动时,相应的测试程序集(TPS)可以容易地改动。最后要实现仪器可互换,即仪器更换时TPS不需要改动。NI公司的LabWindows/CVI以ANSI C为核心,它的集成化的开发平台、交互式编程方法、丰富的面板功能以及访问INI文件、多线程、创建库文件、DDE动态数据交换等高级编程手段使其自身功能强大,应用方便,成为工程技术开发人员建立ATS首选的软件开发工具。根据ATS的逻辑结构,本文设计开发出一个基于LabWindows/CVI的ATS软件框架,用于测试程序开发和调试。主框架使用配置文件实现软、硬件模块之间交换信息和资源的动态配置,把装备工程师、软件工程师和硬件设计人员各自的工作区分开来,实现了面向“测试任务”的虚拟仪器设计,使开发人员的精力集中到测试功能的实现上,提高了软件开发的灵活性和效率,大大降低了软件开发的难度,缩短了开发周期,节约了成本。
1 软件框架结构及其组成
ATS的逻辑结构从资源构成、硬件设计、系统计量、UUT测试项目定义等方面描述了ATS 属性,是系统内核对ATS硬件实施控制的主要依据。ATS软件框架是其逻辑结构的一个具体实现,其结构如图1所示。
1.1 测试资源需求描述文件
该文件以INI文件的格式定义了当前UUT测试需要的测试资源。一个UUT测试程序对应一个“测试资源需求描述文件”。文件格式如图2所示。
直接更改该文件的设置(将1改为0)可以使系统转变到降级使用状态。另外,当测试程序主框架在按照测试需求描述文件的定义初始化仪器时,如果发现某仪器初始化失败,则测试程序也将转为降级使用状态。转为降级使用状态时,初始化失败的仪器将由相应的仿真仪器替代,系统将在测试项目列表(显示测试结果)时标注出来。未使用该仪器的测试不会受其影响。
1.2 测试项目定义文件
该文件以INI文件的格式定义了当前UUT的测试项目信息。一个TPS对应一个“测试项目定义文件”。 对于每一个测试项目,其信息包括:测试项目代号、(子)测试项目名称、测试项目级别、对应测试函数名、函数调用参数、是否加电测试、履历本项目、200小时项目、400小时项目、装机前项目、3个相关测试项目。如图3所示。
测试程序主框架对该文件的调用情况:
(1)测试项目级别分为ITEM_FAMALY、ITEM_FATHER、ITEM_SON、ITEM_GRANDSON四级,有子项目的测试项目可以定义项目测试前函数和项目测试后函数(这两个函数完成测试项目开始进入子项目之前需要做好的工作,如提示连接/断开电缆等),在设计测试程序时,项目测试前函数名的前四个字母必须是'BEF_',项目测试后函数名的前四个字母必须是'BEH_',其他部分可以自行定义(但两函数的后半部分必须完全相同)。项目测试前函数和项目测试后函数在本文件中定义时只定义相同的后半部分即可,前半部分统一用'XXX_'来代替。测试程序主框架在调用项目前(后)函数时,将自动把'XXX_'分别用'BEF_'和'BEH_'来代替,形成完整的项目前(后)函数名。
(2)一个测试项目对应一个测试函数名:有子项目的测试项目不能有测试函数名,同一测试项目最底层的各个子项目的测试函数同名,测试程序以函数调用参数区别各子项目。
(3)测试程序主框架执行测试时,将首先根据该文件测试项目“是否加电测试”状态值执行不加电测试,待全部不加电测试项目执行完毕,再依次执行加电测试项目。
(4)对于没有200小时定检、400小时定检等项目的系统,对应项应全部为0。测试程序主框架将根据头文件的定义确定在主框架面板上是否显示对应的项目选择按钮。
(5)一个测试项目最多可以与三个项目相关联(即该项目的测试必须在与之相关联的项目测试完成之后才能正确执行),当用户在主框架面板上选中一个测试项目时,测试程序主框架将自动选中与之关联的项目。
1.3 测试数据模板文件
测试数据模板文件是一个包含Info、ItemDef、激励修正三个表的数据库,Info提供UUT名、型号、测试程序设计人等程序管理方面的信息,激励修正表提供对测试结果修正数据的解释,ItemDef表的格式如图4所示。
测试程序主框架根据该表数据与相应测试项目的测试数据进行比较,判断测试是否通过,并通过测试项目列表格式化显示测试结果。
数据库的建立及其处理程序的设计,简化了TPS 编程,提高了TPS 的可维护性。当测试项目参数需要修改时,可以通过修改测试项目模板的方法实现,提高了TPS 的可维护性及互操作性。
1.4自动测试项目流程代码文件
自动测试项目流程代码文件包含所有自动测试流程的实现代码。该文件中的函数主要包括以下几类:
(1)通用函数
包括DllMain、DllEntryPoint、UUTTest_AttachToFrame三个,这类函数的函数名和实现代码都不需进行任何更改。
(2)UUT测试资源配置函数
该函数实现了对UUT测试的资源配置操作,文件名不应更改,但在设计TPS时应根据UUT的测试需求设计函数实现代码。该函数由测试程序主框架在仪器资源初始化完成后调用。
(3)UUT加(断)电函数
该函数实现了UUT的加(断)电操作,文件名不应更改,函数实现代码应根据实际需要添加。该函数由测试程序主框架在UUT需要加(断)电时调用。
(4)测试前(后)函数
该函数包括自动测试过程" title="测试过程">测试过程前(后)函数和项目测试前(后)函数。函数实现代码可根据实际需要添加,但不允许在该函数中添加与格式化类或硬件控制有关的任何代码。利用该函数可以实现一些测试过程的特殊要求,如:UUT测试或项目测试准备和撤收注意事项的提示。测试前(后)函数由测试程序主框架在启动自动测试流程前(测试流程结束后)调用。
(5)自动测试项目流程函数
该函数是测试项目对应的测试流程函数,是特定的UUT测试逻辑的具体实现。函数返回值根据仪器响应情况包括:被测对象中止测试(LRUTEST_TERMINATE)、大项目中止测试(ITEMTEST_TERMINATE)、小项目中止测试(SUBITEMTEST_TERMINATE)、测试项目正常结束(ITEMTEST_FINISH)等。
1.5 测试主框架内核
测试主框架内核包括测试引擎、测试数据管理等与软件平台有关的函数。
测试引擎主要完成TPS 的仪器无关性及系统集成,其主要功能包括:系统资源控制模型管理;仪器运行状态的实时监测;仪器运行模式(仿真运行、真实运行) 管理;类驱动程序及物理驱动程序DLL模块句柄管理;逻辑仪器到物理仪器映射及对物理驱动程序导出函数的动态调用(显式链接);类驱动程序函数到物理仪器驱动程序函数映射;仪器句柄管理;类驱动程序及物理驱动程序注册。
测试数据管理实现的功能:测试项目模板处理;测试结果缓存、保存、显示、打印;测试结果文件管理、显示及打印表格的自动生成;信号校正模型处理及被测信号、激励信号校正。
1.6 其他文件
仪器资源定义头文件定义了系统硬件平台中各测试资源的逻辑句柄、资源顺序宏定义以及测试函数的返回值类型、系统有无“履历本项目”、“200小时定检项目”、“400小时定检项目”、“装机前检查项目”、对当前系统测试资源格式化类头文件的包含等。该文件名与系统同名,存储在测试程序主框架目录下。
UUT测试自定义头文件包含了UUT测试过程中用到的自定义变量或函数,存储在TPS当前目录下。
用户界面文件中包含测试执行中用到的一些通用面板,用户可根据需要在该文件中添加定制的面板。
2 仪器可互换性的实现
TPS对仪器资源的操作是通过指定“逻辑名”来进行的,“逻辑名”、虚拟仪器与物理仪器的对应关系以及虚拟仪器的所属类、类驱动程序、物理仪器总线接口类型及属性、物理仪器驱动程序函数前缀及DLL文件名等都是由INI配置文件定义的。INI配置文件完成了从逻辑仪器到物理仪器的映射等功能。配置文件的管理通过配置管理工具进行,可以用图形直观显示逻辑名到物理仪器或仿真仪器的映射关系,且可以很方便地进行修改。测试引擎提供配置文件的访问接口,提供公用常量、数据类型、函数的定义,提供错误代码定义以及错误处理函数。
通过格式化类驱动程序提供的标准函数,测试软件开发者可以写出独立于仪器硬件的测试代码,允许测试系统在各生产商之间、甚至各种类型总线协议之间(GPIB、VXI、PXI)更换仪器。TPS在其基础上实现了测试程序的仪器无关性,提高了软件及整个系统的可维护性。
3 测试程序函数的调用次序
3.1 仪器初始化过程
仪器初始化过程及初始化完成后各函数的调用次序如图5所示。
3.2 自动测试项目各函数的调用次序
自动测试项目各函数的调用次序如图6所示。
本文所述基于LabWindows/CVI的测试软件框架实现的主要功能有:
(1)测试资源的初始化和关闭等仪器管理;
(2)测试数据模板文件的打开及关闭;
(3)自动测试项目的显示,以及对测试项目对应测试流程的调用;
(4)测试数据保存、查询、打印;
(5)测试项目与测试过程信息的映射、索引操作;
(6)自动测试过程信息的格式化显示以及不可执行项目在项目列表中的标注;
(7)测试程序的降级使用功能;
(8)关联测试项目的管理。
该测试程序主框架主要是为了完成各测试程序的开发、仿真与对接调试,是为一个在仪器可互换组件基础上运行的独立的可执行程序(.exe文件),测试程序为符合一定格式的动态链接库(.dll文件)。测试程序主框架与UUT测试程序实现了彻底分离,主框架功能的更改和版本升级不影响测试程序的代码。当增加新的UUT时,在测试程序主框架下可以容易地添加新的UUT测试程序;当某些UUT需要添加测试项目时,通过更改测试相关文件和添加少量代码,可以容易地实现新的测试程序;提供相同测试功能的测试资源的更换不会影响程序的运行,实现了TPS 与硬件平台的无关性。该软件已成功应用于两种型号军用自动测试系统的测试软件开发和对接调试。实践证明,该软件能够明显降低测试软件开发难度,大大提高程序开发和调试的效率。
参考文献
[1] 刘金宁,孟晨,崔少辉,等. 基于配置文件的虚拟仪器测试软件设计与实现[J].电力自动化设备,2005,25(1):
50-53.
[2] 任献彬,牛双诚,许爱强.通用ATS软件设计平台研究[J].宇航计测技术,2002,22(5):59-63.
[3] 于功敬,张韬. VXI通用测试软件框架结构的研究[J].计算机自动测量与控制,1999,7(3):5-6.