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发送PDO181h~4FFh
RPDO1~4接收PDO201h~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网络变量/系统变量

通用通讯对象(必须实现)

索引名称
1000hDevice type设备类型
1001hError register错误寄存器
1003hPre-defined error field预定义错误场
1005h~1007hSync相关参数
1008h~100Ah制造商信息
100Ch~100DhGuard time/Life time
1010h~1011h存储/恢复参数
1017hProducer heartbeat time心跳时间
1018hIdentity object厂商ID

五、网络管理NMT

5.1 节点状态(6种)

  1. Initializing:上电初始化
  2. Application Reset:应用层复位
  3. Communication Reset:通讯复位
  4. Pre-operational:预操作状态(可SDO配置)
  5. Operational:操作状态(PDO通信激活)
  6. 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字节,包含错误代码
  • 作用:设备内部错误诊断

九、学习建议

  1. 重点掌握:NMT状态转换、对象字典索引、PDO/SDO的CAN-ID计算
  2. 实践方法:使用CANManager软件导入EDS文件,观察对象字典配置
  3. 推荐工具:广州致远USBCAN-E-P或PCI-5010-P主站卡

关联知识