2. 实时系统基础与GNC特殊性
航天器GNC(制导、导航与控制)软件与普通地面软件最本质的差别,不在于算法有多复杂,而在于它对时间的苛刻要求。一个姿态控制算法即使数学上完全正确,如果不能在规定的时间窗口内完成计算并输出控制量,其结果可能是灾难性的。因此,理解实时系统的基本概念,是掌握GNC软件架构设计的第一块基石。
硬实时与软实时:错过截止时间意味着什么
实时系统按对时间约束的严格程度,通常分为硬实时、软实时和固实时三类。它们的核心区别在于:错过截止时间(deadline)的后果严重程度不同。
硬实时(Hard Real-Time):任务必须在截止时间前完成,否则系统视为失败。在GNC中,姿态控制回路的周期任务就是典型的硬实时任务。假设某卫星姿态控制周期为10ms,若某次控制计算延迟到15ms才输出,推力器或动量轮的动作就会滞后,可能导致姿态超调、振荡甚至失稳。对于载人航天器或高精度对地观测卫星,这种后果是不可接受的。
软实时(Soft Real-Time):偶尔错过截止时间只会降低服务质量,不会造成系统失效。例如,GNC软件中的遥测数据打包任务,若某周期延迟几毫秒,地面接收到的数据时间戳略有偏差,但不会影响飞行安全。再如,非关键的星上健康监测日志记录,延迟通常可以容忍。
固实时(Firm Real-Time):介于两者之间,偶尔错过截止时间的结果无效,但不会导致系统崩溃。例如,某些滤波器的中间迭代结果,若超时则丢弃该次结果,等待下一周期重新计算。
在GNC软件架构设计中,必须对每个任务明确标注其实时等级。这直接决定了调度策略、优先级分配和资源预留方式。一个常见的错误是:把所有任务都当作硬实时处理,导致CPU资源过度预留、系统效率低下;或者把关键控制任务误判为软实时,埋下安全隐患。
周期任务模型:GNC控制回路的节拍
GNC软件的核心任务通常采用周期任务模型。每个任务按照固定周期被触发,执行确定性的计算,然后等待下一个周期。这种模型之所以适合GNC,是因为控制理论本身建立在离散时间系统之上——控制律按固定采样周期设计,任务执行周期必须与设计周期一致。
一个典型的GNC周期任务可以用以下参数描述:
- 周期T:任务两次释放之间的时间间隔,如10ms、20ms、100ms。
- 执行时间C:任务在最坏情况下的CPU执行时间(WCET),如2ms。
- 截止时间D:任务必须完成的时间点,通常等于周期T(隐式截止)或小于T(约束截止)。
- 释放抖动J:任务实际释放时刻与理想周期时刻之间的偏差。
- 相位φ:任务第一次释放相对于时间原点的偏移。
以某卫星姿态控制任务为例:控制周期T=10ms,WCET C=3ms,截止时间D=10ms,抖动J要求小于0.1ms。这意味着每10ms,控制任务必须被释放,并在10ms内完成3ms的计算,且释放时刻的偏差不超过0.1ms。若抖动过大,控制律的实际采样间隔就不再是精确的10ms,等效于采样周期波动,会引入额外的相位滞后,降低控制带宽和稳定裕度。
抖动与延迟:时间确定性的两个敌人
抖动(Jitter)是指任务实际执行时刻相对于理想时刻的偏差。它分为释放抖动、执行抖动和完成抖动。在GNC中,抖动主要来自三个方面:
- 调度抖动:高优先级任务抢占、中断处理延迟导致低优先级任务释放不准时。
- 时钟抖动:晶振频率漂移、时钟中断处理延迟。
- 资源竞争抖动:共享内存访问冲突、总线仲裁延迟。
延迟(Latency)是指从传感器采样到执行机构输出之间的总时间。在GNC控制回路中,延迟包括:传感器采样延迟、AD转换延迟、总线传输延迟、任务调度延迟、计算延迟、DA转换延迟、执行机构响应延迟。总延迟会降低控制系统的相位裕度。根据控制理论,纯延迟τ在频率ω处引入的相位滞后为-ωτ。若控制带宽为10rad/s,延迟1ms引入的相位滞后约0.57°,延迟10ms则引入约5.7°。对于裕度只有30°~40°的系统,10ms延迟已经相当可观。
工程经验:在GNC软件设计中,通常要求控制回路的总延迟不超过控制周期的10%~20%。若控制周期为10ms,则总延迟应控制在1~2ms以内。这要求从传感器到执行机构的整个信号链都必须进行延迟预算和分配。
GNC控制回路对时间确定性的要求
GNC控制回路是一个闭环反馈系统,其时间确定性要求体现在三个层面:
第一,采样周期的确定性。控制律按固定周期T设计,实际执行周期必须稳定在T附近。若周期波动过大,离散控制系统的极点会偏移,可能导致不稳定。例如,某控制律在T=10ms时设计为稳定,若实际周期在8~12ms之间波动,等效于系统参数摄动,稳定裕度下降。
第二,计算延迟的确定性。从采样到控制量输出的延迟必须是可预测的、有界的。最坏情况执行时间(WCET)必须经过严格分析,不能依赖平均执行时间。在GNC软件中,通常采用静态WCET分析工具或大量测试来获取WCET上界。
第三,任务释放的确定性。周期任务的释放时刻必须精确可控,抖动必须限制在允许范围内。这要求实时操作系统(RTOS)提供高精度的定时器、可预测的调度器和低中断延迟。
下面这张图展示了GNC控制回路中从传感器采样到执行机构输出的完整时间链,以及各环节的延迟和抖动来源。图中标注了典型的时间预算分配,帮助理解时间确定性是如何被分解和保障的。
从图中可以看到,一个完整的GNC控制回路时间链包括传感器采样、总线传输、控制计算和执行机构响应四个主要环节。每个环节都有明确的延迟预算和抖动预算,且全部标注为硬实时。总延迟预算控制在2ms以内,相对于10ms的控制周期,占比20%,符合工程经验要求。
时间确定性如何保障:从架构到实现
保障GNC软件的时间确定性,需要从架构设计到代码实现的全链路考虑。在架构层面,通常采用时间触发架构(TTA)或静态调度表,将所有周期任务的释放时刻、执行顺序和资源分配在编译期确定,运行时只按表执行,避免动态调度带来的不确定性。在实现层面,需要关注以下几点:
- WCET分析:对每个任务进行最坏情况执行时间分析,确保CPU利用率不超过安全阈值(通常硬实时系统不超过70%)。
- 中断管理:限制中断嵌套层数,将中断处理程序尽量短小,把耗时操作放到任务上下文中执行。
- 缓存与内存:使用缓存锁定(cache locking)或禁用缓存,避免缓存未命中带来的执行时间波动。
- 时钟同步:采用高精度时钟源,定期校准,减少时钟漂移对周期任务释放的影响。
设计原则:在GNC软件中,时间确定性优先于平均性能。一个平均执行时间更短但波动较大的设计,不如一个执行时间稍长但确定可控的设计。架构师需要在设计早期就建立时间预算模型,并在整个开发过程中持续验证。
总结来说,硬实时与软实时的区分决定了任务的优先级和资源分配策略;周期任务模型为GNC控制回路提供了稳定的节拍;抖动和延迟是时间确定性的主要威胁,必须通过架构设计和实现手段加以控制。理解这些基础概念,是后续学习GNC软件架构中调度策略、任务划分和资源管理的前提。