CANopen 总览与工作原理
CANopen = 基于 CAN 的标准化嵌入式网络高层协议
由 CiA(CAN in Automation)维护 · 经典版 CANopen CC(CiA 301 / EN 50325-4)
演进版:CANopen FD(CiA 1301,基于 CAN FD)
1. CANopen 是什么
CANopen 是一套跑在 CAN(Controller Area Network) 之上的应用层与通信行规:
- 物理层 / 数据链路层:通常按 ISO 11898-2 / ISO 11898-1
- 应用层:对象字典、NMT、SDO、PDO、SYNC、EMCY、Heartbeat 等(CiA 301)
- 设备/应用行规:如驱动器 CiA 402、I/O CiA 401 等
设计目标一句话:在可靠、低成本的 CAN 总线上,用统一的对象模型与通信对象,实现可配置、可互操作的设备网络。
| 属性 | 值 |
|---|---|
| 维护组织 | CAN in Automation(CiA) |
| 经典标准 | CiA 301 v4.2.0(应用层与通信行规) |
| 国际对应 | EN 50325-4(CANopen) |
| 底层总线 | CAN CC(经典)或 CAN FD(CANopen FD) |
| 典型速率 | 10 kbit/s ~ 1 Mbit/s(CiA 301 位定时) |
| 寻址 | 主要使用 11-bit CAN-ID(也支持 29-bit) |
| 最大经典节点数 | 实践上常 ≤ 127(Node-ID 1~127) |
官方概述:CiA — CANopen
2. 为什么需要 CANopen(而不只是裸 CAN)
裸 CAN 只保证:
- 帧优先级仲裁
- CRC / ACK
- 多主广播
不规定:
- 节点如何上线、复位、启停
- 参数如何读写
- 周期过程数据如何组织
- 错误如何上报
- 不同厂商设备如何互换
CANopen 补齐的是应用语义:
1 | 裸 CAN:能把字节送到总线上 |
3. 设备内部三层结构
CiA 将一个 CANopen 设备抽象为三部分:
1 | ┌─────────────────────────────────────────┐ |
| 层次 | 职责 |
|---|---|
| 应用 | 设备功能:读传感器、跑伺服环、驱动 IO |
| 对象字典(OD) | 所有可访问参数/数据的索引表;通信栈与应用的交界 |
| 协议栈 | 把 OD 项映射到 COB(通信对象),在 CAN 上收发 |
对象字典是理解 CANopen 的钥匙:主站配置从站、读诊断、映射 PDO,本质上都是在访问 OD。
4. 通信对象(COB)一览
| COB | 用途 | 实时性 | 典型方向 |
|---|---|---|---|
| NMT | 网络管理(启停/复位节点) | 高优先 | Master → Slave |
| SYNC | 同步触发 | 高 | 通常 Master 广播 |
| EMCY | 紧急错误报告 | 高 | Slave → 网络 |
| TIMESTAMP | 时间戳 | 中 | 可选 |
| PDO | 过程数据(周期/事件) | 高 | 双向可配置 |
| SDO | 配置与诊断 | 低(请求-响应) | Client ↔ Server |
| Heartbeat | 节点存活与状态 | 中 | Producer → Consumer |
| LSS | 改 Node-ID / 波特率 | 配置阶段 | Master ↔ Slave |
详细见 03-SDO与PDO通信.md、02-NMT与错误控制.md。
5. 主站 / 从站角色
CANopen 网络通常有:
- NMT Master:负责网络启停、监视节点(Heartbeat Consumer)
- NMT Slave:受控设备(驱动器、IO、传感器)
- SDO Client / Server:配置时 Client 读写 Server 的 OD
- PDO Producer / Consumer:过程数据发布者与消费者
注意:一个节点可同时具备多种角色(例如主站既是 NMT Master,也消费从站 TPDO)。
6. 典型上电与运行时序(概念)
1 | 1. 上电 / 复位 |
7. CANopen CC vs CANopen FD vs CoE
| 体系 | 传输 | 标准入口 | 典型场景 |
|---|---|---|---|
| CANopen CC | 经典 CAN | CiA 301 | 工控、车身、医疗设备、移动机器人底盘 |
| CANopen FD | CAN FD | CiA 1301 | 更大 PDO、更高吞吐 |
| CoE | EtherCAT | ETG + CiA 语义 | 高速多轴伺服、机器人关节 |
对机器人工程师:
- 学 CANopen 对象模型 + CiA 402,在 CAN 总线和 EtherCAT(CoE)两边都能复用。
- 差别主要在带宽、拓扑、同步精度与主站实现,不是对象语义本身。
8. 关键规范地图(先记住这些)
| 文档 | 内容 |
|---|---|
| CiA 301 | 应用层、通信行规、OD、NMT/SDO/PDO/SYNC/EMCY |
| CiA 302 | 额外通信框架(框架、管理等,工程上常遇子集) |
| CiA 305 | LSS(Node-ID / 波特率配置) |
| CiA 306 | EDS / DCF 电子描述 |
| CiA 401 | 通用 I/O 模块行规 |
| CiA 402 | 驱动与运动控制(伺服/变频/步进) |
| CiA 1301 | CANopen FD 应用层 |
正式 PDF 多数需 CiA 会员登录下载:
CiA Technical Documents
9. 术语速查
| 术语 | 含义 |
|---|---|
| Node-ID | 节点地址 1~127 |
| COB-ID | 通信对象标识(映射到 CAN-ID) |
| OD | Object Dictionary |
| RPDO / TPDO | 接收/发送过程数据对象 |
| EDS | Electronic Data Sheet(设备能力描述) |
| DCF | Device Configuration File(含具体参数值的配置) |
| FSA | Finite State Automaton(如 CiA 402 驱动状态机) |
正在加载留言…