1引言
航空电子设备的测试要求利用有限的资源,构建功能多样化的自动测试系统。机载电子设备的信号多且复杂,涵盖了低频和高频信号、连续和离散信号,同时还包括一些非电信号。传统的测试系统采用分立仪器搭建,这种方法成本高,测量自动化程度低,扩展性差,因此要寻求一种实现高集成化应用广泛的解决方案。本测试系统的设计可以兼容两种航空电子机载设备的测试,两个机载组件是实现飞机瞄准显示、夜视稳定性和操纵性的关键环节。被测设备组件收发的信号包括数字发控信号,固定频率模拟信号,电机驱动脉冲信号,RS 232/RS 422串口信号等。组件的功能就是响应计算机的命令从而发出其他类型信号来操作相关的机载硬件设备。原有的测试环境是依照操作人员手动搭建的测试平台,包括示波器、开关量开关、万用表等,只能对设备一小部分功能进行检验,效率和准确性都有待提高。针对原有系统自动化程度低的缺点,本研究从软件和硬件两方面讨论了一种基于航空电子机载电子设备自动测试及调试系统的设计实现方法。
2测试系统的硬件设计描述
2.1 测试系统的功能和硬件组成
该自动测试系统覆盖了原有手动测试平台的所有功能,为方便和完善测试还增加了新的特性,具体包括以下几方面:
1)测试系统的自检测功能,包括软件、硬件完整性自检;
(2)测试的可选择性,包括自动测试和手动调试测试,自动测试独立模拟被测试电子设备工作状况,按照设备正常工作流程进行一遍或多遍测试;手动调试测试时可以根据测试项目单步骤重复测试,方便错误定位;
(3)检测到产品故障时暂停检测并报故障,人工干预后可选择结束检测或继续检测其他项目,同时有例行测试功能可以保证被测设备在某一状态下进行长时间的状态监测;
(4)每次自动测试结果保存为一个单独文件,并提供打印输出功能;
(5)详尽的在线实时帮助辅助操作人员完成测试;
(6)测试系统可以同时测试4块机载电子设备组件,有效地提高测试效率。
整个测试系统(包括被测机载设备)由3个部分组成,如图1所示。
2.2测试系统主机和内部数据采集卡
测试系统主机是整个系统重要的硬件平台。这里选用了ACME-EMP350便携式工控机作为测试系统主机。该型号性能稳定可靠,符合国军标,且主板有足够的扩展槽以备功能扩展。屏幕15.1寸,采用奔4主板,其他性能参数均超过主流工控机标准,完全能达到测试系统要求的稳定性和易操作性。
在分析被测设备信号形式和数量之后,并考虑同时测试4个设备,选择数据采集卡的类型如下:开关量输入输出卡2块,A/D,D/A卡各1块。为了简化系统设计和提高可靠性,数据采集卡选用NI公司和研华公司的成熟产品。
2.3转接机箱和信号调理控制卡
测试主机与被测设备之间由转接机箱相连,主要起到信号调理和控制的作用。转接机箱内部包括调理控制卡、开关电源、采集卡的适配器等,它们都通过D型连接器及电缆与主机采集卡互连。调理控制卡所需的+5 V和+28 V电源由转接机箱中的开关电源提供,其也为被测设备的正常工作供电。
信号调理控制卡负责系统的自检和测试状态的切换。测试系统采用软件控制的方式对信号调理控制卡进行信号调控,这样能够在不同状况下达到测试的目的。由于数据采集卡的输出信号特性和被测航电设备的要求不完全相同,需要加入信号调理控制卡使采集卡输出信号特性与被测航电设备匹配,比如模拟信号的幅度,数字量信号的电平值等。信号调理控制卡主要采用运放放大模拟信号以及继电器实现信号切换,功能实现简单,不再赘述。
3系统的软件设计描述
3.1软件设计思想
在测试软件的开发中,对应的开发平台有专门为虚拟仪器设计的软件LabView和Labwindows/CVI,VEE等,也有通用的软件开发工具VC++,VB等。专用的虚拟仪器软件开发平台优点在于开发周期短,缺点在于图形化的编程语言给开发者的自主性比较小,底层支持不够。而VC++开发比较通用,对底层的支持比较好,技术较为成熟,对于上层各种模块的实现方案也较多,因此采用VC++编程。
测试系统上层软件要求有简单易用的图形化测试界面,还要具备自动测试、手动调试测试、例行测试,以及测试结果打印、错误报告提示、系统自检测等功能。对应于不同的功能好建立不同的功能模块,这样有助于测试通用性和移植性,对于将来扩展应用也非常有利。另外,将具体测试对象及代码功能进行封装,也有利于测试系统的维护。当然,应用程序必须对错误操作有良好的错误提示处理,这样能够有效地增加软件的容错性和可靠性。
3.2软件整体构架
测试软件设计采用分层结构,下层为上层提供服务,上层通过函数的形式接口使用下层来完成本身的功能,每一层的变更不影响其他层的正常工作。针对测试的要求以及设计理念,测试系统软件分成以下几个部分:硬件层,物理接口层,硬件驱动层,软件支持层,用户应用层。同时,每一层次当中有其对应的模块化处理,从而保证软件系统的健壮性和易用性。整个软件设计的层次关系如图2所示。
各层实现功能如下:
硬件层 安装有实现具体测试功能的适配卡、数据采集卡和串口,这些硬件设备是测试实现的核心,其通过J18C型电连接器,D型接口等与被测设备相连
物理接口层 主要是指主机内采集卡提供的资源接口,另一方面它们主要通过ISA或PCI总线访问测试主机的板卡。同时物理接口层还包含相关接口卡I/O操作的“软性驱动”。
硬件驱动层 提供上层软件访问板卡硬件的方法,是软硬件通讯的桥梁。测试系统中,所有驱动都采用WDM编程技术。
软件支持层 它是系统设计和实现的核心,涉及到对硬件访问功能封装的API函数,对测试系统界面支持的导出类,对数据处理的算法、对硬件功能的封装(初始化,中断句柄传递,重置等),对动态连接库的设计布置等。各个功能模块负责各功能的实现并终交给主线程综合控制模块来处理,其模块化设计为软件增添了灵活性和可靠性等诸多的优势。
用户应用层 为用户提供简捷易用的可视化图形界面操作流程,并减少了误操作的可能。应用层当中值得注意的几点分别是:自动测试报表的生成、保存和打印需要用到CView类提供相关的成员虚函数来实现,文字与表格线条输出采用CDC类实现,测试数据的保存需要用到CDocument类提供的服务对存储串行化成员函数Serialize(CArchive&ar)的重载来实现,而帮助文档视图则是通过HtmlView基类来实现的。整个软件视图设计采用多视图构架,特点是清晰且易操作。
3.3软件设计流程
这里介绍了测试系统手动调试测试的一般流程。测试的一般步骤包括软件初始化,测试系统自身软硬件自检,被测设备状态切换的测试,观测返回数字信号和模拟信号波形,模拟电机驱动信号控制电机旋转,后保存结果。其简要的软件流程如图3所示。而对于自动测试来讲,实质上就是按照一定的工作流程和被测设备的工作状态切换来进行自主自动化的测试,总体的过程与手动调试测试相似,并生成测试报表进行记录保存。
3.4软件设计相关关键技术
3.4.1 面向对象与文档视图技术
文档和视图分离是MFC编程推荐的一种程序结构。在这种结构下,视图类处理跟界面有关的内容,而文档类处理跟存储有关的内容,两者通过GetDocument函数相关联。这样处理给编程带来了很多好处,首先这种方法强调了模块化的思想,两个类中分别处理不同的任务,而需要数据交换时再相关,因此提高了程序的模块化;其次两个类中都有很多各自的支持类和函数,特别是视图类,这样就不互相影响,方便地实现每个类的功能。
3.4.2 多线程相关技术
测试软件实现中采用多线程处理技术来调度多达4个组件共同测试的流程,同时数据采集与波形显示的同步也采用了多线程间的同步来进行协调。当然这些线程具体调度由操作系统完成,但从用户角度来看是同时并行运行的。Windows环境中系统通过时间片轮流的方式实现多线程,CPU为每个线程分配一个时间片,每个线程从被激活起,运行到时间片被耗尽为止,此时另一个线程运行。软件设计时只需要将用户界面消息循环和数据采集、处理分配在不同线程上,就可以避免计算机长时间不响应操作的问题。在软件具体设计过程中,使用了测试线程和界面线程。界面线程为主控线程,控制测试线程的开启、挂起和结束,提供消息循环并负责界面的生成和程序与用户的交互。测试线程为工作者线程,实现具体的测试功能,包括数据采集、数据处理和数据入库等。另外,系统自检测和自动测试模块也单独各占有一个线程从而大大提高了测试系统的运行效率。
3.4.3 模拟信号状态切换
在对控制性能要求较高的实时控制系统和数据采集系统中,就更需要精确定时操作。此系统在自动测试当中,需要对被测设备的各个工作状态进行模拟,其工作状态的变换是依靠四路开关量和两路串口命令的改变而切换的。而状态的切换需要在800 ms内完成四个不同的状态变换,这就需要在状态变换线程中采取精确的定时来完成。在Windows中已经封装了计算机底层硬件的访问,因此在实际应用时,应针对具体定时精度的要求,采取相适应的定时方法。在精度要求较高的情况下,VC中可以利用GetTickCount()函数。该函数的返回值是DWORD型,表示以ms为单位的计算机启动后经历的时间间隔。在较短的定时中其计时误差为15 ms,经过调研该精度完全满足该设备百微秒级的要求。
3.4.4 容错处理
本测试系统采取了很多容错的处理手段。这里的容错不仅包括对用户非法操作的承受能力,还包括编写正确的、优化的测试代码。具体包括:C++语言本身容错的处理,VC++环境下容错的处理,强调Release版本的生成,模块设计的容错处理,用户界面的容错处理,测试软件自检测等。
4测试结果
如图4所示可以看到测试系统手动调试测试的主界面。测试人员通过点击测试的各个按钮对被测组件进行操作,从而判断返回信号波形及参数,模拟电机的旋转和返回灯的显示来判定测试结果。关于自动测试、例行测试、自检和报表的保存生成界面这里就不再罗列了。
5结 语
本系统设计完成后,经过系统联调,功能上可以完全代替原有手动测试系统,整套系统工作稳定可靠,操作简单方便,容易维护。无论是自动测试、手动调试测试还是例行测试都极大地提高了效率和可靠性。整个测试系统的实物图如图5所示。