摘要
采用层级BIT设计架构,建立了操作系统层与应用层BIT交互的接口模型。按照BIT不同的分类依次设计不同类型的BIT测试项,在基于ARINC653标准AcoreOS653操作系统下实现并验证设计的相关BIT测试项。通过研究证明了在层级BIT架构下设计出的BIT测试项,根据不同测试项引发故障严重程度的不同合理设计不同的故障阈值,既保证了较高的故障检出率,又降低了故障误报的风险。
关键词
ARINC653标准;BIT;测试验证;故障阈值
引言
ARINC653是航空电子应用程序接口标准(Avion-icsApplicationSoftwareStandardInterface),提供了一组可执行应用(ApplicationExecutive)的规范。它提出了一种新的空间保护机制—分区(Partition)的概念,引入了故障处理机制—健康监控(HealthMonitor),并且能保证运行时间和物理资源的确定性,同时提出了机载软件的三层结构(应用层、操作系统层和模块支持层)。目前,国内常用的符合ARINC653标准的操作系统有VxWorks653和ACoreOS653操作系统[1]。
自测试(Built-inTest)是一种不使用外设,只利用自身内部软硬件来实现系统装机和集成测试的技术。也就是说先由系统内部模拟仿真各个硬件或软件激励,然后按照测试项的执行结果通过预设的合格判据来做出测试通过与否的测试技术。BIT作为一种机载设备的故障测试方法,是一项值得深入挖掘和研究的新技术,在综合化模块航电系统设计领域中受到越来越多学者的青睐。
BIT设计原理与分析
BIT测试按测试范围和检测时间的不同,主要分为以下三类[2]:上电BIT测试(PBIT),启动BIT测试(IBIT)和连续BIT测试(CBIT)。
上电BIT测试指系统上电或重启之后立即就运行的测试,它是在进入模块支持层之前就开始的测试。上电BIT主要运行通电以后设备内部的自检功能,测试结果则需要存储在非易失存储设备(NVRAM或FLASH)中,这样保证下电之后执行的结果不会丢失。存储的测试结果主要是提供给上层用户使用,用户不需要关心上电BIT具体执行过程,通过获取的测试结果就可以知道底层硬件的健康状况。应用层只执行PBIT接口的调用功能,并不能决定上电BIT的测试范围。
启动BIT常常用于故障诊断、故障隔离等健康管理功能,并提供了相当完善的故障恢复机制和方法。启动BIT具有可重复性,这就要求系统接收到启动BIT请求后,根据当前系统状态决定接受启动BIT请求之后,应退出当前工作状态,进入启动BIT测试状态。因此将启动BIT称之为一项破坏性测试,即系统需要中止当前操作,完全被启动BIT操作所占用。
连续BIT测试是指系统在正常运行过程中持续性进行的测试,它允许系统在运行的间隙,执行部分系统硬件设备的监测,且运行的硬件监测不应影响系统在正常状态下的功能。基于这种特点,将它称之为非破坏性测试。但是连续BIT的测试范围要小于启动BIT,这是由它非破坏性的特点决定的。
分析不同BIT测试执行过程,发现每种测试均包括两个过程:
1)故障检测,用于检测系统中相关设备的健康状况;
2)故障隔离与故障报告,在故障检出后,将故障定位到LRU(外场可更换单元)后隔离并及时报告故障[3]。
BIT的系统及软件设计BIT
设计准则:
1)尽可能多地检出故障,使对系统运行的影响最小;
2)检测并正确处理100%涉及安全的故障;
3)所有适用的BIT测试都将使用故障过滤逻辑与规则,以防止错误警报;
4)CBIT的运行不会干扰飞机的正常运行;
5)冗余功能的故障不会降低系统的运行效率,但必须进行报告以便可以采取恰当的维护措施。
2.1BIT系统功能性设计
ACoreOS653操作系统采用层次化的软件结构,由底向上分别是模块支持层(MSL)、操作系统层(OS)和应用层三层软件结构[4],其中操作系统层按功能层次又可划分为分区操作系统(POS)、核心操作系统(CoreOS)和可配置组件。ACoreOS653操作系统架构层次如图1所示。
ACoreOS653操作系统各部分软件功能在应用系统中使用时各司其职,其中模块支持层软件负责硬件资源管理,为其上层的操作系统运行提供硬件支持,该层软件与核心操作系统软件相互独立且相互依赖。核心操作系统负责分区调度和资源管理,作为操作系统可选功能,可配置组件由用户通过配置选择进行功能后续扩展;分区操作系统则驻留在每一个分区内,为用户提供分区内的进程调度和资源管理。
BIT系统功能性设计应考虑BIT分类、检测时机、检测范围以及对检测结果的处理[5]。基于此设计准则,考虑到PBIT和IBIT只是执行触发的时机不同,PBIT是上电自启动测试,IBIT是由外部请求触发的,但这两种BIT的测试范围可以设计为同一范围,这样就能够保证检测出尽可能多的故障项。考虑到CBIT由于持续监测性的要求,会对整个系统的性能产生影响,因此CBIT测试范围只关注关键性指标项。设计BIT测试范围如表1所示。
2.2BIT软件设计
BIT软件设计应考虑BIT测试程序的详细执行过程、BIT故障诊断和外部通信[6]。BIT测试流程如图2所示。
Step1:模块支持层MSL在模块一上电或者重启的情况下调用PBIT测试接口函数获取已经定义好的PBIT测试项各项测试结果。如果测试项全部完成,则执行Step2,否则有某项测试未完成则跳转至Step5。
Step2:将PBIT测试项结果存储到NVRAM,此时应用层可通过接口调用获取PBIT测试结果。至此PBIT测试完成,继续执行Step3。
Step3:待应用初始化完成后开始执行CBIT测试项,若CBIT测试项完成,则故障计数器减1(但需保证此时故障计数器自减后的值≥0),同时将CBIT测试项结果存储到NVRAM并跳到Step5;若CBIT测试项有某一项未完成,则此测试项的故障计数器自增。然后判断自增后的故障计数器是否达到阈值。如果达到阈值,执行Step4。如果未达到阈值,继续执行Step3。
Step4:将CBIT测试结果存储至NVRAM并进行软件故障排查,执行Step5。
Step5:整个BIT测试流程结束,包括成功的结束和不成功的结束。
基于不同类型的BIT进行区分设计,考虑的是不同类型BIT的影响面和测试时机不同。具体来说:PBIT执行的是关键级别硬件测试,只要有一个测试项不成功执行,表明此时模块的硬件是有故障或失效的,后续再执行CBIT没有任何意义。但CBIT主要监控的是温度和NVM内存的情况,这些故障可能不影响系统工作,有时会自动消失,但是当故障持续一段较长时间以后,不及时停止,可能会导致整个系统瘫痪。因此在CBIT测试时设置了故障阈值机制。根据不同测试项引发故障严重程度的不同合理设计不同的故障阈值,既保证了较高的故障检出率,又降低了故障误报的风险。
2.3故障过滤逻辑
采用故障过滤逻辑能有效减小故障误报的风险,因此在常规故障诊断过程中引入故障过滤逻辑,即软件设计流程图中提到的故障阈值机制。按照不同的BIT测试项具体设计各自测试类的阈值如表2所示。
所有PBIT的测试项不引入故障阈值机制,这是考虑到PBIT测试项故障是由MSL层发现的,均是关键的硬件故障,在不解决相关故障的前提下,进行任何后续操作均没有实际意义。而且在应用层的软件无法通过配置的阈值来控制对应的PBIT测试过程,只能被动获取已经完成的PBIT测试结果。因此所有相关的PBIT测试项只要测试通过一次就认为无故障。
以温度监视测试项来说,它监控系统内部各个组件的温度,当温度过高时,可能会造成各个组件不同程度的损坏,但考虑到温度值是一个波动的数据,为了避免故障频繁误报的高发风险,将故障阈值设置为连续故障次数达到3次以后才认为当前温度故障是一个持久性的硬故障并进行故障上报,连续通过次数2次以后才认为当前温度正常不需进行温度故障上报。
但是考虑到后续软件功能的复用性,故障阈值应支持可配置,即当前阈值的设计只满足目前功能,后续扩展各测试项应提前规划相应的配置文件来实现功能的二次迭代。
BIT实现
BIT实现主要考虑ACoreOS653操作系统中BIT配置及其对应的接口函数。基于安全性的考虑,在ACoreOS653操作系统中默认不开放IBIT和CBIT功能,因此在使用对应BIT功能前需要配置使能该BIT功能,BIT配置包括核心OS项目中的BIT配置和应用项目的BIT配置。具体配置过程如下:
Step1:首先在核心操作系统项目CoreOS中的ACoreOS配置os.cfg新增IBIT和CBIT配置节点并使能。
Step2:分区应用中的BIT配置在对应分区的com-cfg.cfg中使能BIT功能。
Step3:CBIT和IBIT的启动只能由系统分区来启动,因此如果分区需要启动BIT测试,必须将该分区配置成系统分区,在配置项目中的分区配置xml文件中进行配置。
ARINC653标准ACoreOS653操作系统中提供的BIT接口及功能如表3所示。
BIT接口函数与BIT测试程序之间的关系如图3所示。
对PBIT测试来说,首先由模块支持层获取数据库中存储的PBIT测试结果,然后模块支持层将获取到PBIT结果通过应用层接口函数提供给应用层软件。但注意模块支持层获取结果之前应保证PBIT测试项执行结束。
对IBIT测试来说,详细的执行过程是应用层首先调用START_IBIT接口,该接口启动操作系统层的IB-ITwork,IBIT任务由向下调用模块支持层的IBIT启动函数mslStartIbit进行测试,待IBIT执行结束以后开始调用mslGetIbitResult获取测试结果并保存,最后应用层调用GET_IBIT_RESULT获得保存的结果。
对CBIT测试来说,应用层调用START_CBIT接口,该接口启动操作系统层的CBITwork,CBIT任务向下调用模块支持层的mslStartCbit进行测试,待CBIT执行结束以后模块支持层再调用mslGetCbitResult获取测试结果并保存,用户调用GET__CBIT__RESULT获得保存的结果。
结束语
本文将BIT测试与ACoreOS653操作系统的三层结构紧密结合,针对不同分类的BIT测试项,设计并实现了不同阈值范围的BIT测试项。通过对筛选出的PBIT和CBIT测试项试验研究,证明了在基于ARINC653标准的ACoreOS653操作系统下能够实现分层结构的BIT,并提高了故障检出率。
(以上文章来源于《航空计算技术》,作者单位:航空工业西安航空计算技术研究所,作者:利宁,唐园园,李雪源,赵路明)