4. 遥测遥控协议与数据格式
卫星遥测遥控的自动化测试,第一步不是发指令,而是把“数据长什么样”彻底搞清楚。地面测试设备发出的每一条遥控指令、接收的每一帧遥测数据,都必须严格符合星上协议栈的格式约定。本节围绕 CCSDS 空间包协议与 PUS 业务标准,梳理从应用层业务数据到物理帧的完整封装链路,并说明虚拟信道、时间戳与同步机制在测试中的实际意义。
一、协议分层:CCSDS 管“怎么传”,PUS 管“传什么”
CCSDS(空间数据系统咨询委员会)标准定义的是数据传输的“容器”规范,包括包结构、帧格式、虚拟信道调度、编码与同步;PUS(包利用标准)则定义容器里装的应用层业务内容,即遥控指令和遥测参数的语义、服务类型与子类型。两者关系可以理解为:CCSDS 是信封和邮路,PUS 是信纸上的业务格式。测试中若出现“指令发出但星上不执行”,往往不是链路问题,而是 PUS 服务号/子类型或应用数据字段不符合星上业务约定。
二、TM/TC 包结构:从应用数据到空间包
遥控包(TC Packet)与遥测包(TM Packet)都遵循 CCSDS 空间包格式,由包头和数据域组成。TC 包主包头 6 字节,包含包标识(版本号、类型、副导头标志、应用过程标识 APID)、包序列控制(序列标志、序列计数)和包数据长度;TM 包主包头同样 6 字节,但序列控制字段含义略有差异。PUS 包在空间包数据域内再嵌套 PUS 包头:TC 为 1 字节服务类型 + 1 字节服务子类型 + 2 字节源标识;TM 为 1 字节服务类型 + 1 字节服务子类型 + 2 字节源标识 + 2 字节时间戳。副导头标志置 1 时,数据域前部还要插入副导头,用于携带时间戳或辅助数据。
以一条典型的“遥控指令分发”为例:服务类型 8、子类型 1,应用数据为待分发指令的原始码字。构造时先填 PUS 包头,再拼应用数据,最后计算包数据长度并写入主包头。测试脚本中应显式校验长度字段,因为长度错误是星上拒收指令的高频原因。
三、帧格式与虚拟信道
空间包需要装入传输帧才能下行或上行。CCSDS 传输帧由帧头、数据域和帧尾组成:帧头含帧标识(版本号、航天器标识、虚拟信道标识 VCID)、虚拟信道帧计数、信令字段;数据域承载一个或多个空间包;帧尾为帧差错控制字段(可选)。一个帧内可以复用多个包,包与包之间靠包头长度字段界定边界,因此接收端必须做“包提取”处理。
虚拟信道(Virtual Channel)是同一物理链路上按业务类型划分的逻辑通道。例如 VCID=0 传实时遥测,VCID=1 传延时遥测,VCID=2 传遥控回执。每个虚拟信道独立维护帧计数,调度器按优先级或轮询方式把各 VC 的帧送上物理链路。测试中要重点验证:VCID 分配是否符合接口数据单(ICD)、帧计数是否连续、多 VC 复用后包提取是否正确。
四、时间戳与同步机制
PUS 遥测包中的时间戳通常采用 CCSDS 非分段时间码(CUC):前导字段 P-Field 指明时间码的纪元、粗时间长度和细时间长度,随后是粗时间(秒计数)和细时间(秒以下分数)。例如 P-Field 取 0x2A,表示粗时间 4 字节、细时间 2 字节,细时间分辨率为 2⁻¹⁶ 秒。测试中要核对星上时间戳与地面测试系统时间的偏差,若偏差超过门限,需检查星上时钟源、校时指令是否生效。
同步机制分两个层次:一是帧同步,接收端通过搜索帧同步码(如 0x1ACFFC1D)建立帧边界,并用帧差错控制字段校验;二是时间同步,地面通过校时指令把地面 UTC 时间注入星上时钟,星上再在遥测包中回填时间戳。自动化测试中,常用“发校时指令—收遥测时间戳—比对偏差”的闭环来验证时间同步功能。若帧同步丢失,接收端会进入搜索态,此时所有包提取都会失败,表现为遥测中断而非数据错误,这是排障时需要区分的关键现象。
五、测试中的格式校验要点
把上述格式落到自动化测试脚本,建议至少覆盖以下校验点:APID 是否与 ICD 一致;包序列计数是否连续、有无回绕处理;包数据长度与实际数据域长度是否匹配;PUS 服务类型/子类型是否在星上支持列表内;副导头标志与时间戳字段是否同时存在;VCID 与帧计数是否连续;帧同步码与帧差错控制是否正确。这些校验点可以直接写成断言,在每帧接收后自动执行,一旦失败即记录原始十六进制数据,便于回溯。