基于实时操作系统的多核分布式飞行软件架构设计

2023-03-13 02:35孙雪娇刘学士束韶光
航天控制 2023年1期
关键词:间通信应用层实时性

孙雪娇 刘学士 束韶光

北京航天自动控制研究所,北京 100854

0 引言

随着末制导技术、总线技术、系统冗余技术的应用,控制系统功能的复杂多变,导致飞行控制系统的软件规模日益庞大,传统单CPU的中断+控制环模式无论从性能还是容错能力方面都已经无法满足现代任务的需求。随着飞行控制软件系统结构越来越复杂,软件的复杂程度也迅速增加。传统的软件架构已经力不从心,尤其在多个控制任务并发时,调度难度增大,难以保证系统可靠性、实时性要求。

本文从功能和性能需求出发,提出了一种基于战星实时操作系统的多核分布式飞行控制软件架构设计方案,以4核DSP为硬件平台,设计了具有高可靠性高实时性的多核分布式飞行控制软件架构,提高了飞行控制系统的处理能力和容错能力。该飞行控制软件架构开发维护方便,扩展性和可移植性强。

1 研究现状

无人机的飞行软件架构发展较早,美国Cloud Cap公司自主研发的无人机的飞行控制系统Piccolo具有很高的灵活性和可靠性,在国内外的小型无人机系统中得到了多次应用[1]。加拿大的MicroPilot公司设计了一款性能良好、体积小、功耗也低的飞行控制系统MP2028g,该飞行控制系统集成了多种类型的传感器,已成功应用于Snake eye、Helispy等多款小型无人机[2]。

欧洲空间局(European Space Agency,ESA)的航天航空开放接口架构(Space Avionics Open Interface Architecture,SAVOIR)是在主控单元中基于 CPU 的系统软件平台。它构成了一个通用软件执行平台,支持上层应用,下层使用不同的接口。应用层根据各自的专业特征构建不同的应用模块。

美国国家航空航天NASE(National Aeronautics and Space Administration)开发的CFS(Core Flight Software)是一种基于CPU和操作系统之上,可以独立运行的飞行软件架构,该架构可以直接重用,也可根据需要二次开发。CFS可以缩短飞行软件开发的时间,提高质量,减少项目计划和费用的不确定性,提高软件重用率,降低工程维护成本,支持多种跨部门的工具和标准,允许多组织的协同合作。目前CFS架构已经由戈达德推广到NASA所属的各个航天中心和研究机构,以及日本和韩国,应用在一些航天任务中,如月球勘测轨道器、全球降水测量卫星任务等。

近年来国内飞行控制系统领域也取得了较多研究成果。北京航天控制技术研究所提出了一种基于构件的运载器控制系统飞行控制软件架构[3],该软件架构采用分层的控制体系及结构模式,能够有效提高飞行软件的研制效率及软件质量。重用技术可以提高软件的质量和可靠性,缩短任务研制周期,降低成本[4]。为了改善飞行控制软件传统的前后台开发模式,适应“多模式”、“多冗余”的需求,研究多任务的实时操作系统成为了重点。

2 飞行控制软件需求分析

2.1 功能需求分析

飞行控制软件的主要功能是实现飞行器在飞行过程中的实时控制算法,包括:输入信息的采集、转换、导航、制导、姿控、组合导航及时序控制等功能。飞行控制软件功能需求越来越复杂,对飞行控制软件的各种要求也越来越高,一方面要求飞行控制软件能够实时采集传感器和外围设备信息,获取当前飞行器的飞行状态,进行制导律和控制解算,并根据解算结果实现点火、转级、关机等飞行指令,同时还要求飞行控制软件能够将飞行状态信息和控制信息等数据发送至遥测系统。另一方面要求飞行控制软件能够实现对多种功能的管理,包括传感器数据信息的综合管理、故障检测功能管理等,飞行控制软件需要对这些功能模块进行统一管理,使其有机结合并有序运行,保证飞行器能够高效完成要求的飞行任务[5]。

2.2 性能需求分析

飞行控制软件高性能和高可靠性是安全完成飞行任务的重要保障,因此飞行控制软件的性能应满足如下条件:

1) 实时性要求

实时性是飞行控制软件基础的要求之一,飞行控制软件中所有任务都有严格的时间性能指标。例如对于执行机构输出延时和控制周期总延时,如果飞行控制软件实时性超标或较差,可能导致飞行控制系统无法正常工作,甚至可能会造成灾难性后果[6]。

飞行控制软件任务要求多而杂,既包含多种周期性任务,也包含各类非周期性的任务,对于多个CPU分布运行的飞行控制软件还需要考虑各CPU间的通信任务。因此为了能够保障飞行控制软件的实时性,需要综合考虑所有任务执行的时序和要求,合理创建、分配及调度任务。

2) 高内聚低耦合要求

在传统的飞行控制系统开发时,划分的功能模块之间常有很高的数据耦合性,因为单个功能模块的开发往往需要综合考虑其他模块的影响、各个模块之间的调度关系以及各个模块的安全性,导致软件开发时间变长,开发成本增加,研制效率降低。

因此有必要降低各个模块之间的耦合性,使各个功能模块专注于封装自己的内部属性。功能模块之间相互独立能够使飞行控制系统更加安全和可靠。

3) 可靠性要求

由于飞行任务及飞行环境复杂多变,飞行过程中的微小不确定因素都有可能造成系统巨大故障,因此必须要求飞行控制系统在出现异常情况时,能够及时准确识别故障、处理故障,提高飞行控制软件容错性,保证飞行控制软件完成要求的任务时不受部分故障的影响,确保飞行器安全可靠飞行。

4) 可扩展性与可维护性要求

传统的飞行控制软件各个功能模块的信息交互非常复杂,扩展功能会导致整个系统发生变化,造成一定的不确定性。

因此要求飞行控制软件有良好的可扩展性、可维护性和继承性,使软件的设计、调试和维护更加方便快捷。

3 飞行控制软件框架设计

3.1 总体架构设计

基于上一节的功能性能需求分析,本文结合飞行控制计算机硬件平台,设计了基于战星实时操作系统的飞行控制软件设计方案。飞行软件架构分为5层,从下到上依次为:操作系统层、硬件接口层、框架层、应用层、重用构件层,通过各个部分之间协调运行实现软件整体功能。飞行控制软件架构结构图如图1所示。

图1 飞行控制软件系统结构图

3.2 操作系统层

操作系统采用战星实时操作系统,该系统是由北京航天自动控制研究所自主研发的实时多任务操作系统,具有以下特点:

1) 多任务调度管理,支持可抢占调度策略,最多可管理256个任务;

2) 透明通信、时间管理、内存管理等功能;

3) 可裁剪、可定制;

4) 支持多种处理器。

战星实时操作系统微内核完成任务管理、调度,任务间通信、系统时间管理、内存管理、SDP核间通信等功能。

3.2.1 任务管理

操作系统实时内核需要满足飞行控制软件实时处理多任务的需求,因此必须支持多任务并行管理,并为这些任务分配栈空间,制定优先级,每个任务提供以下3种状态:就绪态、运行态和挂起态,并保证任务在各状态间正确切换。

操作系统的内核负责管理各个任务之间的通信和调度切换,同时为每个任务分配相应的CPU时间。由于实时性要求很高,响应时间要尽量短,操作系统内核采用可剥夺型内核,确保最高优先级的任务一旦就绪就可以被调度运行,得到处理器的控制权。

用户可以依据需求进行任务的创建、删除、挂起、恢复和调度等。

3.2.2 任务间通信

战星实时操作系统的任务间通信功能提供透明的、任务到任务的消息传输。操作系统将任务间通信消息封装成消息块,包括消息块的申请、释放、发送、接收、入队列和出队列,以及请求接收任务答复、答复发送任务、消息通信任务挂起、消息通信任务恢复,任务间通信流程。如图2所示。

图2 任务间通信流程图

3.2.3 时间管理

战星实时操作系统提供时间管理功能,用于任务延时、超时判断、获取系统执行时间等。按照设定的时钟节拍中断处理函数实现了时间管理的相关功能。其中,时钟节拍由特定频率的硬件定时器产生,中断频率一般为10~100 Hz。时钟中断频率如果较高,系统开销也较大,因此一般根据应用的需要设置合适的中断频率。

时间管理功能包括:时钟中断处理程序、任务延时、获取系统时间、改变系统时间等。

3.2.4 内存管理

战星实时操作系统提供内存管理功能,包括内存分区管理,新建内存分区,内存块的申请、释放等。

3.2.5 SDP核间通信

针对多核处理器,战星实时操作系统提供SDP系统服务用于DSP核间通信。SDP核间通信实现核间数据的交互,通过共享内存交互数据并同步控制逻辑。共享存储体用于传输数据,信号灯控制两个DSP核之间的同步。战星实时操作系统将SDP作为一个系统服务驻于内核中。

核间任务需要通信时,任务先将消息发给SDP服务,SDP服务将消息写入对应存储体,置信号灯,然后向目的DSP核发送中断,通知其接收消息,目的DSP核响应中断从存储体读出消息再发送给相应任务。

SDP核间通信功能包括:SDP系统服务注册、SDP核间通信全局ID路由,IPC消息接收中断程序及SDP核间通信系统服务。

3.3 硬件接口层

硬件接口层实现CPU初始化、定时器使用、开关量输入、指令输出、总线通讯、串口收发、双口RAM收发、DA输出等功能,根据不同的需求使能不同的硬件接口模块。

3.4 框架层

框架层一般由主任务调度,基于框架进行配置项开发,主要完成信息输入、数据处理、测试流程调度、数据输出等功能。

框架层连接硬件接口层及应用层,它将常用硬件接口的使用方式抽象为“数据结构+API函数”的方式,当应用层需要与硬件打交道时,它需要定义相应的数据结构,调用框架的API来通知框架内核要做什么,框架内核会在确定的时机,根据应用层表达的需求,完成对硬件的相关操作。

3.5 应用层

应用层在框架层的基础上由用户进行相关应用模块的开发,根据飞行控制软件的功能需求、实时性需求、接口需求划分多个不同优先级的任务。

对于可以并行执行的任务采用双核或多核的分布式方法,多核之间采用SDP通信,核内任务采用IPC消息。用户只需要关注任务的划分、任务功能实现及任务间的接口。

应用层为用户根据不同需求实现定制化的目标功能,具体包括:测试项目的实现、制导姿控算法的实现、输入输出的调度、时间管理、健康管理等功能。

3.6 重用构件层

重用构件层由基于功能模块的重用构件组成,用于为应用层提供重用服务,重用构件是规模较小、功能较为简单独立的构件。在软件开发周期的每个阶段使用经过测试与认证过的重用构件可以节省成本、降低风险。

构件层由不同类型的重用构件组成,包括数据通信类、数学运算类、通用算法类及制导姿控算法类。

各个构件为相对独立的功能模块,构件隐藏了内部具体实现,只提供接口函数,可以根据需求对构件进行封装或调用。

4 实例分析

本文所提出的飞行控制软件框架适用于多种飞行器软件,以某飞控制软件为例,简述应用情况。

某飞行控制软件运行在4核DSP6713上的两个核上,其中,甲核运行飞控控制软件信息的采集及处理部分,乙核运行飞行控制软件主控部分,包括总线信息采集、开关量采集、串口收发、指令发送、测试流程处理、制导姿控解算、指令输出等内容,两个核之间通过SDP核间通信进行交互,软件架构如图3所示。其中:重用构件层共使用了21个构件,具体如表1所示。

表1 重用构件表

图3 某型号飞行控制软件结构

采用基于本文提出的基于战星实时操作系统的多核分布式飞行控制软件架构,两个核分布式采集数据并计算,采用SDP核间通信进行交互,降低了飞行控制软件的运行负载,提高了性能和可靠性。该软件架构只需要关注应用层开发及层间接口,支持快速开发、可移植性强。

5 结论

分析了弹箭上软件的功能需求和性能需求,除了满足日益复杂的功能需求外,还要求飞行控制软件具有强实时性,强可靠性,高内聚低耦合, 可扩展性可维护性等性能要求。基于功能和性能需求分析结果,提出一种基于战星实时操作系统的分层飞行控制软件架构,共有5层,从下至上依次为:操作系统层、硬件接口层、框架层、应用层和重用构件层。

战星实时操作系统的内核实现各个任务的管理及调度、任务间通信、系统时间管理、内存管理等。硬件接口层实现CPU初始化、定时器使用、开关量输入、指令输出、总线通讯、串口收发等功能,根据不同的需求使能不同的硬件接口模块。框架层主要完成信息输入、数据处理、测试流程调度、数据输出等功能。应用层在框架层的基础上由用户进行相关应用模块的开发,包括项目的实现、制导姿控算法的实现、输入输出的调度、时间管理、健康管理等功能。重用构件层由基于功能模块的重用构件组成,用于为应用层提供重用服务。构件层由不同类型的重用构件组成,包括数据通信类、数学运算类、通用算法类及制导姿控算法类构件。

本文所提出的基于战星实时操作系统的飞行控制软件实时性高、可靠性和安全性高,可移植性强,适用于多种飞行器软件。

猜你喜欢
间通信应用层实时性
基于规则实时性的端云动态分配方法研究
综合航电分区间通信元模型设计研究
基于虚拟局域网的智能变电站通信网络实时性仿真
航空电子AFDX与AVB传输实时性抗干扰对比
基于分级保护的OA系统应用层访问控制研究
新一代双向互动电力线通信技术的应用层协议研究
物联网技术在信息机房制冷系统中的应用
一种车载Profibus总线系统的实时性分析
Current advances in neurotrauma research: diagnosis, neuroprotection, and neurorepair
基于核间寄存器的多核虚拟机系统中虚拟机间通信研究