王 颢 缪 俊 曹宁生
(中国舰船研究院 北京 100192)
舰船自动化智能模块主要包括电气、机械及其他有关器件组成的具有特定的数据采集、监测控制、网络通信、操作指示等功能的智能化信息处理基本单元,能满足各类舰船自动化要求的智能硬件模块或设备[1]。模块设计从顶层着手,通过分析共性功能需求、剥离个体差异,归纳提炼形成系列型谱,制定了各类模块的设计要求,由多家配套生产,最终按照统一标准进行测试。如何对这些模块的功能、性能、接口等各方面内容进行快速、准确、客观的测试成为评价产品质量保证互换要求的重要前提。
舰船自动化智能模块分为现场总线类I/O模块、CPCI类I/O模块、现场控制类模块、网络通信类模块、显示操作类模块、综合显示类模块等6大类25种模块,支持 Windows XPE、VxWorks5.5、VxWorks6.6及 VxWorks6.8操作系统。测试主要包括接口定义测试、硬件功能性能测试、软件功能性能测试、协同工作测试、互换性测试及工作稳定性测试等六个主要测试项,具体内容如下:
1)接口定义测试。测试模块硬件接口形式、芯线定义、软件接口定义及实现的正确性;
2)硬件功能性能测试。测试模块基本输入输出功能、数据通信功能、驱动能力及性能指标等内容的符合性;
3)软件功能性能测试。测试模块驱动功能、故障诊断功能、USB通信协议、CAN通信协议、网关协议等内容的符合性和完整性;
4)协同工作测试。测试模块在并发调用、多模块协同等复杂工作情况下的正确性;
5)互换性测试。测试不同厂家生产的同类模块在规定软硬件环境下功能、性能及工作状态的一致性;
6)工作稳定性测试。测试模块在高负荷、长时间运行情况下的工作稳定性。
搭建测试系统目的是将测试方法、流程及合格判据等要素进行固化,确保测试准确、客观、高效[2]。由于被测模块种类多,功能复杂,指标要求较高,同时考虑后续型谱扩充、模块和测试要求升级等因素,测试系统需适应被测模块的多样性、复杂性、变化性。
为了实现较好扩展性和自动化水平,系统设计以硬件为基础、软件为核心,遵循“自顶向下”层次化的设计思路[3],采用模块化的方式构建测试系统,系统划分为四个层次,各层内部以功能模块形式封装,各功能模块相互独立,模块间采用松耦合的关系,系统体系结构如图1所示。
如图1所示,各层完成主要功能说明如下:
图1 测试系统体系结构图
1)测试应用层。实现测试系统顶层功能,包括测试方案制定、工程管理、测试脚本生成、测试调度、测试结果评估、测试结果输出及人机交互等功能;
2)测试实现层。根据测试方案及流程对测试项进行功能分解,实现测试项中规定的测试内容,若测试项增加或变化时可灵活进行扩充改变;
3)测试原子层。根据测试实现层中的内容将测试细化分解为原子级测试模块,每个模块完成单一功能,模块间功能相对独立,具有通用性;
4)测试适配层。完成被测模块与测试系统,测试系统内部各软硬件模块的适配。可屏蔽由于被测模块种类增加、接口改变、测试系统自身变化对系统功能带来的影响。
被测模块接口包括:开关量OC、开关量继电器、脉冲量、电压、电流、热电阻、热电偶等I/O接口以及双冗余CAN、双冗余以太网、RS232/422/485串口、USB等数据接口,测试系统应能够支持多种接口的测试。为便于使用维护,针对各被测接口原则上测试系统均有独立硬件模块与其适配,个别接口可通过多个模块配合使用完成测试。测试系统硬件由仿真测试计算机、半实物仿真测试设备及仪器仪表等三个部分组成。
仿真测试计算机主要完成被测模块基本功能和关键技术指标的遍历性测试,由于被测模块的信号种类较多,通道数量也较多,因此为了实现I/O接口和通信接口的自动化协同测试,使用两台仿真测试计算机,其中一台主要针对模拟量信号测试,另一台主要针对数字量信号测试。
半实物仿真测试设备主要完成被测模块特定技术指标的覆盖性测试,采用开关量信号输出和内部电路构成信号监测系统,对于部分模块可采用实物进行连接测试,同时对被测输入模块提供少量定点信号激励。
仪器仪表主要功能包括检测被测模块的信号特性、部分被测模块供电、功耗评估、外形重量测试等。
软件系统是整个测试系统的核心部分,它将系统中各功能模块有机结合,在多个模块相互协作和数据传递的过程中起着决定性的作用。系统软件采用构件技术、面向对象技术和模块化的设计思想[4]使用C++语言完成软件开发。
1)测试流程可定制
为实现测试流程可定制,系统采用配置文件+脚本文件的方式实现测试用软硬件资源和测试流程的配置管理,测试时以文件方式驱动各层功能模块运行,完成测试功能。测试流程如图2所示。
图2 测试流程图
如图2所示,用户按测试要求制定完测试方案后,系统首先生成配置文件,规划出参加本次测试的软硬件资源,并按功能不同进行分类,同时生成脚本文件,其中明确了各测试项名称、合格判据、测试项中使用的软硬件资源、各类资源的使用时间、使用条件及约束关系等,最终以用户指定方式输出测试结论。
2)测试模块通用化
由于测试流程可定制,要求测试功能模块要具有通用性,不与测试流程相关。测试系统根据信号工作性质不同将测试功能模块划分为输入信号测试功能模块、输出信号测试功能模块和总线信号测试功能模块[5],相同类型采用相同的处理方法,简化对信号的处理。
3)并发/协同测试
并发/协同测试模拟实际时的多种操作并发及多模块协同工作等状态,运用“多线程”将各种操作、调用及后期处理等任务各自分配单独线程,还避免了单线程程序容易出现的响应不及时或者程序假死情况[6]。
4)多系统支持
测试软件应能够运行在多种操作系统上,完成相同的测试功能和项目。考虑到VxWorks操作系统图形方面支持较弱[7],相关图形开发工具较为匮乏,且测试系统对人机交互实时性要求不高,故本系统中测试应用层和测试实现层运行在Windows XPE系统上。原子测试层和测试适配层运行在多操作系统上。
本测试系统已成功应用于舰船自动化智能模块的鉴定测试中。按照测试要求,完成了对所有模块的接口定义测试、硬件功能性能测试、软件功能性能测试、协同测试、互换性测试及工作稳定性测试等测试内容;实现了测试流程制定、多系统支持、测试结果自动评价输出等功能;具有较高的自动化程度和较好的扩展能力,为评价模块质量、确保技术状态、最终实现互换提供了技术手段。单模块测试结果如图3所示,多模块协同测试结果如图4所示。
图3 单模块测试结果
图4 协同测试结果
舰船自动化智能模块测试系统从顶层设计上充分考虑被测模块的多样性、变化性、复杂性等特点,以及使用中对自动化、通用性、扩展能力等方面的要求。采用模块化、层次化的设计原则开展软硬件一体化设计,最终构成系统。实际使用中大大提高了测试的准确性、客观性、测试效率和可视化程度,在工程中得到良好应用。
[1]顾亚军,曹宁生.舰艇平台基础软硬件标准化总体技术[J].舰船科学技术,2011,33(6):42-45.
[2]鞠秀娟,赵明.软件自动化测试概述及应用工具分析[J].计算机应用,2007,27(Z1):317-318.
[3]史国庆,高晓光,吴勇,等.机载面板I/O系列电路模块测试系统硬件设计[J].计算机测量与控制,2011,19(1):41-43.
[4]Stephen R.S.面向对象软件工程[M].北京:机械工业出版社,2009.
[5]张原,李刚,孙浩.基于某型控制盒单板测试软件的通用化设计[J].计算机测量与控制,2012,20(1):270-272.
[6]范振军.多路三轴光纤陀螺自动化测试系统设计与实现[J].电子科技,2012,25(2):82-85.
[7]赵甫,李跃,李芳.VxWorks上的一种GUI系统的设计与实现[J].计算机工程与设计,2006,27(15):2839-2842.
[8]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[9]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航空航天大学出版社,2007.