4. 星务计算机双机热备切换原理

星务计算机是整星平台管理的核心,承担遥测采集、遥控分发、姿态控制指令生成、载荷管理与星地通信调度等任务。一旦主份计算机失效而备份不能及时接管,整星可能进入安全模式甚至失控。双机热备(Hot Standby)正是为解决这一问题而设计的冗余架构:两台星务计算机同时上电运行,一台作为主份对外输出控制,另一台作为备份持续跟踪主份状态,随时准备接管。理解双机热备,关键要抓住五个要点:主备角色如何定义、仲裁逻辑如何判定、切换开关如何动作、总线如何隔离、切换瞬态与数据一致性如何保证。

主备角色定义

双机热备中,两台计算机在硬件上通常完全对称,角色并非固化在硬件里,而是由运行状态和仲裁结果动态确定。常见的角色状态包括:

  • 主机(Master):拥有对外总线控制权,周期输出控制指令、遥测帧与星地通信数据,是整星当前唯一“说话”的一方。
  • 备机(Slave/Standby):不驱动对外总线,仅监听主机的状态广播、同步数据与心跳,保持自身状态与主机一致,处于“热”待命状态。
  • 离线(Offline):本机自检失败、被隔离或处于复位过程中,不参与仲裁,也不输出任何总线信号。

角色定义的核心是“唯一性”:任一时刻只能有一台主机对外输出,否则会出现双主冲突,导致总线数据混乱。因此角色必须由仲裁逻辑统一裁决,而不是由各机自行宣布。

仲裁逻辑

仲裁逻辑决定谁当主、谁当备,以及何时切换。工程上常用的仲裁依据包括:

  • 心跳与健康状态:主机周期向备机发送心跳帧,备机在超时窗口内未收到心跳,即认为主机失效。
  • 自检结果:CPU、内存、看门狗、电源、总线接口自检异常时,本机主动降级为离线。
  • 优先级与固定标识:两机同时上电或同时健康时,用固定优先级(如机号小者优先)避免争抢。
  • 人工/地面指令:地面可通过遥控指令强制指定主机,用于在轨维护或故障处置。

仲裁通常采用“健康优先、优先级兜底”的策略:先看谁健康,健康者优先当主;若两者都健康,则按固定优先级决定;若两者都不健康,则进入安全模式。仲裁结果通过角色寄存器或状态字对外可见,便于地面判读。

切换开关与总线隔离

主备切换最终要落到硬件动作上,核心是“切换开关”和“总线隔离”。切换开关负责把对外总线(如1553B、CAN、SpaceWire或自定义串行总线)的驱动权从主机切换到备机;总线隔离则保证非主机一侧的接口处于高阻或断开状态,不干扰总线电平。

典型实现方式有两种:

  • 硬件切换开关:由仲裁逻辑驱动继电器或模拟开关,物理上把总线收发器使能端切换到当前主机。优点是隔离彻底,缺点是动作有机械/电气延迟。
  • 三态门隔离:每台计算机的总线驱动器都带三态使能,只有主机使能输出,备机输出高阻。优点是切换快,缺点是对使能信号完整性要求高。

无论哪种方式,都必须满足“先隔离、后接管”的顺序:备机在确认主机已释放总线后,才使能自己的总线驱动,避免瞬间双驱动造成总线冲突。

切换瞬态与数据一致性

切换不是瞬间完成的,存在一段“瞬态”窗口。在这段时间里,主机已停止输出,备机尚未完全接管,对外总线可能出现短暂空闲或数据不连续。工程上要关注三个指标:

  • 切换时间:从主机失效到备机开始输出有效数据的时间,通常要求控制在毫秒级到百毫秒级。
  • 数据一致性:备机接管后,其内部状态(如遥测缓存、控制积分量、模式字、时间基准)必须与主机失效前保持一致,否则会出现控制跳变或遥测错乱。
  • 瞬态可观测性:切换期间的总线空闲、状态字变化、切换计数应被记录并下传,供地面分析。

为保证数据一致性,主机需要周期向备机同步关键状态。同步方式分为全量同步和增量同步:全量同步在切换后一次性拷贝全部状态,适合状态量小的系统;增量同步则周期发送变化量,适合状态量大、实时性要求高的系统。同步周期要与切换时间指标匹配,周期过长会导致备机状态滞后,周期过短则增加总线与CPU负担。

工程上常把“心跳超时”和“同步周期”设为同一量级:例如心跳周期100 ms、超时3个周期即300 ms判定主机失效,同步周期50 ms,则备机状态最多滞后50 ms,切换后数据一致性更容易满足。

切换过程示意

下图给出双机热备从正常运行到备机接管的信号与状态关系,重点表现心跳、仲裁、总线使能与状态同步之间的时序配合。

双机热备切换:心跳—仲裁—总线使能—状态同步 主机 A(Master) CPU/内存/看门狗 正常 总线驱动:使能 周期发送心跳 + 状态同步 备机 B(Standby) 监听心跳,跟踪状态 总线驱动:高阻/隔离 随时准备接管 心跳帧 / 状态同步(周期 T) 仲裁逻辑 健康优先 · 优先级兜底 · 人工指令 心跳超时 → 判定主机失效 心跳监测 切换开关 / 总线隔离 先隔离主机 → 再使能备机 切换命令 对外总线(1553B / CAN / SpaceWire) 主机输出(切换前) 备机接管(切换后) 切换瞬态窗口 总线短暂空闲 / 数据不连续 要求:切换时间 ≤ 指标,状态一致 状态同步内容 遥测缓存 / 模式字 / 时间基准 控制积分量 / 切换计数

切换判据与工程参数示例

下面给出一组用于教学说明的示例参数,帮助理解各环节如何配合。这些数值属于合理假设,实际型号需按任务要求与硬件能力确定。

参数示例值说明
心跳周期100 ms主机周期发送心跳帧
心跳超时阈值300 ms连续3个周期未收到即判失效
状态同步周期50 ms备机状态最大滞后50 ms
总线隔离时间≤10 ms主机释放总线驱动
备机使能时间≤20 ms确认隔离后使能备机驱动
切换总时间≤100 ms从判失效到备机有效输出
切换计数累计记录下传供地面分析

判读切换是否成功,主要看三点:一是备机是否在指标时间内开始输出有效数据;二是切换后遥测帧、模式字、时间基准是否连续;三是切换计数与瞬态记录是否正常下传。若切换后出现控制跳变或遥测错乱,应优先检查状态同步周期是否过长、同步内容是否完整、总线隔离是否彻底。

双主冲突是双机热备最危险的故障:两机同时使能总线驱动,会造成总线电平竞争,轻则数据错乱,重则损坏收发器。因此仲裁逻辑必须保证“任一时刻只有一个主机”,并在硬件上设置互锁,防止软件异常导致双主。

综上,星务计算机双机热备切换不是单一动作,而是“角色定义—仲裁判定—开关动作—总线隔离—状态同步”协同工作的结果。设计时要把切换时间、数据一致性和瞬态可观测性作为核心指标,并在硬件互锁与软件仲裁之间形成双重保障,才能让备机在主机失效时真正“接得住、接得稳”。