4. 日志格式与标准化
星载计算机的错误日志与地面软件日志最大的区别在于:它必须在资源受限、通信窗口有限、且事后无法交互的环境下,让地面人员仅凭一段二进制或文本记录就能还原“谁、在什么时刻、因为什么、处于什么状态、发生了什么”。因此日志格式不是随手 printf 的产物,而是一套需要预先标准化的数据结构。本节围绕六个核心字段展开:时间戳、严重等级、模块标识、错误码、上下文快照,以及它们与 CCSDS 相关标准的对应关系。
一、六个核心字段各自解决什么问题
时间戳解决“何时发生”。星上通常存在多种时间基准:处理器上电计数(tick)、星上时间(OBT,On-Board Time)、UTC。日志中应记录 OBT 为主,并保留 tick 作为辅助,因为 OBT 可能因校时而跳变,tick 单调递增可用于排序。CCSDS 时间码(CCSDS Time Code)定义了多种编码,工程上常用的是 CUC(CCSDS Unsegmented Time Code)格式:4 字节粗时间(秒)+ 2 字节细时间(1/65536 秒),共 48 位,纪元可自定义(例如 2000-01-01 00:00:00 UTC)。
严重等级解决“多严重”。建议采用五级:DEBUG(0)、INFO(1)、WARN(2)、ERROR(3)、FATAL(4)。等级不是给人看的装饰,而是过滤与告警门限的依据:地面可只下传 ERROR 及以上,WARN 仅在特定排查时开启。
模块标识解决“谁报的”。星载软件通常按分系统划分:姿轨控(AOCS)、电源(EPS)、热控(TCS)、通信(COMM)、星务(OBDH)、载荷(PL)。模块标识建议用 16 位 ID,高 8 位表示分系统,低 8 位表示子模块,例如 0x0301 表示 AOCS 的陀螺处理子模块。
错误码解决“是什么错”。错误码应全局唯一、可分类。常见做法是 32 位:高 8 位为类别(0x01 通信、0x02 传感器、0x03 存储、0x04 电源、0x05 时序),中 8 位为模块,低 16 位为具体错误。例如 0x01030007 表示“通信类、AOCS 模块、第 7 号错误(遥测帧校验失败)”。
上下文快照解决“当时什么状态”。这是星载日志最有价值也最容易被忽略的部分。它应包含:关键寄存器、任务栈使用量、最近一次传感器读数、当前工作模式、复位原因等。快照不宜过大,通常限制在 64~256 字节,采用 TLV(Type-Length-Value)结构便于扩展。
二、CCSDS 相关标准的对应关系
CCSDS 并未直接规定“错误日志格式”,但它提供了可复用的构件。时间码使用 CCSDS 301.0-B-4;日志作为遥测数据下传时,可封装为 CCSDS 空间包(Space Packet,CCSDS 133.0-B-2),主头中的 APID 可用来区分不同分系统的日志流;若日志需要事件触发上报,可参考 CCSDS 事件报告(Event Reporting)服务。工程实践中的常见做法是:日志记录本身用自定义紧凑二进制格式,下传时再封装进 CCSDS 空间包,从而兼顾星上效率与地面标准解析。
三、一个可落地的日志记录示例
下面给出一条符合上述结构的日志记录示例(数值为教学假设,非实测)。假设某时刻 AOCS 的陀螺处理子模块检测到遥测帧校验失败,记录如下:
字段 值(十六进制) 说明
时间戳 0x0A1B2C3D 0x8000 CUC 48bit,粗时间+细时间
严重等级 0x03 ERROR
模块标识 0x0301 AOCS / 陀螺处理
错误码 0x01030007 通信类 / AOCS / 帧校验失败
上下文快照长度 0x0040 64 字节
上下文快照 0x01 04 0x0000001F TLV: 任务栈使用量=31
0x02 04 0x00000003 TLV: 工作模式=3(安全模式)
0x03 08 0x00000000... TLV: 最近陀螺读数
CRC16 0x5A3C 整条记录校验
地面解析时,先按固定偏移取出时间戳、等级、模块、错误码,再按 TLV 循环解析快照。由于 TLV 自带类型和长度,新增快照项不会破坏旧解析器,这是星载日志向前兼容的关键。
四、标准化带来的实际收益
统一格式后,地面可以做到三件事:第一,按模块和错误码自动聚类,快速定位高频故障;第二,按时间戳对齐多个分系统的日志,还原故障链;第三,将上下文快照直接导入健康监测模型,作为异常检测的特征输入。若格式不统一,这些工作都需要人工逐条阅读,在只有数分钟通信窗口的星地链路中几乎不可行。
最后需要强调:日志格式一旦在轨运行,修改成本极高。应在设计阶段就确定字段宽度、字节序(建议大端)、对齐方式和 CRC 算法,并写入接口控制文档(ICD)。地面解析工具与星上记录代码应共用同一份字段定义,避免“星上写一套、地面猜一套”的常见问题。