余度飞控软件多核仿真测试技术研究

2014-04-10 12:22韩芝侠
机械与电子 2014年5期
关键词:控计算机共享内存余度

韩芝侠

(宝鸡文理学院电子电气工程系,陕西 宝鸡721016)

0 引言

多余度飞控计算机软件的容错特性导致其复杂度远非单余度可比拟,软件任何一个微小错误都会带来灾难性的后果。因此,对多余度飞控计算机系统的软件仿真测试就显得尤为重要[1]。

传统的多余度飞控系统的软件测试可以在一定程度上实现真实物理系统的功能,验证系统性能是否合乎设计要求[2]。同时,它的实时性更逼真地接近真实的飞控软件运行环境。但是它也存在一些问题。国内外广泛使用的余度等级一般是带自监控的三余度或四余度。这样,就需要多个计算机组来实现测试,且在测试过程中,需要几台计算机联调,使得测试过程较为复杂、测试周期很长且联调困难[3]。参考文献[4]提出了一种基于单PC的余度飞控软件仿真测试方法。使用单PC技术可以在飞控系统的设计开发过程中实现真正的并行工程开发,调试便捷,能极大提高产品开发效率。但是,单PC测试下支路同步性、多任务调度、通道通讯的实时性和实际系统运行情况还有一定的差异,无法得到保证,在多余度软件应用到真实飞控系统之前,必须进行一定的半物理仿真测试实验进一步来验证软件的可靠性。基于此,提出一种基于多核技术的单PC余度飞控软件仿真测试方法[5-7],能在余度管理软件开发初期进入测试,极大地缩短了开发周期,且能利用核间通讯机制方便地模拟多余度通道之间的交叉传输、通道间同步等流程,所以,其实时性已经可以非常接近真实飞控软件的运行环境,在继承了参考文献[4]的简易可测的基础上解决了参考文献[4]在实时性方面的不足。下面,以4×1余度管理软件为例来介绍该方法。

1 余度飞控软件组成

多余度飞控软件结构如图1所示。实时执行模块包括了故障注入、余度管理模块和数据记录模块等,是整个余度管理软件的核心部分,也是余度软件测试的核心内容,它实现了多余度容错的多通道同步、数据监控表决和数据交叉传输等内容。

图1 多余度飞控软件结构

2 仿真测试平台

飞控计算机系统大多使用了国内外主流的VxWorks多核操作系统[8-9]。其应用方式有两种:AMP和SMP。选择两者的主要依据是为多核处理器中各核之间是否存在主次之分,是否存在专用核的特点[10]。作为飞控计算机,其多余度通道之间是相互独立的。为了最大限度的逼近真实飞控软件多核运行环境,选用AMP结构,各核都有独立的OS。

目标飞机是虚拟飞机,用一台飞行仿真计算机来模拟[11]。飞行仿真机基于RTX实时扩展操作系统,实现了Windows环境下的实时仿真。飞控计算机仿真机组由一台具有PowerPC处理器的多核计算机组成,该计算机运行VxWorks实时操作系统。采用1主核带4个副核的CPU来进行余度软件仿真测试。为了仿真多余度通道的任务调度过程,对多核进行功能划分,分为调度管理和通道模拟功能。其中,主核实现调度管理功能,4个副核分别运行4个通道模拟通道任务。在软件逻辑调试中,主核可实现故障注入的功能。各通道之间的通讯采用核间通讯实现。仿真系统组成如图2所示。

图2 仿真系统组成

3 仿真测试实现

余度软件测试是为了验证软件编码是否有误,信号时序性及逻辑跳转是否正确。因此,有必要对软件中的每个分支进行验证和测试。测试余度管理软件,最重要的一点就是模拟多个余度通道同时工作,仿真出多个余度管理软件同时运行的状况。另外,还要仿真通道间通讯、数据处理与记录和故障处理等环节。只有软件运行状况十分接近真实飞控软件运行状况的情况下,才能根据条件进入软件的每个逻辑分支,验证其结果是否与余度管理算法一致。

余度计算机周期任务每帧为30ms,分为2个阶段。前20ms必须完成:同步、信号采集、输入数据表决监控、系统状态控制、控制率计算和输出数据表决监控。后10ms完成:输出、故障综合。将以上这些任务进行分解,需要利用多核机制实现仿真的动作有:任务调度、同步和交叉传输。

3.1 多核下的任务调度

飞控计算机的实时性要求非常高,这就要求采用非抢占式任务调度来实现[12-13]。主核运行故障注入模块及用户界面,4个副核各自运行一个通道的余度管理软件。根据核号和通道间的对应关系,实现各通道数据本地化,逼真地模拟单通道余度计算机的运行。利用多核机制打通数据通道,完成多余度任务的处理流程。

3.2 多核下的同步流程仿真

同步是余度管理系统的重要部分。只有在每个周期的开始,各个通道开始步调一致的工作,后面的表决监控数据才有意义。同步方法很多,广泛使用的是基于硬件实现的“双握手”法。即每个通道先通过DO口输出逻辑“真”,等待其他通道通过DI口响应逻辑“真”,第1次握手结束后,每个通道输出逻辑“假”,等待第1次握手中响应正确的通道也输出逻辑“假”。“双握手”正常的通道才参与后续的任务。

使用多核技术来仿真通道间同步,就是要仿真通道间的数字信号,反映在多核实现上,就是核间消息。多余度软件的同步,由于其他核的任务执行结果对本核后续操作有影响,则必须使用同步消息来实现。另外,考虑到核间消息存在时间延迟,在需要考虑时序的地方,如硬件操作等,这种场景也可以考虑使用核间同步消息来实现。如果核间同步消息发出后,由于任务异常,一直未能收到对方返回的消息,可以设置死等时间。超时后,任务自动返回执行失败,进行后续任务,不再等待。核间异步消息常用于处理通知事件,某个核发出消息通知后,不去关注消息的执行结果,继续本核任务。收到消息的核根据消息内容进行相关的处理。

根据以上分析,多核下任务同步使用封装的核间同步消息接口来实现[14]。每个核遍历除了自己外的所有副核,发送逻辑“真”信号,等待收到消息的核返回逻辑“真”后,再继续发出逻辑“假”。考虑到系统的实时性要求,核间同步消息的同步等待时间一般不应超过10ms。

副核1与其他副核进行同步的过程如图3所示。首先由副核1向副核2发送逻辑“真”同步信号,等待副核2返回逻辑“真”消息,如果在10ms内未返回,则逻辑“真”同步失败,进入同步恢复程序,否则逻辑“真”同步成功。由副核1向副核2发送逻辑“假”同步信号,等待副核2返回逻辑“假”消息,如果在10ms内未返回,则逻辑“假”同步失败,进入同步恢复程序,否则副核2同步成功。接着进行副核3同步,直至遍历所有其余副核,则同步完成。

3.3 多核下的交叉传输流程仿真

余度管理任务通道之间的数据通信使用航空总线实现。在每一个周期通道计算机将各自的数据封存在自己的CCDL(交叉传输)数据包中,通过总线发送出自己的数据包,同时通过总线接收另外3个通道的CCDL数据包,这样,每个通道就能有一份完整的多通道数据用于多余度数据的监控表决。

由于各通道的数据都是本地化存放。因此,使用多核技术的共享内存机制来仿真交叉传输过程。

图3 副核1同步流程

共享内存是将想共享的数据都定义成为全局变量,它最大的优点是便利、高速,但也有很大的危险性。如果该内存同时被不同的任务访问和修改时,就很难保证数据的完整和一致性。因此,需要对共享内存部分数据进行上锁[15]。上锁的办法主要有中断上锁、抢占上锁和信号量。中断上锁保证了任务对CPU的独占,在上锁期间,即使中断产生也不会切换到中断服务程序,它容易造成超时异常;抢占上锁是基于任务级的,它禁止当前执行的任务被其他任务抢占,它同样也会造成其他任务的延迟;信号量比较简单,但是处理能力也有限。因此,核间锁采用中断上锁或抢占上锁来实现。

多核锁对数据保护方式的有两种。一种是多核数据锁,在执行写入和读取动作时进行保护;另一种是多核流程锁,它是对整个数据操作流程进行锁保护,以防其他任务改写了该流程正在使用的数据。交叉传输是通道间的数据传输,没有流程上的限制。因此,使用数据锁来实现。

使用共享内存实现时,首先需要主核在共享内存区申请一块共用内存,该内存是本地CCDL数据包的4倍大小,其他核需要注册与该块内存的挂接关系。共享内存锁也需要在主核注册,副核注册挂接关系,并注册读、写锁。在使用数据的接口中分别封装读、写锁,实现对共享内存的保护。由于各个核都能读写该块共享内存,如同方便地模拟了交叉传输流程。需要注意的是,多核锁的使用,必须要保证上锁和解锁配对使用,否则会出现死等问题引起核间握手异常,系统复位。

4 仿真测试结果

使用多核仿真技术,在仿真测试平台上对某四余度飞控计算机软件进行了仿真测试。该平台能够记录自仿真系统启动以来的各种历史数据,并可以以多通道曲线对比的方式展示给用户。通过测试及数据分析,及时发现一些逻辑错误和时序问题;通过故障注入,还能进一步发现一些深层次的问题,如资源重入等。通过这样的仿真测试,飞控计算机软件的可靠性得到了有力的保障,为后续在真实飞控环境下测试奠定了坚实的基础。

5 结束语

基于多核的多余度软件测试方法可以在软件开发初期发现软件Bug,保证算法逻辑的正确性。在VxWorks实时操作系统下,采用多核的核间同步消息机制进行通道间同步,使得测试的实时性非常接近实际运行情况;采用共享内存机制来仿真交叉传输过程,保证了交叉传输的快速性和便捷性;另外,基于多核技术的余度飞控软件仿真测试方法还可以克服单CPU测试的缺点,整个仿真流程非常逼近真实的实时环境,非常适合于多余度软件仿真测试,具有较高的实用价值。

[1] 杨 飞.余度飞控计算机的设计和仿真技术研究[D].西安:西北工业大学,2007.

[2] 宋 龙,张文山,靳 凌,等.空空导弹飞控软件研制中的虚拟样机应用[J].计算机仿真,2005,22(5):19-24.

[3] 刘小雄,章卫国,李广文.电传飞行控制系统的余度设计技术[J].飞机设计,2006,(1):35-38.

[4] 吴成富,张江霞,段晓军,等.余度飞控软件单PC仿真测试技术[J].测控技术,2011,(8):91-94.

[5] 潘计辉,张小林.三余度飞控计算机关键技术研究及工程实现[J].计算机测量与控制,2010,18(2):440-442.

[6] 马秋瑜.无人机飞控系统实时余度软件设计[D].西安:西北工业大学,2007.

[7] 齐劲松.余度飞行控制计算机系统研究与实现[D].西安:西北工业大学,2007.

[8] 梁忠杰.基于VxWorks的飞控计算机软件研究与实现[D].西安:西北工业大学,2006.

[9] 刘小雄,陈怀民,章卫国,等.飞控系统多余度管理算法在VxWorks中的实现[J].计算机工程与应用,2006,(02):260-262.

[10] 肖学甲.基于AMP架构的多核间任务同步与通信的设计与实现[D].西安:西安电子科技大学,2011.

[11] 陈宗基,孙晓哲,秦旭东.民机飞控计算机系统虚拟样机验证平台研究[J].系统仿真学报,2008,20(15):4057-4063.

[12] 沈 俊.直升机飞行控制实时仿真研究[D].南京:南京航空航天大学,2011.

[13] 邱宗江,刘慧霞,席庆彪,等.无人机PCA故障检测与诊断技术研究[J].计算机工程与应用,2013,49(4):262-266.

[14] 杨启军,鲁士文.基于多核的入侵防御系统的设计与实现[J].计算机工程与设计,2010,31(21):4595-4598.

[15] 黄志钢,盛肖炜.多核处理器结构与核间通信的CMC总线设计[J].沈阳理工大学学报,2012,31(6):70-75.

猜你喜欢
控计算机共享内存余度
基于STM32 的立方体卫星姿控计算机设计
余度计算机在无人机系统中的应用研究
通过QT实现进程间的通信
某型飞控计算机与地面检测设备无法连接故障分析
高空长航时无人机飞控机容错技术研究
基于Linux内核的文件服务器模型的研究与构建
新型操舵控制系统余度管理技术
基于PCI总线的多处理器协同机制研究
无人机容错飞行控制计算机体系结构研究
混合余度传感器系统的可靠性建模与分析