通信报文总览与 CAN 帧

通信报文总览与 CAN 帧

依据 CiA 301(CANopen 应用层与通信行规)公开知识与工程惯例整理
正式 PDF:CiA 会员/PAS 注册后自 技术文档中心 获取
公开概述:CiA — CANopen

本篇之后的 10~13 按对象给出字节级报文格式与抓包示例。


1. 报文在协议栈中的位置

1
2
3
4
5
6
7
应用 / 对象字典 (OD)

通信对象 COB(NMT/SDO/PDO/SYNC/EMCY/…)
│ 映射为 CAN 数据帧
CAN 2.0A/B(ISO 11898-1)

物理层(常 ISO 11898-2,差分双绞)

CANopen 不发明新物理层:每个通信对象最终是一帧(或一组)标准 CAN 数据帧


2. CAN 数据帧(承载 CANopen 时)

经典 CANopen CC 多用 11-bit CAN-ID

1
2
3
4
┌────────────┬──────┬──────────────┬─────┐
│ CAN-ID │ RTR │ DLC (0..8) │ Data│
│ (COB-ID) │ 0/1 │ │ 0-8B│
└────────────┴──────┴──────────────┴─────┘
字段 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
2
3
4
5
 10 … 7        6 … 0
┌──────────┬──────────┐
│ Function │ Node-ID │
│ (4 bit) │ (7 bit) │
└──────────┴──────────┘
功能 基址(示意) 默认 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

官方概念页:


5. 字节序约定(读报文必备)

SDO 多路复用器(Index)Abort 码、多数多字节 OD 值中:

  • 小端(Little-Endian):低字节先出现在 CAN Data 中
  • 例:Index 0x6040 → 线上字节序列 40 60

PDO 映射净荷中的多字节对象同样按对象字典规定的端序(通常小端)拼接。


6. 抓包入口命令

1
2
3
candump -td can0
# 或
candump can0,000:7FF # 视工具语法过滤

解码顺序建议:先认 COB-ID 族 → 再拆 Data 字节 → 再对 OD/映射表。

下一篇:10-NMT-SYNC-TIME-EMCY-Heartbeat报文格式.md

文章互动

阅读 --

留言

0 条留言

正在加载留言…