刘富荣
(中国航发商用航空发动机有限责任公司设计研发中心,上海 201108)
基于模型的商用发动机机载软件开发方法
刘富荣
(中国航发商用航空发动机有限责任公司设计研发中心,上海 201108)
随着仿真技术和软件工程的发展,基于模型设计(MBD)软件开发技术已广泛应用于国外商用航空发动机全权限电子控制软件,以解决经典软件开发过程中的难题,但该技术在国内刚刚起步。针对经典软件开发流程存在的诸多问题,基于模型的软件设计方法,从人员组织、研制流程、工具使用三个方面对经典开发流程进行了优化,解决了经典软件开发流程存在的弊端。介绍了软件开发组织与研制流程的变革,定义了基于模型的软件设计流程,描述了流程中各个工作阶段涉及的人员、工作依据、活动、输出,介绍了开发工具以及基于Matlab/Simulink的模型设计标准,验证了该方法的正确性和可行性。总结了基于模型的软件设计优势、项目实践经验,探讨了该方法面临的挑战和后续工作重点。
航空航天;发动机; 机载软件; 设计流程; 基于模型设计; 设计标准
航空发动机以电子设备与机载软件为核心,实现发动机的控制和监视。机载软件具有大规模、高安全、研制周期长、成本高的特点。先进航空发动机机载软件代码量都超过30万行,成本约百美元/行。为提高机载软件质量、缩短研制周期、降低研制成本,基于模型设计(model-based design,MBD)软件等新兴研制技术逐步应用于经典软件研制体系中,成为当前机载软件开发的主流趋势[1]。
经典软件开发流程由系统总体提出需求,并将其作为软件开发的输入;软件专业设计人员根据该输入进行软件设计与编码、编译链接生成可执行的代码,并对可执行的代码进行测试验证。这种流程的弊端体现在:首先,数据的传递依靠文本和语言交流,易造成需求、实现不一致;其次,测试在代码完成后才开展,发现问题再修复导致研制周期变长;最后,需求提出者与设计实现者不同,需求传递过程中易造成理解差异,导致实现与需求不一致。采用基于模型的软件设计,从人员组织、研制流程、工具使用三个方面对经典开发流程进行了优化,从不同层面规避了上述弊端[2]。
本文首先介绍了基于MBD的软件设计方法,包括开发组织架构、开发流程、开发工具,以及由此引入的设计约束等;然后详述了该方法在机载软件开发中的实施情况;最后总结了流程实践经验,阐述了该方法面临的挑战和后续的工作重点。
国内软件工程普遍采用经典软件开发流程,开发组织的作用通常是:系统总体提出文本化软件研制任务要求,软件开发部门根据该要求进行需求分析、设计与编码。软件验证、系统总体、部件设计等专业人员不直接参与软件设计。
MBD设计流程将文本化的需求和设计演变成可仿真验证的模型与自动化代码,使得开发组织演变为提出业务需求、开发模型,最终由软件工程专业人员将模型生成代码并与手写代码集成的良性开发组织。该流程使得系统总体、部件设计专业作为需求提出者直接参与到软件设计中,将其需求通过MBD模型转化成软件产品的一部分。MBD软件开发组织如表1所示,其中,“√”表示参与该项职责的成员。
表1 MBD软件开发组织
1.1 专业分工变化
组织架构的变革导致专业间分工的变化。基于MBD的开发组织由软件工程专业、系统与部件专业共同组成。软件项目研制由软件工程专业牵头,系统和部件专业共同参与。
软件工程专业主责软件方案与项目策划、流程标准的建立、工具的保障、软件体系结构设计与集成、验证、质量保证、配置管理与交付。系统与部件专业主责与其专业相关的需求定义与验证、模型开发和验证,最终将模型交付软件工程专业进行代码生成与集成调试。
1.2 组织挑战
非软件工程专业的人员参与到软件设计中,给开发组织带来一定的挑战。
①组织能力:要求非软件工程专业的设计人员具备一定的软件设计能力。需对其定期开展设计流程与标准宣贯、方法指导与工具培训等。如对使用CAD建模与结构分析的液压专业人员开展软件工程培训,使其掌握需求分析方法与需求管理工具的使用;理解设计标准与流程,并掌握Matlab/Simulink工具的使用方法等。
②流程与标准:为面向不同专业的设计人员,开发流程需足够严苛以保证软件设计质量,并能兼顾开发效率;要求开发标准内容全面,可操作性强,能依靠工具落地。
③工具链:要求工具链高度集成化,最大程度实现流程流转与标准检查的自动化;将复杂操作封装在后台,尽量简化面向设计人员的操作步骤。为强化需求和设计的验证,需开发被控对象模型并且要求验证场景尽量逼真,以达到需求和设计的验证要求。
基于MBD的软件开发过程包括需求分析、软件设计、编码实现、集成调试,MBD的软件开发过程框图如图1所示[3]。
图1 MBD的软件开发过程框图
2.1 需求分析
经典软件开发流程中的需求错误往往在系统集成或测试阶段才被发现。基于MBD的软件开发流程,将后端验证工作提前,在需求阶段仅进行初步软件设计并构建仿真环境开展验证。
由系统总体牵头,组织各专业依据系统方案与部件技术要求进行需求分析。系统总体负责与被控对象本体相关的控制需求,如发动机稳态控制等;部件专业负责与部件特性相关的需求,如传感器信号处理、作动机构闭环控制等;软件专业则负责操作系统、数据存储等需求的开发与验证。
各专业将算法与逻辑采用Matlab/Simulink建模并转化成代码,并将代码在全数字仿真环境中验证。同时在需求管理工具DOORS中将算法与逻辑文本化并管理,建立需求管理属性、追溯性关系,避免需求之间存在矛盾、重复、不可验证等。各专业对需求过程的数据进行评审,并将数据传递给软件专业开展软件设计。
2.2 体系结构设计
软件体系结构设计由设计与集成工程师依据需求、安全等级、目标环境约束等,按照功能高内聚与数据低耦合的原则设计软件静态与动态结构、时序规划与模块定义[4],模块MBD与非MBD实现方式划分如图2所示。MBD实现方式的优势在于将软件设计工作图形化、可视化、可仿真化;劣势在于生成的代码效率低,可实现的功能有限。因此MBD与非MBD实现方式的划分原则如下:①偏重于数值计算和逻辑计算的需求采用MBD方式实现,例如信号处理算法、控制律管理算法、故障诊断逻辑等;②非数值与逻辑计算的需求、与硬件资源密切相关的需求采用非MBD方式实现,例如信号采集、输出信号管理、设备的自检等[5]。
图2 MBD与非MBD实现方式划分图
采用MBD实现的模块,由设计与集成工程师构建Matlab/Simulink模型框架,定义模型的输入、输出、调用关系。模块框架本质上为空模型,可动态验证模型间的一致性关系。非MBD方式的模块以接口定义文件(.h)的形式定义静态组织关系、接口形式、数据关系等,作为编码实现与集成调试的依据[6]。
体系结构设计通过DOORS文本化,并由设计与集成工程师建立与需求的追溯性关系,组织各专业对设计结果进行评审,并在详细设计过程中跟踪、管控软件体系结构。接口文件、模型框架通过配置管理工具ClearCase统一协同开发环境发布,供详细设计过程使用。
2.3 详细设计
详细设计分为手写代码设计与MBD模型设计。编码工程师依据结构设计结果开展手写代码设计,同时依据编码过程的反馈逐步完善,并以文本形式呈现。各个专业模型设计工程师在MBD模型框架中开展MBD。MBD模型框架提供了各个模型之间的调用关系和接口管理,不包含具体逻辑。模型设计工程师根据分配给各个模型的功能需求,在MBD模型框架中完善具体逻辑。
模型设计工程师根据体系结构设计分配给模型的需求,开展模型、用例设计、仿真验证;使用Matlab/Simulink Model Advisor对模型进行静态检查,生成检查报告与设计报告,设计过程的数据均在ClearCase受控,并由设计与集成工程师组织各专业评审。
2.4 编码实现
编码实现包括手工编码与自动代码的生成。编码与实现工程师遵照编码标准与手写代码详细设计文档开展手工编码,并不断迭代详细设计文档。自动代码生成是由设计与集成工程师依据体系结构设计与接口文件,配置模型及其数据自动生成代码。
除代码外,代码生成过程还会生成代码与模型的信息文件与追溯性关系。信息文件记录了模型与代码版本,编译配置信息。再次生成代码过程中,自动代码生成工具自动比对当前状态与信息文件记录状态的差异,决定是否进行代码生成,在保证代码与模型一致性的同时提高代码生成效率。自动代码不允许人为修改,调试过程中若发现问题,先变更模型再重新生成代码。追溯性颗粒度为函数单元级,以C语言函数为单元与模型中的单元建立追溯性。
2.5 集成调试
集成调试由软件设计与集成工程师牵头、组织需求与编码工程师,对标软件高层进行需求分析。其分为软件集成调试与软硬件集成调试两个阶段,前者在全数字集成环境中进行调试,后者在目标集成环境中进行调试[7]。两种环境基本架构一致,包括上位机调测软件、被控对象模型、机载设备及其软件。上位机调测软件实现激励注入与数据观测与保存,机载设备与软件根据输入激励实现被控对象的闭环控制[8]。
软件集成与软硬件集成工作的侧重点不同。前者将手写代码与MBD自动代码集成,并根据软件高层需求开展功能调试,验证应用软件设计满足需求[9];后者在此基础上将应用软件与平台软件编译链接加载到目标控制器中,复用集成调试阶段的用例开展软件功能调试,通过比对软件集成调试与软硬件集成调试结果的一致性,定位并解决由于目标平台引入的电气特性、硬件操作、时序调度等问题,验证软硬件集成的正确性[10]。
软件开发工具包括需求管理工具DOORS、结构化分析工具RTCase、配置管理工具ClearCase、质量流程管理工具ClearQueas、模型设计工具Matlab/Simulink、编码工具Visual Studio 2010、编译工具Score,以及自主开发的被控对象模型、全数字集成环境、目标集成环境等。MBD流程工具链如图3所示。
图3 MBD流程工具链
Matlab/Simulink作为MBD流程的核心工具,提供了不同的工具包。为节约license数量,分配给不同人员的工具包也不同。Matlab、Simulink、Stateflow作为基础工具,每一个项目成员均配备; Real-Time Workshop (RTW)用于代码生成,只为软件专业配置。
Matlab/Simulink提供了model reference引用机制,以实现模型的协同开发。上层模型通过reference模块引用下层模型,建立调用关系。每一次打开上层模型时,系统都会根据搜索路径自动定位下层模型。其优势在于顶层模型与下层模型彼此独立,在下层模型接口不变的情况下,不同层模型的开发工作互不干扰。
Matlab/Simulink在工业界主要用于系统仿真,在机载软件开发领域的应用才刚起步。面对机载软件的高安全性要求,中国航发商用航空发动机有限责任公司(以下简称“中国航发商发”)制定了模型设计标准,约束Matlab/Simulink的使用,为项目组提供统一的模型设计指南与约束,确保模型与C代码风格统一,具有一定的可读性与维护性。
模型设计标准以汽车行业MAAB(Matlab Automotive Adivisory Borad)、美国NASA Orion GN&C Matlab/Simulink Standards为雏形,结合项目实践迭代形成,并持续完善。标准对文本注释、模型结构、设计风格、可用库、仿真配置项等进行了约束。模型可用库由Link型库、Ref型库、仿真配置项以及模型设计模板三部分组成,其中的元素默认设置与设计标准的要求一致。
Link型库以Library形式呈现,通过库链接定位其在库中的位置;库模块更新后,其在被使用的位置自动更新。模型可用Link_Lib库如图4所示。其主要分为三部分:标准工具库由Matlab/Simulink模块裁剪而成,包括离散库、非连续库、逻辑与位操作库、数学操作库、端口和子系统库、信号发生器库、信号特征库、状态机库;用户自定义库分为基础函数库、查表函数库、控制算法库;其他库中包括注释模块库、测试桩模块库。测试桩模块库通常用于调试,包括示波器、信号激励源等;其不包含在软件产品模型中,在库中使用红色标志,起到警示作用。
图4 可用Link_Lib库
Ref型库以独立模型的形式供用户使用,在被使用的位置通过双击reference模块直接打开并定位。Ref型库包括模型、数据定义文件、代码生成配置文件,由Link型库中的模块或引用Ref型库中其他模型形成。Ref型库主要定义不同项目之间的通用算法或逻辑,较Link型库层次更高。
面向不同的仿真需求,可用库提供了8种不同的仿真配置项与模型设计模板。仿真配置项包括仿真迭代算法、仿真步长、诊断选项设置等。配置项通过reference的形式被模型引用,用户不能修改。
模型发布时,配置管理的对象以模型为中心,包括模型与数据定义文件、用例与仿真工程、静态检查报告与设计报告。模型发布后应能够独立仿真并生成代码,若模型中调用了手写代码或反包装的S-function,则应将被调用文件一同发布。工具自动生成的文件不允许人为修改;若要修改,需先修订模型后通过工具再次生成。表2给出了具体的模型发布文件要求。
表2 模型发布文件要求
设计标准的条款分为强制项与建议项,强制项必须执行,否则需说明理由;建议项为参考项,可根据实际情况决定是否遵守。Matlab/Simulink提供了静态检查工具包Model Advisor,对条款进行自动化检查。中航工业商发对Model Advisor工具包进行了裁剪,并开发了新的检查项,以最大程度实现条款自动化检查。该检查包并未覆盖所有条款,对于未覆盖到的条款采用人工方式检查,并在检查报告中给出结论。
MBD开发流程的优势表现为:第一,将系统总体、部件设计专业加入到软件设计过程中,将其需求通过MBD模型转化为软件产品,建立了良性开发组织;第二,将需求与设计数据由文本化形式转化为模型,以模型作为沟通介质,减少理解差异引入的错误;第三,编码过程由人工编码变为由模型自动生成代码,避免由人为编码习惯引入的错误;第四,强化需求和设计的验证,将验证工作提前,尽早发现并解决问题。
项目实施过程中,积累了如下经验。
①保持工具版本稳定,避免在模型集成联调时报错;确保同一基线中的模型运行环境一致,生成代码风格一致。
②流程、标准、工具手册需定义清晰,并定期开展培训。项目反馈的经验应尽早落实到流程与标准中,并及时宣贯到位。
③指定特定人员维护模型可用库,及时修正各个项目发现的库缺陷,避免同一问题在不同项目中反复出现。
基于MBD的软件开发技术才起步,目前该方法仍然面临诸多挑战。
①系统设计与软件设计紧密结合,界面定义模糊,软件需求层级划分及其验证手段和目标不够明确;
②技术状态管控难度较大,集成人员无法获取准确的模型版本,模型与代码的版本一致性难以保证;
③工具链集成程度不够,依靠人为过渡的环节较多,对标准的自动化检查力度不够,工作效率较低。
中国航发商发经过3年多的项目实践,建立了MBD软件开发流程,并通过工具链有力地支撑了流程的落地。该MBD软件开发流程是有效、可行的,采用该方法有利于提升软件质量、加快软件研制进度。后续工作重点在工具链的定制开发以及适航要求的落实。
[1] 方伟,周彰毅.Scade在航空发动机Fadec软件开发中的应用[J].航空发动机,2016,42(5):43-47.
[2] TAMBLYN A S,HENRY E J,KING E .A model-based design and testing approach for orion gn&c flight software development[C]//IEEE Aerospace Conference,2010:1-12.
[3] 马恩,刘富荣,王鸿钧.基于MBD的商用航空发动机控制软件架构设计[J].航空计算技术,2013(6):95-99.
[4] 王钊.功能模块的设计与应用研究[J].自动化仪表,2015,36(11):4-7.
[5] HART J,KING E.Orion gn&c architecture for increased spacecraft automation and autonomy capabilities[R].Honolulu:AIAA,2008.
[6] RAYMOND G,ESTRADA J R,GEN S. Best practices for developing do-178 compliant software using model-based design[C]//AIAA Guidance,Navigation,and Control and Co-located Conferences,2013.
[7] 祝轲卿,王俊席,吴晨楠,等.基于Targetlink的嵌入式系统控制软件开发[J].系统仿真学报,2007,19(7):1476-1479.
[8] IMON C.Development of a modeling and simulation environment for real-time performance analysis of electric actuators in maneuvering flight[C]//USA:51st AIAA Aerospace Sciences Meeting Including the New Horizons Forum and Aerospace Exposition,2013.
[9] KEISHI T,MINA S,YASUSHI A M.Applying model-based development(MBD) to embedded systems[C]//Structural Dynamics,and Materials Conference,2014.
[10]SCOTT A K.Model-based design strategies for real-time hardware-in-the-loop rocket system simulations[C]//USA:AIAA Modeling and Simulation Technologies Conference,2012.
Model-Based Developing Approach for Airborne Software of Commercial Engine
LIU Furong
(R&D Center,AECC Commercial Aircraft Engine Co.,Ltd.,Shanghai 201108,China)
With the development of simulation technology and software engineering,the model-based design (MBD) approach for software has been applied to full rights electronic control software of foreign commercial aircraft engines,to solve the difficulties of classical software development process.But this technique is just getting started in China.Aiming at the problems existing in classic software development process,based on MBD,the classical software development process is optimized from three aspects,i.e.,personnel organization,development process and tools; and the disadvantages of classical software development process are resolved.The transform of development organization and development process is introduced; and model-based software design process has been defined; and the personnel,work basis,activity and output involved in each work phase of the process are described; the development tools and the model design standards based on Matlab/Simulink are introduced; and correctness and feasibility of the method are verified.The superiority of MBD for software and project practical experiences are summarized,and the challenges and follow-up priorities of this approach are discussed.
Aerospace; Engine; Airborne software; Design process; Model-based design(MBD); Design standard
刘富荣(1984—),女,硕士,工程师,主要从事航空发动机控制系统、机载软件开发及其适航技术的研究。 E-mail:lfr1204@163.com。
TH701;TP311
A
10.16086/j.cnki.issn1000-0380.201706007
修改稿收到日期:2017-02-08