3. 1553B字格式与消息结构

MIL-STD-1553B 总线上传输的一切信息,最终都被拆解为三种基本“字”(Word):命令字、数据字和状态字。每个字固定为 20 位,在 1 Mbps 的速率下占用 20 μs。理解这三种字的位域定义,是读懂总线波形、编写终端软件、排查通信故障的基础。本节从物理编码讲到位域含义,再串起一条完整消息的结构。

一、物理层编码:曼彻斯特与同步头

1553B 采用曼彻斯特双相电平(Manchester II)编码。每个位周期被一分为二:前半位与后半位电平相反,形成一次跳变。约定“1”为高→低跳变(正跳变在中间),而“0”为低→高跳变。这种编码自带时钟信息,接收端可从跳变沿恢复位同步,且直流分量为零,适合变压器耦合。

每个字的开头有一个 3 位时长的同步头(Sync),它不遵循曼彻斯特编码规则,因此不会与数据位混淆。同步头有两种形态:

  • 命令/状态同步头:先高 1.5 位、再低 1.5 位,形如一个“宽高脉冲”,用于命令字和状态字。
  • 数据同步头:先低 1.5 位、再高 1.5 位,与前者极性相反,仅用于数据字。

接收端一旦检测到同步头,就能立即判断接下来是命令/状态字还是数据字,并据此对齐后续 16 个数据位和 1 个奇偶位。同步头是字与字之间的“帧界标”,也是解码的第一道判据。

二、三种字的位域定义

同步头之后是 16 个信息位(第 4~19 位),最后是第 20 位的奇偶校验位。三种字共用这 20 位框架,但信息位的含义不同。

命令字(Command Word)由总线控制器(BC)发出,用于指定本次传输。其 16 位信息域划分为:

  • 第 4~8 位:远程终端地址(RT Address),5 位,可寻址 0~31。其中 31(全 1)为广播地址,0 通常保留。
  • 第 9 位:发送/接收位(T/R)。T/R=1 表示命令 RT 发送(RT→BC),T/R=0 表示命令 RT 接收(BC→RT)。
  • 第 10~14 位:子地址(Subaddress),5 位,0~31。0 和 31 有特殊用途(如方式命令),1~30 用于一般数据缓冲。
  • 第 15~19 位:数据字计数(Word Count),5 位,表示本次传输的数据字个数,0 表示 32 个字。

数据字(Data Word)承载有效载荷,其 16 位信息域就是数据本身,没有地址或控制字段。数据字使用数据同步头,接收方按命令字中约定的字数依次接收。

状态字(Status Word)由被寻址的 RT 在收到有效命令后返回,用于报告自身状态。其 16 位信息域包含:

  • 第 4~8 位:RT 地址,回显自身地址,供 BC 核对。
  • 第 9 位:消息错误位(Message Error)。置 1 表示 RT 检测到消息格式或奇偶错误。
  • 第 10 位:测试位(Instrumentation),用于区分标准状态字与测试状态字。
  • 第 11 位:服务请求位(Service Request),RT 请求 BC 服务。
  • 第 12~14 位:保留位,通常置 0。
  • 第 15 位:广播命令接收位(Broadcast Command Received)。
  • 第 16 位:忙位(Busy),RT 无法接收新命令时置 1。
  • 第 17 位:子系统标志位(Subsystem Flag)。
  • 第 18 位:动态总线控制接受位(Dynamic Bus Control Acceptance)。
  • 第 19 位:终端标志位(Terminal Flag),表示 RT 自身故障。

三、奇偶校验

每个字的第 20 位是奇校验位(Odd Parity)。发送端统计同步头之后 16 个信息位中“1”的个数,若为偶数则奇偶位置 1,使整个 16 位信息域加奇偶位中“1”的总数为奇数。接收端重新计算,若校验失败则丢弃该字,并在状态字中置消息错误位(对 RT 而言)。奇偶校验只能发现奇数个位错误,不能纠错,但实现简单、延迟低,符合 1553B 的实时性要求。

四、消息结构:从命令到状态

一次完整的消息传输由命令字、若干数据字和状态字组成。以 BC 向 RT 发送 2 个数据字为例:BC 先发命令字(T/R=0,地址=某 RT,子地址=某缓冲,字数=2),随后连续发 2 个数据字,RT 接收完毕后回送状态字。若 RT 忙,可在状态字中置忙位,BC 据此重试或延后。

下图以一条“BC→RT 发送 2 个数据字”的消息为例,展示三种字的位域划分、同步头形态与奇偶校验位置,帮助建立从波形到字段的对应关系。

1553B 消息结构:命令字 + 2 个数据字 + 状态字 t 命令字 Sync(命令/状态) + 16位 + P T/R=0,字数=2 数据字 1 Sync(数据) + 16位 + P 有效载荷 数据字 2 Sync(数据) + 16位 + P 有效载荷 状态字 Sync(命令/状态) + 16位 + P RT 回送 命令字位域(16 位信息域) RT地址 5位 T/R 1位 子地址 5位 字数 5位 状态字位域(16 位信息域) RT地址 5位 ME 1 TF 1 SRQ 1 保留 3 BCR 1 Busy 1 SF 1 DBC 1 TF 1 同步头与曼彻斯特编码示意 命令/状态同步头:高1.5位 → 低1.5位 3 位时长 数据同步头:低1.5位 → 高1.5位 3 位时长 曼彻斯特位:1=高→低,0=低→高 1 0 1 奇偶校验:第20位为奇校验位,使 16 位信息域 + 奇偶位中“1”的总数为奇数。 接收端校验失败 → 丢弃该字;RT 侧可置状态字 ME=1,BC 侧记录错误并重试。

五、实际开发中的观察与判断

在开发或调试 1553B 系统时,通常用总线分析仪抓取波形,再按上述位域逐段解码。判断一条消息是否正常,可按以下顺序检查:

  1. 同步头形态是否正确:命令/状态字应为“高→低”宽脉冲,数据字应为“低→高”宽脉冲。
  2. 奇偶校验是否通过:每个字独立校验,失败则说明该字在传输中出错。
  3. 命令字中的 RT 地址、T/R、子地址、字数是否与预期一致。
  4. 状态字回显的 RT 地址是否与命令字一致,ME、Busy、TF 等标志位是否异常。
  5. 数据字个数是否与命令字中的字数一致,数据内容是否符合协议约定。
提示:1553B 的“字”是物理层概念,20 位固定长度;而“消息”是协议层概念,由命令字、数据字、状态字按规则组合而成。调试时先确认每个字的同步头和奇偶校验,再检查消息层面的地址、方向、字数与状态标志,可以快速定位故障发生在物理层还是协议层。

掌握三种字的位域定义后,后续编写 RT 仿真软件、解析总线日志或设计 BC 调度表时,就能直接按位操作:例如构造命令字时,把 RT 地址左移 11 位、T/R 位左移 10 位、子地址左移 5 位,再与字数按位或,最后计算奇偶位。这种“位域拼装”是 1553B 驱动开发中最常见的底层操作,也是理解消息结构的关键一步。