基于SCADE的机载余度管理软件开发
2013-09-25吴成富侯晓梅段晓军
吴成富,侯晓梅,段晓军
(西北工业大学 无人机特种技术国家重点实验室,陕西 西安 710065)
机载计算机为提高可靠性和容错能力,普遍采用余度技术,通过为系统增加多重资源,实现对多重资源的合理管理,从而提高产品和系统的可靠性[1]。余度飞控计算机系统由多台飞控计算机组成,可降低由于某一通道飞控计算机失效而导致的系统故障。
目前余度管理软件普遍采用手工编码,可靠性和效率较低,开发周期长[2],单元测试及代码覆盖率分析一般需要借助复杂的专业工具软件,验证工作量大,难度高,而且无法对验证工作进行定量评价,软件投入市场使用的周期长,成本高。
基于此,文中以三余度飞控计算机机载软件为例,采用SCADE (Safety-Critical Application Development Environment)图形化开发方法实现系统的开发,同时采用SCADE代码生成器KCG6.1自动生成满足DO-178B国际标准的A级质量认证的ANSI C语言的嵌入式产品代码[3],并采用专业的软件测试工具LRDA Testbed对生成的代码进行质量评价,在某机载余度管理软件开发项目中应用,缩短了开发周期,节省开发成本。
1 3×1架构机载余度管理软件设计
余度设计与余度管理是提高飞行控制系统容错能力、可靠性和安全性的手段[5]。通过在线信号监控可以及时发现系统故障模块;通过故障的隔离、切换和重构来实现故障的处理;通过监控、表决输入输出信号来选择信号[6]。这些都是实现容错与高可靠性的手段。
余度管理主要研究的内容包括以下几个方面:
1)同步、交叉传输技术;
2)监控、表决(信号选择技术);
3)故障监控、隔离技术;
4)故障重构技术。
文中以三余度数字量信号的监控、表决为例介绍基于SCADE的余度管理软件的开发。根据在线监控检查数据有效性,可能的有效数据分别为3个、2个、1个、0个,对应的监控算法也就分以下几种情况来讨论。
3个信号有效时将有效数字量输入信号按照大小值进行排序处理,可得到最大值、次大值和最小值。设最大值为R3,中间值为R2,最小值为R1,并求取相邻两个值之间的差值,分别记为:ΔR12(R2减去 R1的差)、ΔR23(R3减去 R2的差)和 ΔR13(R3减去R1的差)。根据上述偏差的检测结果与阈值ε做比较,确定各余度信号的状态。由此,三余度数字量监控、表决具体算法流程如图1所示。
2 基于SCADE机载余度管理软件设计
2.1 SCADE简介
图1 数字量监控/表决算法Fig.1 Digital valuable monitor/vote algorithm
图形化编程工具SCADE建立在严格的数学模型基础之上,具有严格的数学语义,可以实现为不同项目组、制造商与供应商之间提供可靠的通用的平台实现系统需求的交流,且与硬件无关,可配合不同的硬件平台使用。SCADE界面采用类Visual Studio风格,直观友好,易学易用,提供了建立在严格的数学模型基础之上的数据流图(block diagrams)和安全状态机(safe state machines)两套图形化建模机制,其中数据流图适用于连续系统的建模,安全状态机适用于离散系统建模,两套机制融合在一起,能够满足不同类型的系统尤其是混合系统的开发。SCADE提供的形式验证弥补了测试中存在的不能保证系统安全性的局限,SCADE代码生成器KCG通过了DO-178B国际标准的A级质量认证,保证了代码的正确性。
2.2 SCADE模型建立
基于上述算法流程,对三余度数字量信号监控、表决算法进行SCADE建模,采用状态机(State Machine)来搭建有效数据为3/2/1时的数据流图,具体模型如图2所示。
其中子模块3个数据有效时监控表决模块DIGIMonitor3具体模型图3所示。
图3 3个信号有效时监控/表决模型Fig.3 The monitor/vote model of 3 active signal
Order为对3个数据进行排序的子模块,Abs为取绝对值子模块。
开发过程中关键技术难点:1)对多个同类型的操作进行处理时,SCADE不支持循环操作,使搭建模型的工作量复杂。2)对内存等底层进行操作时,需要进行手工代码导入来协助完成软件开发。
3 代码生成与运行测试
SCADE所生成的代码是完全面向工程的产品代码,可以直接嵌入到产品中去而不需做任何修改,且代码的运行结果和仿真的结果完全一致。采用KCG6.1代码生成器,数字量表决监控3个输入有效模型自动生成代码部分截图如图4所示。
在LDRA Testbed测试环境下,依据Testbed收集的数据,使用一定的评价模型对被评价软件进行评价。评价模型使用因数——特性——度量的三级结构。根据公式评价软件质量特性:
对自动生成的代码进行质量分析评价,测试结果如图5所示。
图4 KCG6.1.2生成代码Fig.4 Code generated by KCG 6.1.2
其代码生成器生成的嵌入式代码子程序质量及软件的可测试性、可维护性及清晰性都严格遵照DO-178B国际标准达到 Excellent,手写代码分别为 Good,Middle,Middle.子程序质量分类图显示手写代码子程序质量为Middle,而自动生成代码为Good,软件质量相对手写代码有很大程度的提高。
图5 代码测试结果Fig.5 Codes test rusult
4 在仿真三余度飞控计算机上实现
飞控计算机仿真机为3×1非相似硬件结构(CPU不同),系统分为3个通道,每个通道含一台飞控仿真计算机,飞控计算机实时仿真机内各板卡均基于VME背板总线,三台飞控计算机采用非相似的处理器板卡 (处理器板支持JTAG接口和VxWorks6.8),并具有AFDX总线接口、ARINC429总线接口、CAN总线接口和DIO离散量接口,完成余度任务管理及在线监控功能。该模块另配备有飞控仿真机上位机一台,用于余度故障模拟及调试管理。其实物图如图6所示。
图6 三余度飞控计算机实物图Fig.6 Triple-redundant flight control computer
5 结 论
将SCADE代码生成器KCG自动生成的函数嵌入到VxWorks6.8开发环境中,大大降低了由手写代码造成的语法错误和逻辑错误,缩短了开发调试周期,节省了开发成本,很好的保证了三余度管理软件的功能实现,且代码的可读性良好,大大提高了机载三余度管理软件的开发效率并保证了软件代码质量,有很好的工程应用价值。
[1]刘小雄,章卫国,李广文.电传飞行控制系统的余度设计技术[J].飞机设计,2006,1(1):35-38.
LIU Xiao-xiong,ZHANG Wei-guo,LI Guang-wen.Redundancy techniques for fly-by-wire flight control systems[J].Aircraft Design,2006,1(1):35-38.
[2]林成文.机载软件图形化设计与自动代码生成研究[D].西安:西北工业大学,2007.
[3]Esterel Technologies.SCADE Training Course[S].2009.
[4]吴成富,王睿,陈怀民,等.基于SCADE实现的三余度飞控计算机系统任务同步[J].航空计算技术,2009,1(1):107-110.
WU Cheng-fu,WANG Rui,CHEN Huai-min,et al.Task synchronization oftriplex Hot-redundancy flightcontrol computerbased on SCADE[J].AeronauticalComputer Technioue,2009,1(1):107-110.
[5]宋祥贵,张新国.电传飞行控制系统[M].北京:国防工业出版社,2003.
[6]《飞机设计手册》总编委会.飞机设计手册[M].北京:航空工业出版社,2010.