3. 功能分区的基本概念与原则
在综合航电系统中,功能分区(Functional Partitioning)是把系统需要完成的各项功能,按照一定的边界规则划分成相对独立、可管理、可验证的单元的过程。它回答的核心问题是:哪些功能应该放在一起、哪些必须分开、分开之后靠什么机制保证它们既能共享资源又不会互相破坏。理解功能分区,需要同时把握四个层次的概念:功能分区、功能模块、驻留应用,以及资源共享与隔离。
四个层次概念的含义
功能分区是逻辑层面的划分结果。它依据功能的安全等级、实时性要求、数据耦合程度和更新周期,把系统功能归入不同的分区。例如飞行控制、显示管理、告警管理、导航解算、健康监控等,通常会被划入不同分区。分区本身不是物理设备,而是一组资源约束和调度约束的集合。
功能模块是分区内部进一步拆分的实现单元。一个分区可以包含一个或多个功能模块,模块之间通过明确定义的接口交互。模块划分更关注软件工程意义上的高内聚、低耦合,例如把导航解算分区拆成惯导数据预处理模块、卡尔曼滤波模块和位置输出模块。
驻留应用是运行在分区之上的具体软件实体,是分区资源的实际使用者。一个驻留应用通常对应一个可加载、可调度、可独立验证的软件配置项。分区为驻留应用提供时间窗口、内存空间和通信端口,驻留应用则在分区边界内完成自己的计算任务。
资源共享与隔离是分区设计的一体两面。资源共享指多个驻留应用共用同一处理器、同一总线、同一存储介质,以提高资源利用率、降低重量和功耗;隔离则指通过时间隔离、空间隔离和通信隔离,保证一个分区的故障、超时或数据异常不会传播到其他分区。没有隔离的资源共享会带来故障扩散,没有共享的隔离则会导致系统臃肿,二者必须同时设计。
分区设计对安全性的影响
安全性关注的是“故障发生后系统是否仍然安全”。分区设计通过三条路径提升安全性。第一,故障 containment:当分区 A 中的驻留应用出现死循环或内存越界时,分区调度器可以在其时间窗口耗尽后强制挂起该分区,并触发健康监控,而分区 B、C、D 继续按原调度运行。第二,安全等级匹配:不同分区可以承载不同 DAL(Development Assurance Level)的驻留应用,高安全等级功能与低安全等级功能在空间上分离,避免低等级软件的缺陷污染高等级功能。第三,可验证性:分区边界清晰后,每个分区可以独立进行最坏执行时间(WCET)分析和资源预算验证,安全性论证不再依赖对整个系统的整体性证明。
以某综合航电平台为例,假设分区 A 承载飞行控制律,周期 20ms,预算执行时间 6ms;分区 B 承载显示管理,周期 50ms,预算 12ms;分区 C 承载导航解算,周期 100ms,预算 25ms。调度器按主时间帧 100ms 组织,A 每帧出现 5 次,B 出现 2 次,C 出现 1 次。只要各分区实际执行时间不超过预算,且调度表在离线阶段通过可调度性分析,就能保证最坏情况下所有分区都获得执行机会。这种“预算 + 窗口”的约束,正是分区设计把安全性从“事后测试”前移到“设计约束”的体现。
分区设计对可靠性的影响
可靠性关注的是“系统在长时间运行中持续完成规定功能的能力”。分区设计对可靠性的贡献主要体现在故障隔离与降级管理上。当某个分区连续多次超时或校验失败时,健康监控可以将其标记为失效,并通知其他分区进入降级模式。例如导航解算分区失效后,显示管理分区可以切换到备用导航源,飞行控制分区可以切换到直接法则。由于分区之间通过受控端口通信,降级逻辑本身也可以被限制在健康监控分区内,不会因为降级处理而引入新的耦合。
此外,分区设计支持冗余驻留应用的独立部署。同一功能的不同冗余版本可以放在不同分区中,避免共因故障。例如主惯导解算与备份惯导解算分别驻留在分区 C1 和 C2,二者使用不同的数据源和不同的算法实现,即使其中一个分区出现软件缺陷,另一个分区仍可提供可用输出。
分区设计对可维护性的影响
可维护性关注的是“系统在生命周期内被修改、升级和排故的难易程度”。分区设计使软件更新可以按分区进行:只要接口和资源预算不变,修改分区 B 中的显示应用不需要重新验证分区 A 的飞行控制软件。这显著降低了适航取证中的再验证范围。在排故时,分区边界也是天然的观测边界:健康监控可以按分区记录超时次数、内存越界次数、端口丢包次数,维护人员据此快速定位问题属于哪个分区、哪个驻留应用。
但分区设计也带来新的维护要求。分区表、端口定义、资源预算和调度配置必须作为配置项统一管理,任何一项变更都可能影响可调度性。因此,工程上通常维护一份分区配置清单,至少包含分区名称、承载功能、DAL 等级、周期、预算执行时间、内存配额、输入端口、输出端口和健康监控策略。下面给出一个简化的配置示例,用于说明各字段之间的关系。
分区配置示例(教学假设)
分区A 飞行控制 DAL A 周期20ms 预算6ms 内存2MB
输入: 惯导数据端口、大气数据端口
输出: 舵面指令端口
监控: 超时3次挂起,通知健康监控分区
分区B 显示管理 DAL B 周期50ms 预算12ms 内存8MB
输入: 飞行控制状态端口、导航状态端口
输出: 显示帧端口
监控: 超时5次降级显示
分区C 导航解算 DAL B 周期100ms 预算25ms 内存4MB
输入: 惯导原始数据端口、GPS端口
输出: 导航状态端口
监控: 校验失败2次切换备份源
从这份示例可以看出,分区设计的核心不是把功能“分开放”,而是把功能、资源、时间和故障处理策略绑定成可验证的配置。功能分区回答“怎么分”,功能模块回答“分完怎么实现”,驻留应用回答“谁在运行”,资源共享与隔离回答“运行时靠什么保证互不干扰”。四者共同构成综合航电系统分区设计的完整概念基础。