网站首页 公文大全 个人文档 实用范文 讲话致辞 实用工具 心得体会 哲学范文 总结范文 范文大全 报告 合同 文书 信函 实用
  • 汇报体会
  • 节日庆典
  • 礼仪
  • 毕业论文
  • 评语寄语
  • 导游词
  • 口号大全
  • 其他范文
  • 百花范文网 > 实用范文 > 其他范文 > 基于模型驱动构件库的飞行控制软件工厂研究

    基于模型驱动构件库的飞行控制软件工厂研究

    时间:2023-06-29 11:15:05来源:百花范文网本文已影响

    陈宣文, 马 超, 马 倩, 孟 强

    (航空工业西安航空计算技术研究所,陕西 西安 710068)

    1968年,在北大西洋公约组织(North Atlantic Treaty Organization,NATO)召开的软件工程会议上,首次提出了软件危机(Software Crisis)的概念[1]。会议上,Mcllroy 提交了一篇题为《Mass-Produced Software Components》的论文,首次提出了软件构件(Software Components)和构件工厂等概念,指出软件复用的一个重要基础就是需要有充足的软件构件,NATO 制定了关于软件复用的一套指导性标准,其中就有关于构件的定义和利用标准构件来实现软件复用的基本思路。2011年12月13日,美国航空无线电技术委员会(Radio Technical Commission for Aeronautics,RTCA) 正式发布了DO-331《Model-Based Development and Verification(基于模型的开发与验证指南)》,标志着该技术在工程应用领域的成熟[2]。基于模型驱动的开发技术不仅在国外机载飞控、显控软件被广泛运用,在国内民机软件研制中也在推广应用。例如,新舟600、ARJ21等型号的显控系统软件研制采用了Simulink 模型开发,C919 飞行显控软件研制也采用了SCADE 模型开发[3]。近年来,航空工业集团及其各院所对软件的重视程度不断提升,提出软件“三化”(通用化、系列化和组合化(模块化)的要求[4]。美国国防部也为美空军的软件现代化进程组建了越来越多的软件工厂。目前,已有针对基于模型驱动的软件开发技术、软件构件产品库复用技术和软件工厂流水线技术的探索研究和实现,但是鲜见能把这三者有机结合在一起的方案。完整软件生产模式使用了最先进的基于模型驱动设计技术,同时考虑了复用/定制功能,并且建设了规模化的构件产品库,在可视化的管理平台上采用软件工厂流水线模式。为进一步提升型号飞行控制软件开发效率、质量和工程化能力,把已经成为未来趋势的基于模型的软件开发设计技术运用到软件工厂的构件库建设中,并进行规模化的应用,开展了基于模型开发结合构件库的飞行控制软件工厂的研究并加以实现。

    首先,对传统飞行控制软件架构进行了分解,分析了飞行控制软件构件化的需求,给出了基于模型驱动开发构件库的基本概念,并与传统软件开发方法和过程进行了对比分析;
    然后,针对飞行控制软件快速开发需求,对飞行控制软件进行分层和领域构件化分析,建立了软件开发平台框架,详细讨论了基于模型驱动开发的构件库支持的软件工厂的关键技术,提供了在可视化智能向导配置构件的管理平台快速形成飞行控制软件整体解决方案的工程化能力。

    飞行控制软件驻留在飞控计算机中,接收飞机的姿态、速率、控制、导航、空速和发动机状态等信号,进行控制状态选择、控制律计算和余度管理工作,向伺服放大器和伺服回路输出控制信号,向电子飞行仪表系统输出状态信号,实现对所有飞行控制功能的计算和管理,飞行控制软件总体架构如图1所示。飞行控制软件包括以下几个部分。

    图1 飞行控制软件架构

    ① 地面支持软件是一套支持嵌入式实时操作系统的开发环境,可以使用开发环境完成应用程序的编译、连接、加载和调试工作。

    ② 实时操作系统是飞控计算机的系统管理软件,管理着系统中应用软件的工作过程和任务的执行顺序,具有快速实时响应、异常/看门狗处理、多任务调度、动态存储器管理、二进制信号量、互斥信号量、消息队列、系统时钟、辅助时钟支持能力和可剪裁能力。当飞控计算机硬件发生变化,系统可通过板级支持包BSP增、减以及修改相应的驱动程序,从而生成新的操作系统。

    ③ 飞行操作软件是飞控的应用层软件,完成系统的启动/关闭、任务管理、硬件管理、余度管理功能,根据离散量状态选择某一确定飞行模态,进行相应控制律计算,通过D/A输出将控制指令送给伺服放大器去控制舵机。

    ④ 自动驾驶仪系统机内自检测(Built-In Test,BIT),是计算机系统用于检测系统各个硬件的功能和性能的所有软件与硬件的总称。BIT用于检测计算机系统的功能和性能,可作为系统维护检测与确认故障的重要手段。

    随着多余度飞行控制软件架构规模和复杂度的急剧增加、安全性可靠性的要求大幅提高和软件工程化管理要求的日益严格,传统的飞行控制软件开发过程中存在如下问题。

    ① 飞行控制软件在需求分析阶段不能有效进行需求复用,在设计阶段无法有效实现构件复用,开发阶段软件人员对代码仅仅是自发地选择复用,没有进行提前规划,这样“复用”以后的软件仍然需要进行完整的单元、配置项测试和系统测试等过程验证。

    ② 飞行控制软件体系架构中领域专业相关的通用算法逻辑与型号定制算法逻辑没有实现完全解耦,不具备良好的可扩展性,导致在开发具体项目的飞行控制软件时,往往需要根据项目特定需求对通用算法进行适应性更改,影响了软件的可靠性,缺乏体系级别的复用。

    ③ 在飞行控制软件的数据输入端口,存在大量传感器信号、离散开关信号和总线信号等复杂信号且交联关系烦琐,缺少可复用的高可靠飞行控制软件基础构件,通过传统人工编码方式实现数据采集/还原工作量大且容易出错。

    ④ 目前的飞行控制软件与具体的机载操作系统、硬件驱动接口紧密关联,如果系统实验环境不具备,缺乏仿真环境会使余度管理软件难以进行有效的早期验证。

    综上所述,采用传统的飞行控制软件开发方式将导致“三化”成果无法融合,研制新的飞行控制软件项目时手工选择复用组织资产库从头开始研发,效率低、风险大,工具、数据独立缺少集成,无法自动共享和建立关联关系,数据操作切换频繁,集成开发环境(Integrated Development Enviroment,IDE)与应用无关,领域支撑力度不够。因此,需要在现有的能力基础上,借鉴国外先进技术,学习和掌握新一代基于模型和构件的软件研发和管理技术(例如,模型开发仿真技术、可定制快速原型仿真技术、全模态综合调试验证技术、多团队统一开发和管理工具链技术的软件流水线/工厂),将验证充分的软件模型和构件放入数据/产品库,后期研发时,只需逐级分解需求,根据需求配置、组装已有的软件模型和构件即可,采用该方式开发的软件复用度高、软件缺陷率低,可以大幅提升软件研发能力,提高软件成熟度,满足新一代产品研发需求。

    为了提升飞行控制软件的研制工程支撑能力,根据构件的设计准则,对飞行控制软件功能、性能、软件和硬件组成及接口关系进行领域工程建模,对飞行控制软件的共性通用部分和型号定制部分解耦后进行分层和领域构件化分析,如图2所示。

    图2 飞行控制软件构架设计

    ① IDE内核层。支持多目标机的软件编译器、系统调试、结果观测和结果记录等功能的调试;
    支持多余度的动态加载器和固化器,为用户提供目标文件的烧写固化、擦除、校验、查询校验码等功能,是软件工厂开发平台的基础。

    ② 操作系统层。该层包括MSL设备管理器、OS内核管理器和任务蓝图规划。其中,MSL设备管理器可对串行通信构件、网络通信构件、看门狗构件、离散量构件、模拟量构件和总线通信构件等进行配置;
    OS内核管理器包括时间触发操作系统、实时分布式操作系统和分时分区操作系统;
    任务蓝图规划可根据选定的内核,提供智能导向式内核配置、任务规划和速率组。

    ③ 领域设计层。通过推动软件“三化”设计,形成系列的软件“三化”构件,按照领域构件化设计思想进行优化设计,形成以同步构件、交叉传输构件、数据采集/还原构件、余度管理构件、BIT构件、滤波器构件和惯性结算构件为代表的系统构件和构件设计器。

    ④ 型号定制层。该层为不可复用的功能提供基于模型设计和手工编码的设计和导入入口。

    对飞行控制软件进行分层和领域构件化分析后,可以逐层进行操作系统、领域设计和型号定制部分的需求分析和软件设计,有效地分解和复用通用需求库中的共性需求,完成完整的软件需求分析过程。领域构件应形成底层模型库和构件库,并可对构件进行选取与组装,从而搭建完整的飞行控制软件架构。利用管理平台相关的工具链生成飞行控制软件的目标程序和文档,快速形成飞行控制软件整体解决方案,最后可以依托操作系统与数据接口,并结合仿真数据,即使在系统硬件环境不具备的情况下,也可以在早期有效地完成飞行控制软件的验证与测试。

    2019年时任美空军采办、技术和后勤的助理部长威尔·罗珀称“美空军要在21世纪突破机载软件工作方式的界限,为军种开辟出新的道路并使软件日益成为制胜优势的来源”。凯塞尔航线是美空军首个软件工厂,正式名称是美空军寿命周期第12支队。该软件工厂希望通过快速提高空军软件开发、采购和装备速度,将长达数年的时间线缩短到几个月,并在开发过程中节省资金。2022年2月,美国防部发布《国防部软件现代化战略》明确了美国军方“建立美国防部全部门的软件工厂生态系统的愿景目标”,这时美空军已经建立了18个软件工厂,如图3所示。可以说在美国防部软件现代化方面,美空军已经走在了前列[5]。

    图3 美军18家软件工厂在美国大陆分布图

    使用软件工厂的生产流水线技术快速开发飞行控制软件的目标是在项目研制过程中直接使用被重用的构件时,研制流程不再进行需求分析、软件设计、编码、单元测试、软硬件综合测试、系统测试、软件评测等重复工作;
    软件开发人员有更多精力开展验证、开发管理、软件自动生成等关键性技术工作;
    促进飞行控制软件研制走上软件产品化、标准化的道路,建立现代工业流水线生产模式的飞行控制软件研制工厂[6-7]。

    飞行控制软件开发可以在模型驱动构件化支持的软件工厂管理平台完成,软件工厂管理平台提供智能向导化的可视化配置流程,由开发者进行构件选取、配置来搭建飞行控制软件架构。IDE内核层已经固化使用方式,仅需要简单配置实际参数就可以使用。遵循自底向上集成的原则,开发者按照开发流程顺序进行飞行控制软件整体架构的搭建,如图4所示。首先,应进行操作系统的选型和配置,然后选取和配置领域构件,最后完成型号定制部分。

    图4 飞行控制软件工厂开发流程

    3.1操作系统

    3.1.1 MSL设备管理器

    在飞行控制系统领域中,将在MSL设备管理层识别出的领域构件按照操作系统构件定义进行了生成与发布,并将系统资源按照不同功能进行划分。MSL设备管理包括串行通信构件、网络通信构件、看门狗构件、离散量构件、模拟量构件、总线通信构件、时钟构件、中断处理构件等CPU系统资源。

    以总线通信构件为例,系统总线资源构件包括:① 低速串行总线构件;② 1553B 总线构件;③ 高速1394B 总线;④ 高速FC 总线构件;⑤ 高速DMA 传输构件;⑥ XML 能力构件。

    如果选用的操作系统是VxWorks,则与飞控系统底层设备相关的总线资源构件均应按照VxWorks 操作系统标准I/O 设备操作规范编写,从而保证设备的操作接口的规范化。

    以高速1394B总线为例,1394B总线领域构件在VxWorks 5.5 构件配置树(Tornado 2.2集成开发环境)中的表现方式如图5所示。

    图5 Tornado/VxWorks环境下1394B总线构件的实现

    3.1.2 操作系统内核管理器

    根据选定的内核,提供智能导向式内核配置、任务规划和速率组可视化配置,为飞行控制软件的应用层提供支撑。在平台上对任务完成执行周期、任务参数、执行时间和任务栈等属性进行配置,并将任务调度周期可视化显示,如图6所示。

    图6 任务调度管理配置

    3.1.3 操作系统任务蓝图规划

    操作系统任务蓝图规划如图7所示,包括以下需要配置的内容。

    ① 任务设置。可对启动任务、任务基础速率、各个任务的速率设置和后台任务进行设置。

    ② 系统剩余时间设置。对系统剩余时间进行设置,以满足余量要求。

    ③ 健康监控设置。健康监控定义并分类飞控系统中所发生的错误,分别在3个层次(进程级、分区级和模块级)根据错误发生时的系统状态,执行相应的错误恢复策略。

    ④ 非屏蔽中断设置。对系统各级非屏蔽中断的属性进行设置,例如中断号、中断向量和连接中断处理程序。

    ⑤ 高速缓存设置。对高速缓存总线的类型、余度配置、波特率等属性进行设置。

    ⑥ 系统同步设置。对系统工作的同步总线进行设置,包括初始同步和周期同步。

    图7 系统任务蓝图规划

    3.2 领域构件配置界面

    在各领域共性构件库支持下,进行领域构件可视化配置,包括整体配置、信号输入定义、总线及设备定义、离散量管理配置、数字量管理配置、传感器管理配置、计算机管理配置、伺服器监控配置、积分器均衡、故障记录、故障码定义、故障综合等。

    以传感器管理配置为例,如图8所示,对传感器的以下各属性进行配置。

    ① 对传感器信号的定义管理,包括新建、改名、确认和删除等操作。

    ② 传感器信号余度配置,包括是否单信号工作,是否带有自监控信号、门限是否可变等。

    ③ 各余度传感器监控时延设置,主要对时延格式进行设置。

    ④ 传感器监控所属的表决速率组、监控速率组,以及瞬时故障区设置等。

    ⑤ 传感器信号出现故障时的运算安全值策略预设,可选择表决值、历史值、安全值和计算插值。

    图8 领域构件配置

    在具体领域进行设计开发时,可以根据项目需求在领域构件可视化配置界面进行选型与配置,快速搭建飞行控制软件解决方案。

    在飞行控制软件领域的具体应用中,根据领域应用的具体需求,在可视化界面完成参数化模块配置后,构件层在通用构件库中检索相关构件,进行基于标准接口进行构件的快速复合组装。基于领域工程的领域构件技术利用了领域工程的功能内聚性和稳定性等特点,有利于提高软件的复用效率和软件质量。

    3.3 型号定制

    早期的飞行控制软件开发方式是根据文字化、条目化的需求进行自顶向下逐步分解、设计,之后手工编码完成,这种项目开发方式的可视化和效率较为低下。现在,由于经常面临紧迫的交付周期和激烈的团队竞争,设计、编码和测试过程高度交叉,软件的规模也日趋庞大,为了将软件设计人员从复杂的编码工作中解放出来,将工作的重心转移到飞行控制软件的安全性、可靠性等关键需求分析上,有必要采用更高效的软件设计方式。

    基于模型驱动的开发使用更接近于人的理解和认识的模型,将需求与设计数据由文字描述的形式转换为可视化的模型,有利于设计人员把注意力集中在系统工作逻辑相关的内容,而不用过早考虑与平台相关的实现细节,并且在开发周期的早期验证设计、测试用例和收集覆盖率指标。实现环节通过自动代码生成和自动代码检查提高软件质量,并且可以运用工具链使用自动设计的测试用例进行测试和检查。即使是当前不可复用的定制部分,仍然采用复用规范过程进行开发和管理,并在完成软件测试后进入产品目录、构件产品库和模型库。

    模型驱动构件可定制开发技术的优点有:可显著提升软件按需定制和随需应变的能力,使流程、数据、规则、资源和界面等构件要素实现了分离,减少了手工编程工作量,提高了软件开发效率,降低了软件开发和维护成本;
    降低对软件开发人员要求,系统手工编程工作量的减少,使大部分软件开发者能完成大部分模型定制工作;
    提高业务管理软件的可靠性和可维护性,系统可靠性主要体现在模型定制、模型转换和运行支撑等工具的可靠性上,而传统手工编程方式难以保证业务软件的可靠性,同时会导致系统内部和第三方测试的工作量增加。另外,当业务需求发生变化时,只需调整相应业务模型即可,系统可维护性也得到提高[8]。

    针对具体项目的定制化需求,应用模型化设计,通过模型与需求对接,提升软件设计、仿真验证,形成了模型标准,纳入软件设计标准,规范了软件模型设计,制定的开发规范包括:① 《模型命名方法》;
    ② 《模型安全性设计方法》;
    ③ 《模型外观设计方法》;
    ④ 《状态机设计方法》;
    ⑤ 《模型输入输出方法》;
    ⑥ 《模型库的使用》。

    基于模型开发的主流工具包括SCADE和MATLAB/Simulink等,SCADE以高安全性领跑于模型开发领域,代码生成器KCG通过了航空领域的DO-330(TQL-1)、核能行业领域的IEC 60880(核安全级)、轨道交通领域的EN 50128(SIL-3)等标准并在高安全性行业应用[9-10];

    MATLAB/Simulink应用广泛,拥有众多自带模型库、算法库、控制系统、环境模型以及优秀的专业协同设计兼容性,可以完成产品级别的联合仿真、建模、设计、测试和报告平台集成工作。以MATLAB/Simulink开发环境为例,基于模型的设计和形式化方法在符合DO-178C、DO-331、DO-333和DO-330的过程中,MathWorks工具可用于DO-178C项目的开发和验证阶段。Simulink®、Stateflow®和Requirements ToolboxTM被用于开发符合DO-331基于模型的开发和验证的软件。根据DO-331和DO-178C的要求,Simulink Report GeneratorTM用于提供设计描述文档和跟踪数据。通过Simulink CheckTM、Simulink TestTM、Simulink CoverageTM和Simulink Design VerifierTM对设计进行验证。使用MATLAB CoderTM、Simulink CoderTM和Embedded Coder®开发系统的源代码。使用Simulink Code InspectorTM、Polyspace Bug FinderTM和Polyspace Code ProverTM对源代码进行验证。可执行的目标代码的验证是使用Simulink Test和Simulink Coverage以及处理器在环(Processor in the Loop,PIL)中的测试功能来执行的。图9为覆盖DO-178C/DO-331 过程的MathWorks完整工具链路径[11]。

    图9 覆盖DO-178C/DO-331 过程的MathWorks工具链路径图

    以飞控系统的工作状态管理为例,飞行控制软件在飞控系统工作全状态下对5种工作状态切换进行验证。在对逻辑实现内容进行分析的基础上,利用Stateflow 来实现状态切换,并与Simulink 有机结合,共同建立了驾驶仪工作状态仿真和应用,同时对Simulink/Stateflow/Model Advisor/Bug Finder工具链进行了验证使用,最后对模型自动生成的代码进行了优化,整个工作状态仿真过程和结果如图10所示。由Stateflow 所建立的图形化模型逻辑结构简洁、清晰,可用Simulink/Stateflow进行早期验证,提高开发效率,缩短开发时间,自动生成的代码经过验证和检查,表明其可满足飞行/仿真要求。

    图10 飞行控制软件工作状态验证仿真

    综上所述,对现有飞行控制软件开发模式进行了对比和分析,如表1所示。探索、研究和实践目前是基于模型驱动构件库的软件工厂的开发模式,采用了先进的开发方法和手段,对飞行控制软件的通用部分和领域部分进行了解耦,在可视化智能化导向配置平台的支持下,对模型开发形成的构件库可以进行有效配置和复用,在软件开发模式上和美军软件工厂模式保持同步,可以供业内软件研发单位参考,进行工程化推广应用。

    表1 几种飞行控制软件开发模式的对比

    构件产品库的开发应遵循一系列模型驱动构件的开发规范,例如面向复用与共享的软件需求分析规范、面向复用与共享的软件构件设计规范、代码复用工作流程及管理规范、面向复用与共享的软件测试工作规范等。

    基于模型开发的构件支持产品库,在已经拥有可复用构件后,还应保证设计开发人员能够快速、容易地找到和理解,这就是构件产品库的主要作用。构件产品库是用于组织、存储和管理可复用组件的。在建立构件产品库的同时,还需要建立配套的分类、检索和复用的目录,并可以对构件进行新建、检索、更新和删除的操作,以及对其进行有效的配置管理[12-13]。

    与传统的飞行控制软件开发流程相比,基于模型驱动构件库的软件工厂的开发模式可以大幅提高飞行控制软件的开发效率。在软件工厂协同开发管理平台的支持下,对飞行控制软件进行可视化分析和配置,可有效复用通用需求库中的共性需求,并可针对项目专用需求进行型号定制需求分析。在软件设计阶段,根据共性需求从通用领域构件库中进行构件选取与组装;
    其次根据项目型号定制需求完成定制部分算法模型的开发,快速形成飞行控制软件整体解决方案,并且可以进行早期验证和测试。实践证明,基于模型驱动构件库的软件工厂的开发模式可以提高飞行控制软件研发的安全性与可靠性,缩短软件开发与验证的周期。

    猜你喜欢工厂构件领域2020 IT领域大事记计算机世界(2020年50期)2020-01-15领域·对峙青年生活(2019年23期)2019-09-10建筑构件国际木业(2016年8期)2017-01-15建筑构件国际木业(2016年12期)2016-12-21建筑构件国际木业(2016年3期)2016-12-01建筑构件国际木业(2016年1期)2016-12-01为什么工厂的烟囱都很高?小学阅读指南·低年级版(2016年1期)2016-09-10新常态下推动多层次多领域依法治理初探中共南宁市委党校学报(2015年4期)2015-02-28离散制造MES在照明工厂的实施与应用自动化博览(2014年6期)2014-02-28肯定与质疑:“慕课”在基础教育领域的应用中国音乐教育(2014年7期)2014-02-06

    相关热词搜索:构件 飞行 模型

    • 范文大全
    • 说说大全
    • 学习资料
    • 语录
    • 生肖
    • 解梦
    • 十二星座