36(11) Ordnance Industry Automation
doi: 10.7690/bgzdh.2017.11.012
·43·
航天地面测试系统软件国产化设计
李朝凤,姚静波,辛朝军,解维奇
(中国人民解放军装备学院航天装备系,北京 101416)
摘要:为解决航天地面测试系统中国外产品带来的安全隐患,设计一套基于国产麒麟操作系统的航天地面测试系统。在对该系统工作原理分析的基础上,利用QT开发工具设计麒麟系统下的测试系统软件,针对测试数据快速存储及采集卡驱动设计等关键技术,提出数据库+二进制文件的数据存储和驱动程序开发方法,并进行系统功能测试。测试结果表明:该系统性能可靠,实时性满足航天地面测试需求。
关键词:航天测试;国产化;测试系统;关键技术 中图分类号:TJ86 文献标志码:A
Localization Design of Software for Aerospace Ground Test System
Li Chaofeng, Yao Jingbo, Xin Chaojun, Xie Weiqi
(Department of Spaceflight Equipment, Equipment Academy of PLA, Beijing 101416, China)
Abstract: For the security risk caused by foreign products in aerospace ground test system, an aerospace ground test system was designed based on Kylin operating systems. Based on the analysis of the work principle of the system, a relevant application testing software by using QT on Kylin operating systems was designed. Methods of “database + binary file” database storage and driver design for the key technologies of fast data storage and data acquisition card driver design were put forward. Results of the test show that the localized test system is excellent in reliability and real - time performance to meet the requirement of aerospace ground tests.
Keywords: aerospace test; localization; test system; key technology
0 引言
我国航天地面测试系统中使用的各类软硬件设备、核心元器件和高端通用芯片长期依靠进口,但西方发达国家经常采取禁运、限购等方式遏制该类产品在我国航天领域的应用;同时,国外相关产品还存在代码不开放、植入后门等不可控风险[1]。为从根本上解决国外产品带来的安全威胁,提高自主可控能力,必须对航天地面测试系统进行国产化设计。我国近年来在核高基方面的可喜进步,也使得发展自主可控航天地面测试设备成为可能。
目前,我国的航天地面测试系统主要基于Windows系统研制开发,如某型火箭数字笔录仪、某型上面级测试发控系统、数字化箭地信息检测分析系统等,均基于微软的Windows系统。国产高性能处理器能够支持的操作系统主要是麒麟系统。该系统在航天领域已经得到一定应用,但在地面测试领域的研究工作尚未深入展开。笔者结合我国自主可控需求,设计开发了一套基于国产麒麟操作系统的全自主航天地面测试系统,利用QT开发工具进行软件设计,采用数据库+二进制文件的方法对测试数据进行管理,根据麒麟系统下的运行要求对采
集设备的驱动程序进行了重新设计,并对系统的可靠性进行了测试,使国产化的地面测试系统具备可靠性高、实时性强、数据存储速度快和便于数据查询等特点。与Windows系统下的航天地面测试系统性能相比,除在数据传输过程中延时较大外,其余性能均与其水平相当,整体技术性能满足航天发射地面测试需求。
1 地面测试系统工作原理
运载火箭地面测试系统主要完成火箭发射前的地面测试工作。现代航天器地面测试系统均采用分布式结构,并完全实现了标准化[2]。目前我国航天发射场已经全面实现了远距离测试发射控制[3],这种模式下的国产化航天地面测试系统,可设计为嵌入式远置端、前端和后端,如图1所示。嵌入式远置端置于箭上,进行箭上关键信号的隔离调理、采集、存储与传输。前端置于塔架下,进行箭上信号的采集、处理、存储与传输。后端位于远距离的测试控制大厅,主要用于对测试系统的总体控制,并对前端和远置端发送的测试结果进行实时显示与准确性判断。系统的远置端、前端通过发射场总体网与后端连接。
1 收稿日期:2017-07-22;修回日期:2017-09-01 基金在此:部委级资助项目(2015SY41A0020)
作者简介:李朝凤(1991—),男,河北人,在读硕士,从事航天测试研究。
·44·
兵工自动化
第36卷
图1 系统框图
前端被测信号包括模拟信号、脉冲信号、时序信号以及不带电触点信号4类;嵌入式远置端被测信号包括模拟信号和脉冲信号2类。箭上被测信号经前端采集机或嵌入式远置端机箱内的隔离调理模块调理,模拟信号由国产CPCI总线或USB总线采集卡采集,数字信号由国产数字I/O卡采集。一方面,采集信息将以原始状态存储至前端、远置端的存储设备中;另一方面,测试数据在前端或远置端存储的同时,通过网络传输至后端控制机实时显示、控制与在线判读。前后端均以基于麒麟操作系统的QT开发环境为平台设计地面测试系统软件,对数据进行采集、显示与处理。
2 系统软件设计
国产高性能处理器支持的麒麟操作系统下的开发工具有开源的GCC、QT、Eclipse等。QT具有丰富的API以及很好的跨平台特性,并且具有自主可控的国产化版本。地面测试系统软件的国产化设计以QT开发环境为平台,采用自顶向下与模块化相结合的方法设计,设计时遵循以下原则:
1) 由于需要显示的信号通道多,数据量大,单屏难以完全显示,需具有多屏多视图显示功能;
2) 测试数据在给定目录下以文件形式保存; 3) 对故障进行实时监测,发生故障及时报警; 4) 事后可对原始数据进行回放显示; 5) 具有远程控制与实时数据传输功能。
2.1 功能分析
为缩短系统开发周期、降低开发成本、提高系统扩展性,测试系统软件采用自顶向下与模块化设计相结合的方法实现[4]。国产化的航天地面测试系统软件分为数据采集显示和数据存储2部分。采集显示部分主要完成信号采集、图形实时显示与存储、事后回放和数据判读等功能,实现采集过程中的远程无人值守自动监测与人工控制相结合,主要包括文件操作、参数设置、采集显示和数据处理4个功能模块。数据存储部分采用笔者提出的数据库+二进制文件相结合的方法,对测试数据进行存储与管理。系统软件功能结构如图2所示。
图2 软件功能结构
2.2 信息流规划
根据软件功能结构对系统软件信息流进行规划,信息流如图3所示。
图3 信息流
系统软件内部信息流包括数据流和操作指令等,以采集后的原始数据为起始点,信息流主要包括5个流向:
1) 数据转换流向。原始数据经数据转换后,按照用户的参数设置等指令,对通道、视图、数据名称以及曲线颜色等进行设置,并在用户界面中实时显示。
2) 数据处理流向。数据处理主要包括系统校准、判据编辑、实时判读和历次对比,对原始数据以及事后存储的数据进行判读分析,判读结果输入
第11期李朝凤等:航天地面测试系统软件国产化设计
·45·
数据库保存。
3) 数据存盘流向。对原始数据存盘,而不选择对转换后的数据进行存盘,可以达到最大的还原度,便于对测试数据进行事后回放与处理。
4) 文件操作。文件操作是将存盘后的数据文件还原为原始数据,并送到数据转换与数据处理流向,按照用户要求进行数据的回放显示与回放判读,同时接受参数设置的操作指令,对文件的存储路径等进行设置。
5) 参数设置。参数设置包括采集设置、显示设置、存储设置与远程传输设置。采集设置主要对采集时基、通道、采集的开始与停止等进行设置。显示设置是按照用户要求对通道、视图、数据名称以及曲线颜色等进行设置。存储设置是对数据的存储路径等进行设置。远程传输设置对前端以及嵌入式远置端的测试数据传输进行设置。
图3中虚线表示事后数据重组时,选择从文件读入还是从数据库读入。 2.3 系统软件设计
系统软件采用多线程处理方式实现,数据的显示操作与采样分别运行于2个不同线程。其中,数据的显示控件用3维数组管理,以便于多视图的自由切换。 2.3.1 数据显示
单视图利用QwtPlot类实例化Plot组件进行数据曲线的显示,相比QPainter类可以大大减少工作量。通过构建plotzu[屏幕][行数][列数]数组管理Plot组件,并利用setCurrentIndex()函数设置当前显示屏幕,改变行数和列数设置单屏的视图个数,可以实现多屏多视图的任意设置。在事件过滤器中注册鼠标双击功能,当检测到非单视图状态并且双击时,进行单视图的全屏显示,单视图状态双击时,恢复到多视图状态。 2.3.2 流程处理
软件在采集大量数据的同时,还要进行数据处理、图形显示以及设置等操作,为了解决频繁的任务调度对数据采集连续性的影响,保证数据采集的实时性以及快速显示能力,软件设计采用多线程方式,使界面显示操作与采集卡数据采集分别运行于主线程与采集卡线程2个不同线程。采集卡线程与主线程之间的数据通信利用QT特有的信号与槽机制实现。信号与槽机制是QT的重要组成部分,提
供了不同对象间的通信机制,并完全被QT图形设计器所支持[5]。
程序启动后,初始化界面以及采集卡。通过开始采集按钮启动采集卡线程,开始采集数据。数据采集数量满足要求后,发送数据满信号,主线程接收到信号启动数据接收功能,线程间通过信号与槽机制进行数据传输,主线程显示并处理数据。按下停止采集或者退出按钮后,结束数据采集。测试系统软件流程如图4所示。
图4 测试系统软件流程
3 关键技术
与发达国家相比,我国核心元器件及高端通用芯片制造水平较低,虽然采集设备硬件系统设计技术相对成熟,但是可用的国产硬件产品不多。在软件方面,麒麟操作系统、基于麒麟的QT开发环境以及人大金仓数据库等则应用比较广泛,可以完全替代现有的非国产核心软件系统。基于麒麟系统的地面测试系统设计需要攻克数据存储、驱动程序开发以及系统测试等关键技术,实现与Windows平台下测试系统的相当水平。 3.1 数据存储
目前,航天地面测试系统测试数据主要以二进制文件形式进行保存,不利于数据的查询与管理。工业上通用的测试系统多采用数据库存储测试数据。国产数据库有人大金仓、达梦、神通等。人大金仓数据库具有高性能、高可靠、高扩展、高兼容、高安全、易使用和易管理的特点,在功能性能方面可与美国的Oracle9相当,已在政府、军事等领域成功应用[6]。为了解决数据库实时性写入慢的问题,笔者设计了一种数据库+二进制文件的测试数据管
·46·
兵工自动化
第36卷
理方法。
3.1.1 数据库安装
与Windows平台下数据库安装不同,QT与金仓数据库之间互连需要安装开放数据库连接(open database connectivity,ODBC)中间件,用以提供对数据库访问的标准应用程序接口。在安装ODBC时,要配置odbc.ini与odbcinst.ini,编写模板文件,保证ODBC驱动安装正确,最后用环境变量ODBCINI和ODBCSYSINI指定上述2个配置文件的位置。针对安装数据库时出现的找不到某个文件或目录问题,可通过在环境变量文件中添加地址变量,并修改Root.sh解决。 3.1.2 数据库模型
依据系统测试信号类型以及测试结果,数据库表主要包括处理结果表和信号数据表。处理结果表主要包括测试日期、处理日期以及关键信号(主键)。信号数据表主要包括信号类型、测试日期、测试通道(主键)、测试频率以及相应信号测试数据。根据数据表属性以及各数据表之间的关系,笔者设计数据库的ER(entity relationship diagram)图,如图5。
图5 数据库ER图
3.1.3 数据库+二进制文件存储
现有地面测试系统测试数据大多以二进制文件形式进行保存,数据重组后可通过文本形式输出[7]。但是这种方式必须同时对所有通道数据进行操作,不能单独操作某一通道数据,不利于数据查询以及事后的数据管理。数据库则可分别对某一通道、某一时间段、某一频率下的数据进行查询并重组。
金仓数据库通过内存缓存机制进行数据存储,即数据先写入内存空间进行缓存,然后再从内存缓存写到数据库中[8]。这种存储机制导致数据写入速度很慢,写入相同数量的float数据时,文本文件的写入速度是数据库的6 000多倍,同时数据库需要更大存储空间。地面测试中通道数多、数据量大,需要频繁实时存储,采用内存缓存机制容易造成数
据的丢失以及数据处理错误。
二进制压缩文件相对文本文件来说,写入速度更快,存储空间更小,适合数据量大时使用。结合数据库与二进制文件二者的优点,采用二进制文件与金仓数据库结合的方法,即测试数据以二进制压缩的方式进行存储,而测试数据的索引保存在金仓数据库中,即数据存储文件包括二进制数据文件以及索引文件。测试数据的通道号是唯一的,将某次的二进制数据文件以相应通道号命名,建立起二进制数据文件与索引之前一一对应的关系,对数据文件索引。测试结束后需要对某通道的数据进行重组时,QT通过ODBC从金仓数据库中读入,而需要对所有的历史数据重组时,则从二进制文件读入。 3.2 驱动解决方案
系统前端采集机采用了4块CPCI采集卡,用以对各类信号进行采集。由于通用采集设备多依赖Windows操作系统,其驱动程序与应用函数库多基于Windows操作系统定制,为了使数据采集设备能够在基于麒麟操作系统的平台上顺利运行,必须要对采集卡的驱动程序进行匹配或者重新开发。 3.2.1 驱动程序的模块化设计
麒麟系统平台下,驱动程序可以采用模块的方式进行编译。模块化的编写方法使得开发人员可以方便地进行设备驱动程序的开发,并且极大地简化了调试过程[9]。模块化的编程思想一般基于module_init()和module_exit() 2个函数实现,分别作为加载驱动程序模块入口和卸载驱动程序模块入口。整个驱动程序可分为初始化模块、内存读写模块、I/O操作模块、配置空间访问模块以及中断模块。驱动程序初始化时,通过总线查找设备,访问配置空间获得设备中断号和I/O基址,来完成模块的加载,访问配置空间主要通过cpci_read_config_ byte()函数和cpci_write_config_byte()函数来完成。 3.2.2 驱动流程图
麒麟操作系统中,中断服务并不是直接从中断向量表中调用,而是先接受来自硬件的中断,再由系统调用中断服务子程序。数据采集数量满足采集要求后,采集卡会产生一个中断,通知进程启动内存直接读取(direct memory access,DMA)传输,进行读写操作。
麒麟系统内存分为用户空间和内核空间。地面测试系统软件运行在用户空间;驱动程序运行在内
第11期李朝凤等:航天地面测试系统软件国产化设计
·47·
核空间,完成对设备初始化、释放以及中断处理等功能[10]。图6是驱动程序流程。
图6 驱动流程
启动测试系统软件程序后,点击开始采集按钮,即可通过module_init()函数加载设备初始化驱动程序,进行设备的注册,并通过扫描总线查找设备。设备匹配成功后,访问配置空间获得设备中断号和I/O基址,完成设备加载。之后开始进行若干轮次的DMA数据传输,从外设I/O读取数据。每一轮的DMA传输完毕后,驱动程序都处于外部中断状态,进入中断处理并判断是否需要续传。采集完成终止采集或退出系统软件后,通过module_exit()卸载设备,结束采集过程。 3.3 系统测试
由于国产软硬件技术水平还有待完善,系统中个别核心元器件难以替代;因此系统软硬件各模块间的匹配可能存在较多问题,系统的测试工作十分重要。按照设计要求,笔者对所设计测试系统的功能和实时性进行了针对性测试。 3.3.1 功能测试
对系统各个模块功能进行测试,最后进行总体联调测试。经测试,系统能够利用移植改造后的驱动程序驱动外部采集设备,进行可靠通信。测试软件满足功能多视图、多线程功能需求,可连续不停机运行100 h以上,模拟信号采集相对误差小于5‰,脉冲信号测试误差为10-4
量级,精度满足要求。时序信号主要通过信号控件进行状态显示与状态变
化时间监测,测试显示正常。同时,系统可通过数据库查询各个通道、各个时间段的测试数据。 3.3.2 实时性验证
利用经过国产系统移植改进的Cyclictest实时处理能力测试工具对原型系统的实时处理能力进行测试。Cyclictest测试工具利用操作系统提供的定时器,通过设置任务线程数和优先级等参数,测试计算机的任务线程响应时间,其中最小时延14 μs,最大时延270 μs,平均时延27 μs。Windows平台测试系统最小时延7 μs,最大时延195 μs,平均时延18 μs。国产化地面测试系统时延较大,但是满足地面测试需求。
4 结束语
笔者设计了一套基于国产麒麟操作系统的航天
地面测试系统,对系统的基本工作原理进行了详细介绍,提出了系统软件设计及关键技术的技术解决方法。测试结果表明:笔者设计的国产化航天地面测试系统相对Windows平台下的同类产品实时性有一定不足,但功能完整,满足航天地面测试的功能性能要求,对提高我国航天测试系统自主可控能力具有现实意义。
参考文献:
[1] 朱小英, 夏克强, 沈鸿. 航空航天装备电子元器件国产
化替代质量控制探讨[J]. 质量与可靠, 2016(4): 28-30. [2] 冉隆燧. 航天工程设计实践[M]. 北京: 中国宇航出版
社, 2012: 196.
[3] 同江, 蔡远文, 邢晓辰. 下一代自动测试系统在我国航
天测试体系结构中的应用[J]. 航天控制, 2011, 29(2): 75-80.
[4] 程龙, 姚静波, 解维奇, 等. 运载火箭控制系统信号综
合测试方法[J]. 兵工自动化, 2012, 31(8): 10-13. [5] 陈志发, 王苑增. 嵌入式Qt实战教程[M]. 北京: 电子
工业出版社, 2015: 60-63.
[6] 段荣. 国产数据库在军事信息系统中的应用[J]. 电子技
术与软件工程, 2015(8): 208-209.
[7] 蔡远文. 试验数据变频采样与存储的方法: 中国,
201210128630. 8[P]. 2012-04-27.
[8] 翟云飞. 基于嵌入式Linux的初晶温度系统软件设计与
实现[D]. 北京: 北方工业大学, 2012: 27-28.
[9] 曾晓波, 韩松. 基于Linux的高速数据采集卡驱动设计
[J]. 微计算机信息, 2009, 25(2-1): 78-80.
[10] 陈阳. PCI设备驱动程序设计与应用[D]. 湖北: 华中科
技大学, 2007: 46-52.
因篇幅问题不能全部显示,请点此查看更多更全内容