前言
最近在开发调试一款有关1553B协议的项目,这里对1553B数据帧格式进行一个详细的介绍。对于1553B一些应用场景、发展以及和其他协议的对比可以参考下面这位博主的文章,这里只对1553的数据帧进行介绍。
MIL-STD-1553B(1553B)详解_1553b总线-优快云博客
对于文章中有错误的内容,请大家踊跃指正错误,一起进步(评论区留言)
一、消息帧基本结构
- 1553B协议中,一次完整消息传输称为消息帧(Message Frame),由以下部分组:
- 命令字(必选):1个(BC→RT或RT→BC)或2个(RT→RT传输)
- 数据字(可选):0-32个(由命令字中的字计数域指定)
- 状态字(条件必选):0-2个(非广播消息至少1个)
二、核心字格式
-
命令字(Command Word)
-
同步头:3位(前1.5位高电平+后1.5位低电平)非曼彻斯特Ⅱ型编码,与16位数据域做区分,命令字与状态字同步头格式一样,数据字同步头是相反的,注意
-
数据域:
位域 位数 说明 远置终端地址 5 目标RT地址(0-30),31表示广播 收发位 1 1
=RT发送数据,0
=RT接收数据子地址 5 1-30为数据区,0/31表示方式命令 字计数/方式码 5 数据字数(1-32,0=32)或方式命令编码 -
奇校验位:1位
-
-
数据字(Data Word)
- 同步头:3位(前1.5位低电平+后1.5位高电平)
- 数据域:16位用户数据(无控制信息)
- 奇校验位:1位
-
状态字(Status Word)
-
同步头:同命令字
-
数据域:
关键位域 作用 消息错误位 1
=命令非法(如子地址/字计数不匹配)服务请求位 1
=RT需异步服务(需矢量字方式命令配合)终端特征位 1
=硬件故障 -
奇校验位:1位
-
三、典型消息帧示例
-
BC→RT传输(接收消息)这里的接收与发送只针对RT来说,对应命令字数据域收发位,
T/R=1:RT发送数据,T/R=0:RT接收消息- 实例:BC向RT5的子地址3发送2个数据字
- 命令字:
RT地址=00101
,收发位=0
,子地址=00011
,字计数=00010
- 数据字:32位用户数据(分2个16位字传输)
- 状态字:RT5返回操作状态(如消息错误位=0表示成功)
- 命令字:
- 实例:BC向RT5的子地址3发送2个数据字
-
[命令字] → [数据字1] → ... → [数据字N] → [状态字]
-
RT→BC传输(发送消息)
[命令字] → [状态字] → [数据字1] → ... → [数据字N]
- 特点:状态字在数据字之前返回(用于BC确认RT就绪)
-
RT→RT传输
[接收命令字] → [发送命令字] → [状态字(发送RT)] → [数据字] → [状态字(接收RT)]
- 冗余控制:双命令字确保收发同步,字计数必须一致
-
广播消息
-
BC→RTs广播:
[命令字(RT地址=31)] → [数据字] (无接收状态字返回)
-
RT→RTs广播:
[接收命令字(RT地址=31)] → [发送命令字] → [状态字(发送RT)] → [数据字]
-
四、特殊帧—方式命令消息
-
无数据字方式命令(如复位RT):
[命令字] → [状态字]
-
带数据字发送方式命令(如发送矢量字):
[命令字] → [状态字] → [数据字]
- 带数据字接收方式命令
[命令字] → [数据字] → [状态字]
- 无数据字广播方式命令(广播无接收状态字)
[命令字]
- 带数据字广播方式命令(广播无接收状态字)
[命令字] → [数据字]
五、消息帧总结
六、错误处理机制
- 校验失败:奇校验错误触发消息错误位(状态字)
- 超时无响应:BC记录为"RT无应答"故障
- 双冗余总线切换:A总线故障时自动切换至B总线
七、协议栈定位
1553B消息帧对应数据链路层规范,物理层特性包括:
- 曼彻斯特Ⅱ型编码
- 差分信号(±6V电平)
- 屏蔽双绞线传输
八、资料、源码
未完,待更新!!!正在调试
欢迎各位大佬阅读文章、指正错误、探讨技术(欢迎评论区留言)!