2. 星务数据分类与建模
星务计算机面对的数据并非同质。若把遥测、遥控、载荷、平台健康、事件告警混在一张表里,后续的存储、检索、下传和告警判断都会变得混乱。分类的本质,是依据数据的来源、方向、时效、语义和用途建立稳定的划分维度;建模的本质,则是为每一类数据定义可复用的对象结构和元数据,使数据在采集、传输、存储、解析各环节保持一致。
一、按五个维度划分数据类别
工程上常用五个维度交叉分类。第一是方向:上行(遥控、上注数据)与下行(遥测、载荷、事件)。第二是时效:实时流(秒级遥测、告警)与批量数据(载荷图像、延时遥测)。第三是来源:平台分系统、载荷、星务自身。第四是语义:状态量、测量量、指令、文件、事件。第五是用途:监视、控制、科学处理、健康评估、故障追溯。
据此,五类数据的典型特征如下:
- 遥测数据:下行、周期性、结构化,多为状态量与测量量,如母线电压、温度、模式字。特点是采样率高、单条小、需按包序号连续判读。
- 遥控数据:上行、事件驱动、指令化,含指令码、参数、校验和。特点是必须可追溯、可回执、可校验,误码代价高。
- 有效载荷数据:下行、批量、大容量,如成像、频谱、科学计数。特点是数据量大、需分包与文件化、常带时间戳与地理/姿态辅助信息。
- 平台健康数据:下行、派生性,由遥测经阈值、趋势、残差计算得到,如健康度、剩余寿命估计。特点是依赖模型、需版本管理。
- 事件与告警数据:双向、突发、离散,如模式切换、越限、复位。特点是需优先级、需去重、需与时间线关联。
二、数据对象建模:从字段到对象
分类之后,要为每类数据建立对象模型。一个可落地的做法是采用“公共元数据 + 类别专属属性”的两层结构。公共元数据描述“这条数据是谁、从哪来、什么时候、属于哪条链”,类别专属属性描述“这条数据具体是什么”。
公共元数据建议至少包含:dataId(全局唯一标识)、category(五类之一)、source(分系统/载荷/星务)、timestamp(采集时刻,统一采用星上时间基准)、sequence(包序号,用于连续性判断)、validity(有效/无效/可疑)、version(模型版本)。类别专属属性则按需扩展,例如遥测对象增加paramCode、rawValue、engineeringValue、unit;遥控对象增加commandCode、parameters、ackStatus;载荷对象增加fileId、size、checksum、auxInfo;健康对象增加metric、threshold、healthScore;事件对象增加eventCode、severity、ackRequired。
paramCode和同一量纲,避免因命名不一致导致解析错位。三、元数据设计中的三个易错点
第一,时间基准不统一。星上时间、GPS时间、地面接收时间若混用,事件与遥测无法对齐。应在元数据中明确timestamp的基准,并保留groundReceiveTime作为辅助字段。第二,量纲与原始值混淆。遥测原始码值需经标定系数转换为工程值,元数据中应同时保留rawValue与engineeringValue,并记录标定版本。第三,告警去重缺失。同一越限在连续多个采样周期内会重复产生告警,应通过eventCode加时间窗进行合并,避免告警风暴。
四、分类与建模的落地关系
下图给出五类数据在“来源—方向—时效—对象模型”上的对应关系,以及公共元数据如何贯穿各类对象。图中同时标出每类数据的关键专属字段,便于在实现时直接对照建表或定义结构体。
从图中可以看出,五类数据并非彼此孤立:遥测是健康计算的输入,健康结果又可能触发告警;遥控执行会改变平台状态,进而反映到遥测中;载荷数据虽独立,但其辅助信息常依赖平台姿态与时间。因此,建模时除了定义单类对象,还应保留relatedId等关联字段,使跨类追溯成为可能。
五、一个可参考的元数据定义示例
下面给出遥测对象的简化结构定义,可直接映射为数据库表或星上结构体。示例中的参数名与取值均为教学假设,实际工程需按任务规范替换。
TelemetryObject {
dataId: "TLM-2024-0001" // 全局唯一
category: "telemetry"
source: "power-subsystem"
timestamp: 1723456800.125 // 星上时间基准,秒
sequence: 10231 // 包序号
validity: "valid"
version: "v1.2"
paramCode: "BUS_VOLT_A"
rawValue: 0x0A3F
engineeringValue: 28.15 // 经标定转换
unit: "V"
calibVersion: "cal-2024-03"
}
当同一参数连续多个周期被采集时,sequence递增,timestamp按采样周期推进。地面解析时先校验sequence连续性,再用calibVersion对应的系数将rawValue转换为engineeringValue,最后按paramCode入库。若validity为“可疑”,则该点不参与健康评分,但保留原始记录用于事后分析。
category枚举与专属字段,并更新version,避免新旧数据在同一张表中语义冲突。综上,星务数据分类解决“数据归谁管、按什么规则管”,对象建模解决“数据长什么样、字段怎么定义”,元数据设计解决“数据在链路上如何保持一致”。三者配合,才能让遥测可判读、遥控可追溯、载荷可管理、健康可评估、告警可收敛。