通信报文总览与 CAN 帧
依据 CiA 301(CANopen 应用层与通信行规)公开知识与工程惯例整理
正式 PDF:CiA 会员/PAS 注册后自 技术文档中心 获取
公开概述:CiA — CANopen
本篇之后的 10~13 按对象给出字节级报文格式与抓包示例。
1. 报文在协议栈中的位置
1 | 应用 / 对象字典 (OD) |
CANopen 不发明新物理层:每个通信对象最终是一帧(或一组)标准 CAN 数据帧。
2. CAN 数据帧(承载 CANopen 时)
经典 CANopen CC 多用 11-bit CAN-ID:
1 | ┌────────────┬──────┬──────────────┬─────┐ |
| 字段 | CANopen 中的含义 |
|---|---|
| CAN-ID | 即通信对象的 COB-ID(可配置;预定义连接集给出默认值) |
| RTR | 远程帧;PDO 的远程请求属遗留用法,新设计少用 |
| DLC | 数据长度;PDO/SDO/EMCY 等各有规定长度 |
| Data | 协议净荷(见后续各篇) |
约束(继承自经典 CAN):
- 单帧数据场最多 8 字节 → 单 PDO 映射总长通常 ≤ 8 字节
- 仲裁:CAN-ID 数值越小优先级越高 → NMT 用
0x000最高优先
3. 预定义连接集(Pre-defined Connection Set)
CiA 301 为降低配置成本,定义基于 Node-ID(1~127) 的默认 COB-ID。
公开说明亦见 CiA 对通信对象的概述页。
3.1 功能码 + Node-ID 结构(11-bit)
许多教程将 11-bit COB-ID 理解为:
1 | 10 … 7 6 … 0 |
| 功能 | 基址(示意) | 默认 COB-ID | DLC(典型) |
|---|---|---|---|
| NMT | — | 0x000 |
2 |
| SYNC | — | 0x080 |
0 或 1 |
| TIME | — | 0x100 |
6 |
| EMCY | 0x080 |
0x080 + Node-ID |
8 |
| TPDO1 | 0x180 |
0x180 + Node-ID |
≤8 |
| RPDO1 | 0x200 |
0x200 + Node-ID |
≤8 |
| TPDO2 | 0x280 |
0x280 + Node-ID |
≤8 |
| RPDO2 | 0x300 |
0x300 + Node-ID |
≤8 |
| TPDO3 | 0x380 |
0x380 + Node-ID |
≤8 |
| RPDO3 | 0x400 |
0x400 + Node-ID |
≤8 |
| TPDO4 | 0x480 |
0x480 + Node-ID |
≤8 |
| RPDO4 | 0x500 |
0x500 + Node-ID |
≤8 |
| SDO TX(Server→Client) | 0x580 |
0x580 + Node-ID |
8 |
| SDO RX(Client→Server) | 0x600 |
0x600 + Node-ID |
8 |
| Heartbeat / Boot-up / Node Guard | 0x700 |
0x700 + Node-ID |
1(HB/Boot) |
| LSS 响应 / 请求 | — | 0x7E4 / 0x7E5 |
8 |
以设备 EDS 与 CiA 301 正式文本为准;上表用于抓包心算与联调。
3.2 Node-ID = 5 时的速查
| COB-ID | 含义 |
|---|---|
0x000 |
NMT |
0x080 |
SYNC |
0x085 |
EMCY(5) |
0x185 |
TPDO1(5) |
0x205 |
RPDO1(5) |
0x585 |
SDO Server→Client(5) |
0x605 |
SDO Client→Server(5) |
0x705 |
Heartbeat/Boot-up(5) |
4. 通信对象一览(报文族)
| 对象 | 确认? | 实时性 | 详解文档 |
|---|---|---|---|
| NMT | 命令型(无应用层 ACK) | 最高 | 10 |
| SYNC / TIME | 广播 | 高 | 10 |
| EMCY | 生产者广播 | 高 | 10 |
| Heartbeat / Boot-up | 生产者周期/事件 | 中 | 10 |
| SDO | 确认服务(请求-响应) | 低 | 11 |
| PDO | 无协议确认(纯过程数据) | 高 | 12 |
| LSS | 主从问答 | 配置期 | 13 |
官方概念页:
- NMT:https://www.can-cia.org/can-knowledge/network-management/
- SDO:https://www.can-cia.org/can-knowledge/sdo-protocol/
- PDO:https://www.can-cia.org/can-knowledge/pdo-protocol/
- Error control:https://www.can-cia.org/can-knowledge/error-control-protocols
5. 字节序约定(读报文必备)
在 SDO 多路复用器(Index)、Abort 码、多数多字节 OD 值中:
- 小端(Little-Endian):低字节先出现在 CAN Data 中
- 例:Index
0x6040→ 线上字节序列40 60
PDO 映射净荷中的多字节对象同样按对象字典规定的端序(通常小端)拼接。
6. 抓包入口命令
1 | candump -td can0 |
解码顺序建议:先认 COB-ID 族 → 再拆 Data 字节 → 再对 OD/映射表。
正在加载留言…