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加时间窗进行合并,避免告警风暴。

四、分类与建模的落地关系

下图给出五类数据在“来源—方向—时效—对象模型”上的对应关系,以及公共元数据如何贯穿各类对象。图中同时标出每类数据的关键专属字段,便于在实现时直接对照建表或定义结构体。

星务数据分类与对象建模关系图 公共元数据(贯穿所有类别) dataId · category · source · timestamp · sequence · validity · version 遥测数据 方向:下行 时效:周期/实时 来源:平台/星务 专属字段 paramCode rawValue engineeringValue unit calibVersion 遥控数据 方向:上行 时效:事件驱动 来源:地面/星务 专属字段 commandCode parameters checksum ackStatus execResult 有效载荷数据 方向:下行 时效:批量/延时 来源:载荷 专属字段 fileId size checksum auxInfo packetCount 平台健康数据 方向:下行 时效:派生/周期 来源:星务计算 专属字段 metric threshold healthScore trend modelVersion 事件与告警 方向:双向 时效:突发/离散 来源:全星 专属字段 eventCode severity ackRequired mergeWindow relatedId 类别间关系 遥测 → 健康计算 遥控 → 状态变更 载荷 → 文件化存储 健康 → 告警触发 事件 → 时间线关联 所有类别共享公共元数据,专属字段按类别扩展,保证采集—传输—存储—解析一致

从图中可以看出,五类数据并非彼此孤立:遥测是健康计算的输入,健康结果又可能触发告警;遥控执行会改变平台状态,进而反映到遥测中;载荷数据虽独立,但其辅助信息常依赖平台姿态与时间。因此,建模时除了定义单类对象,还应保留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,避免新旧数据在同一张表中语义冲突。

综上,星务数据分类解决“数据归谁管、按什么规则管”,对象建模解决“数据长什么样、字段怎么定义”,元数据设计解决“数据在链路上如何保持一致”。三者配合,才能让遥测可判读、遥控可追溯、载荷可管理、健康可评估、告警可收敛。