NMT / SYNC / TIME / EMCY / Heartbeat 报文格式
官方概念来源:
1. NMT(Network Management)报文
1.1 帧头
| 项 |
值 |
| COB-ID |
0x000(全网最高优先级) |
| DLC |
2 |
| 发送方 |
NMT Manager(主站) |
| 接收方 |
指定从站或全部从站 |
CiA 说明:NMT 协议为 单帧 2 字节;第 1 字节为命令说明符(CS),第 2 字节为 Node-ID;Node-ID = 0 表示全体节点执行该命令。
1.2 数据场
1 2 3 4 5
| Byte0 Byte1 ┌───────────┬──────────┐ │ CS │ Node-ID │ │ (命令) │ 0=广播 │ └───────────┴──────────┘
|
1.3 命令说明符(CS)常用值
| CS |
含义 |
目标状态/动作 |
0x01 |
Start Remote Node |
→ Operational |
0x02 |
Stop Remote Node |
→ Stopped |
0x80 |
Enter Pre-Operational |
→ Pre-Operational |
0x81 |
Reset Node |
复位应用(进 Initialization 流程) |
0x82 |
Reset Communication |
复位通信参数 |
1.4 抓包示例
1 2 3
| can0 000 [2] 01 05 # Start 节点 5 can0 000 [2] 80 00 # 全网进入 Pre-Operational can0 000 [2] 81 03 # Reset 节点 3
|
1.5 与状态机关系(报文视角)
- 上电后设备自行完成 Initialization,发 Boot-up,进入 Pre-Operational(见 §5)
- 主站用 NMT 报文强制迁移;PDO 仅在 Operational 允许
- Stopped 时设备仍应响应 NMT,并可通过错误控制指示状态
详见概念篇:02-NMT与错误控制.md
2. SYNC(同步)报文
2.1 帧头
| 项 |
值 |
| 默认 COB-ID |
0x080(对象 1005h 可改) |
| DLC |
0(无计数器)或 1(带 1 字节计数器,可选) |
| 方向 |
通常由同步生产者(常为主站)广播 |
作用:触发 同步传输类型 的 PDO(见 12-PDO)。
2.2 数据场
1 2 3 4 5 6 7
| 无计数器:DLC=0,无 Data
有计数器: Byte0 ┌─────────┐ │ Counter │ 每次 SYNC 递增(实现/配置相关) └─────────┘
|
相关 OD:1005h COB-ID SYNC、1006h Communication cycle period、1007h Synchronous window length(若支持)。
2.3 抓包示例
1 2
| can0 080 [0] can0 080 [1] 2A # 带计数器的 SYNC
|
3. TIME(时间戳)报文
3.1 帧头
| 项 |
典型值 |
| 默认 COB-ID |
0x100 |
| DLC |
6 |
3.2 数据场(概念)
1 2 3 4 5
| Byte0 …… Byte3 Byte4 Byte5 ┌────────────────┬────────────┐ │ ms of day │ days │ │ (无秒,自当日0点)│ (自1984-01-01)│ └────────────────┴────────────┘
|
具体编码以 CiA 301 / 设备手册为准;工程上 TIME 为可选功能。
4. EMCY(Emergency)报文
4.1 帧头
| 项 |
值 |
| 默认 COB-ID |
0x080 + Node-ID(1014h 可改) |
| DLC |
恒为 8 |
| 方向 |
错误生产者 → 网络 |
4.2 数据场(CiA 301 结构)
1 2 3 4 5 6
| Byte0 Byte1 Byte2 Byte3 …… Byte7 ┌──────┬──────┬─────────┬──────────────────┐ │ Error Code │ Error │ Manufacturer │ │ (低) │ (高) │ Register│ Specific Field │ │ │ (1001h) │ (5 bytes) │ └──────┴──────┴─────────┴──────────────────┘
|
| 字段 |
长度 |
含义 |
| Emergency Error Code |
2 B |
错误码(小端);0000h 常表示错误清除/无错误 |
| Error Register |
1 B |
对应 OD 1001h 当前值 |
| Manufacturer Specific |
5 B |
厂商自定义附加信息 |
可选:1015h EMCY Inhibit Time(抑制过密 EMCY);1003h 预定义错误场(历史)。
4.3 抓包示例(Node-ID=5)
1 2
| can0 085 [8] 00 10 81 00 00 00 00 00 # Error Code = 0x1000,Error Register = 0x81,其余厂商字段
|
5. Boot-up 与 Heartbeat 报文
二者共用错误控制 CAN-ID 族(CiA:Error control):
| 项 |
值 |
| COB-ID |
0x700 + Node-ID |
| DLC |
1 |
5.1 Boot-up
- 在 Initialization 结束、进入 Pre-Operational 之前作为最后动作发送
- Data[0] 固定为
0x00
- 运行中意外再收到 Boot-up → 可能节点复位/掉电重启
1
| can0 705 [1] 00 # 节点 5 Boot-up
|
5.2 Heartbeat(Producer)
| Data[0] |
NMT 状态 |
0x00 |
Boot-up(仅 boot-up 协议使用该值语义) |
0x04 |
Stopped |
0x05 |
Operational |
0x7F |
Pre-Operational |
周期由 1017h Producer Heartbeat Time(ms;0=关闭)配置。
消费者用 1016h 监视超时。
1 2
| can0 705 [1] 05 # 节点 5 声明 Operational can0 705 [1] 7F # 节点 5 声明 Pre-Operational
|
5.3 Node Guarding(遗留)
- 同 COB-ID 族,主站以 RTR 轮询,从站数据帧应答并含 toggle 位
- CiA 不再推荐 基于远程帧的 guarding;新设计用 Heartbeat
6. 主站启动时序(报文级)
1 2 3 4 5 6 7
| 从站: ... → Boot-up (700+ID, 00) 主站: SDO 配置 … 主站: NMT Start (000, 01, ID) 从站: Heartbeat (700+ID, 05) 主站: SYNC (080) 循环 双方: PDO … 从站异常: EMCY (080+ID, 8 bytes)
|
下一篇:11-SDO报文格式详解.md
正在加载留言…