CANopen轻松入门教程
文档信息
- 来源: 广州致远电子股份有限公司
- 版本: V1.00 (2015/10/01)
- 页数: 39页
- 适用对象: 初次接触CANopen的用户
一、CANopen在OSI模型中的位置
CAN总线仅定义了OSI模型的物理层(ISO 11898-2)和数据链路层(ISO 11898-1),由硬件实现。CANopen作为应用层协议,定义了:
- 应用层服务与协议
- 通讯描述:配置设备、定义通讯方式
- 设备描述:为设备增加符合规范的行为
二、CANopen协议发展
- 诞生: 20世纪90年代末,德国CiA组织(CAN in Automation)
- 基础: CAL(CAN Application Layer)
- 特点: 开放、免费、非盈利
- 应用: 运动控制、车辆工业、轨道交通、电机驱动等
轨道交通子协议
| 协议 | 内容 |
|---|---|
| CiA 421 | 列车车辆控制系统 |
| CiA 423 | 柴油机控制系统 |
| CiA 424 | 门控制系统 |
| CiA 426 | 外部灯控制系统 |
| CiA 430 | 辅助设备控制系统 |
三、预定义报文ID分类
3.1 NMT与特殊协议报文
| 对象 | CAN-ID |
|---|---|
| NMT网络管理命令 | 000h |
| Sync同步报文 | 080h |
| Emergency紧急报文 | 081h~0FFh(080+node-ID) |
| Time stamp时间戳 | 100h |
3.2 PDO与SDO报文
| 对象 | CAN-ID |
|---|---|
| TPDO1~4发送PDO | 181h~4FFh |
| RPDO1~4接收PDO | 201h~57Fh |
| SDO服务器响应 | 581h~5FFh |
| SDO客户端请求 | 601h~67Fh |
注意:COB-ID = Function-ID(4位) + Node-ID(7位)
四、对象字典(Object Dictionary)
对象字典是CANopen最核心的概念,有序组织节点所有参数。
索引区域划分
| 范围 | 用途 |
|---|---|
| 0000h~025Fh | 数据类型 |
| 1000h~1FFFh | 通讯对象子协议区 |
| 2000h~5FFFh | 制造商特定子协议 |
| 6000h~9FFFh | 标准化设备子协议 |
| A000h~BFFFh | 网络变量/系统变量 |
通用通讯对象(必须实现)
| 索引 | 名称 |
|---|---|
| 1000h | Device type设备类型 |
| 1001h | Error register错误寄存器 |
| 1003h | Pre-defined error field预定义错误场 |
| 1005h~1007h | Sync相关参数 |
| 1008h~100Ah | 制造商信息 |
| 100Ch~100Dh | Guard time/Life time |
| 1010h~1011h | 存储/恢复参数 |
| 1017h | Producer heartbeat time心跳时间 |
| 1018h | Identity object厂商ID |
五、网络管理NMT
5.1 节点状态(6种)
- Initializing:上电初始化
- Application Reset:应用层复位
- Communication Reset:通讯复位
- Pre-operational:预操作状态(可SDO配置)
- Operational:操作状态(PDO通信激活)
- Stopped:停止状态
5.2 NMT命令
| 命令字节 | 含义 |
|---|---|
| 01h | 启动(进入Operational) |
| 02h | 停止(进入Stopped) |
| 80h | 进入Pre-operational |
| 81h | 复位应用层 |
| 82h | 复位通讯 |
5.3 心跳报文
- 发送者:从站节点
- CAN-ID:700h + Node-ID
- 数据:1字节,表示当前状态(04h=Stopped, 05h=Operational, 7Fh=Pre-operational)
- 周期:由对象字典1017h配置
六、过程数据对象PDO
6.1 传输模型
PDO采用生产-消费模型:
- 单向传输,无需应答
- 由事件触发(定时、变化、远程帧)
- 数据长度1~8字节
6.2 同步传输 vs 异步传输
| 类型 | 触发方式 |
|---|---|
| 异步 | 特定事件(定时/变化) |
| 同步-周期 | SYNC报文触发 |
| 同步-非周期 | 远程帧或事件预触发 |
6.3 通信参数(对象字典1400h15FFh/1800h19FFh)
- COB-ID
- Transmission type传输类型
- Inhibit time禁止约束时间
- Event timer事件定时器
- SYNC start value同步起始值
6.4 映射参数
将对象字典中的对象映射到PDO数据域,格式:Index SubIndex Size
七、服务数据对象SDO
7.1 通讯模型
SDO采用客户端-服务器模型:
- 客户端发送:CAN-ID = 600h + Node-ID
- 服务器响应:CAN-ID = 580h + Node-ID
- 每个消息需要应答确认
7.2 快速SDO协议
适用于≤32位数据,单次来回完成。
7.3 普通SDO协议
适用于>32位数据,分帧传输。
| 协议 | 用途 |
|---|---|
| Download | 下载(写入从站) |
| Upload | 上传(读取从站) |
八、特殊协议
8.1 同步协议(Sync)
- CAN-ID:080h
- 数据:0字节
- 作用:同步所有节点的PDO传输时机
8.2 时间戳协议(Time Stamp)
- CAN-ID:100h
- 数据:6字节,1984年1月1日0时起算的毫秒数
- 作用:网络对时,用于故障诊断关联
8.3 紧急报文协议(Emergency)
- CAN-ID:080h + Node-ID(存储在1014h)
- 数据:8字节,包含错误代码
- 作用:设备内部错误诊断
九、学习建议
- 重点掌握:NMT状态转换、对象字典索引、PDO/SDO的CAN-ID计算
- 实践方法:使用CANManager软件导入EDS文件,观察对象字典配置
- 推荐工具:广州致远USBCAN-E-P或PCI-5010-P主站卡
关联知识
- CANopen协议详解 - 深入学习材料
- DS301标准 - CiA官方规范
- 嵌入式通信协议选型 - 技术对比