Technical
Note
CANopen 轻松入门
入门教程
TN01010101
V1.00
Date:2015/10/01
工程技术笔记
类别
关键词
摘 要
内容
CANopen DS301
用于初次接触 CANopen 的用户,主要以 CANopen DS301
为主要教授方向
广州致远电子股份有限公司
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
修订历史
版本
V1.00
日期
2015/10/01
原因
创建文档
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
i
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
目 录
4.1
4.2
5.1
5.2
5.3
5.4
5.5
5.6
1. 前言 ........................................................................................................................... 1
2. CANopen 在 ISO 层级中的位置 .............................................................................. 2
3. CANopen 协议诞生和发展 ...................................................................................... 3
4. CANopen 的预定义报文 ID 分类 ............................................................................ 5
网络管理(NMT)与特殊协议(Special protocols)报文 ID 分类 .................... 5
过程数据对象(PDO)和服务数据对象(SDO)的报文 ID 分类 ..................... 7
5. 对象字典 OD(Object dictionary) ........................................................................... 9
对象字典概述 ......................................................................................................... 10
通讯对象子协议区(Communication profile area) ............................................ 10
通用通讯对象(General communication objects) .............................................. 10
制造商特定子协议(Manufacturer-specific Profile) .......................................... 11
标准化设备子协议(Standardized profile area) ...................................................... 12
对象字典和 EDS 文件实例 ................................................................................... 12
6. 网络管理 NMT(Network management) 与 CANopen 主站 .............................. 16
NMT 节点状态 ....................................................................................................... 16
NMT 节点上线报文 ............................................................................................... 17
NMT 节点状态与心跳报文 ................................................................................... 18
NMT 节点守护 ....................................................................................................... 18
NMT 节点状态切换命令 ....................................................................................... 19
CANopen 主站设备 ................................................................................................ 20
7. 过程数据对象 PDO(Process data object) ............................................................ 22
PDO 的 CAN-ID 定义 ............................................................................................ 22
PDO 的传输形式 .................................................................................................... 23
PDO 的通信参数 .................................................................................................... 24
PDO 的映射参数 .................................................................................................... 24
8. 服务数据对象 SDO(Service data object) ......................................................... 26
通讯原则(communication principle) ................................................................. 26
快速 SDO 协议(Expedited SDO protocol) ....................................................... 27
普通 SDO 协议(Normal SDO protocol) ........................................................... 27
9. 特殊协议(Special protocols) ............................................................................. 30
同步协议(Sync protocol)................................................................................... 30
时间戳协议(Time-stamp protocol) ................................................................... 31
紧急报文协议(Emergency protocol)................................................................. 33
10. 免责声明 ............................................................................................................... 35
8.1
8.2
8.3
6.1
6.2
6.3
6.4
6.5
6.6
7.1
7.2
7.3
7.4
9.1
9.2
9.3
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
1
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
1. 前言
本教程适用于 CIA CANopen 协议 DS301 又名 CIA301 标准。用户须已经掌握 CAN2.0A
协议的基本知识。即基本的帧结构、ID、数据、DLC 等知识,本文不再从 CAN 底层开始
叙述。如果读者需要了解 CAN 底层,推荐北京航空航天出版社出版的《项目驱动——
CAN-bus 现场总线基础教程》。
本文由广州致远电子股份有限公司周立功、黄敏思等整理和编撰。文章引用 CANopen
协会 CiA 组织的蔡豪格主席肖像与多篇示意图,再次表示非常感谢!
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
1
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
2. CANopen 在 ISO 层级中的位置
从 OSI 的 7 层网络模型的角度来看同,CAN(Controller Area Network)现场总线仅仅
定义了第 1 层(物理层,见 ISO11898-2 标准)、第 2 层(数据链路层,见 ISO11898-1 标准);
而在实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件(Software)
或固件(Firmware),只要了解如何调用相关的接口和寄存器,即可完成对 CAN 的控制。如
图 2.1 所示。
图 2.1 CAN 控制器结构
但 CAN 没有规定应用层。也就是没有规定与实际应用相关的逻辑,比如开关量输入输
出,模拟量输入输出。所以本身对于应用来说,是不完整的。这就像铁矿石(物理层)冶炼
成铁锭(数据链路层),然后针对具体应用,再加工做成汽车、轮船、钢筋、坦克、钢结构
建筑等等。如图 2.2 所示。
图 2.2 从物理层到应用层
因此,基本每个行业的 CAN 应用,都需要一个高层协议来定义 CAN 报文中的 11/29
位标识符、8 字节数据的使用。但在 CAN 总线的工业自动化应用中,由于设备的互通互联
的需求越来越多,所以需要一个开放的、标准化的高层协议:这个协议支持各种 CAN 厂商
设备的互用性、互换性,能够实现在 CAN 网络中提供标准的、统一的系统通讯模式,提供
设备功能描述方式,执行网络管理功能。其中包括:
应用层(Application layer):为网络中每一个有效设备都能够提供一组有用的服务与协议。
通讯描述(Communication profile):提供配置设备、通讯数据的含义,定义数据通讯方式。
设备描述(Device proflile):为设备(类)增加符合规范的行为。
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
2
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
3. CANopen 协议诞生和发展
CANopen 协议是在 20 世纪 90 年代末,由总部位于德国纽伦堡的 CiA 组织——
CAN-in-Automation,(http://www.can-cia.org )在 CAL(CAN Application Layer)的基础上
发展而来。
图 3.1 CANopen 与 CiA
由于 CANopen 协议的创始人团队也是 CAN-bus 的创始人团队,此协议充分发挥了
CAN-bus 所具备的所有优势,特别是 CiA 组织的主席蔡豪格(Holger Zeltwanger)先生对于
CANopen 协议坚持开放、免费、非盈利的原则。一经推出便在欧洲得到了广泛的认可与应
用。虽然 CiA 组织背后没有强大的财阀支撑,但时至今日已经成为全世界最为流行的 CAN
应用层协议。让我们记住这位可爱的德国老人,如图 3.2 所示。
图 3.2 CiA 组织蔡豪格主席
经过对 CANopen 协议规范文本的多次修改,使得 CANopen 协议的稳定性、实时性、抗
干扰性都得到了进一步的提高。并且 CiA 在 CANopen 基础协议——CiA 301 之上,对各个
行业不断推出设备子协议,使 CANopen 协议在各个行业得到更快的发展与推广。所谓的子
协议,就是针对不同行业的应用对象,对 CANopen 内部的数据含义进行重新定义,或者添
加新的控制逻辑。
目前 CANopen 协议已经在运动控制、车辆工业、轨道交通、电机驱动、工程机械、船舶
海运等行业得到广泛的应用。比如轨道交通中的城市轻轨车辆(低地板车)中,CiA 联合西
门子、庞巴迪等轨道交通厂商,共同制定了以下轨道交通相关的 CANopen 子协议:
CiA 421 series: Train vehicle control system 列车车辆控制系统
CiA 423 series: Diesel engine control system 柴油机控制系统
CiA 424 series: Door control system 门控制系统
CiA 426 series: Exterior light control system 外部灯控制系统
CiA 430 series: Auxiliary equipment control system 辅助设备控制系统
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
3
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
CiA 433 series: Interior light control system 内部灯控制系统
如图 3.3 所示,为 CANopen 在轨道列车中的地位,主干网为列车总线(WTB),每接
车厢采用车辆总线(MVB)来连接与列车行驶相关,对实时性要求高的部件。而 CANopen
主要是连接各种非高安全性的部件。
图 3.3 CANopen 在轨道交通中的应用
图 3.4 所示为 CANopen 设备结构。CANopen 协议通常分为用户应用层、对象字典以及
通信三个部分。
其中最为核心的是对象字典,描述了应用对象和 CANopen 报文之间的关系。
CANopen 通信是本文关键部分,其定义了 CANopen 协议通信规则以及与 CAN 控制器
驱动之间对应关系,熟悉这部分对全面掌握 CANopen 协议至关重要。
用户应用层是用户根据实际的需求编写的应用对象,这部分本入门教程将不作详细。
图 3.4 CANopen 设备结构
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
4
广州致远电子股份有限公司
CANopen 轻松入门
入门教程
4. CANopen 的预定义报文 ID 分类
在 CANopen 创立之初,即使在 CAN 总线应用最广泛的汽车电子行业,网络中的 CAN
节点数量和需要通讯的信息都是比较少的。人们使用 CAN 取代 RS485,主要是看重其可以
突发发送的实时性优势,而在多节点、长距离应用中,CAN 总线和 RS485 比起来并无优势,
比如同样的波特率下,CAN 的通信距离只能达到 RS485 的 0.6-0.8 倍,而多节点通信 CAN
无法进行任意的突发发送,不得不遵循 RS485 那样的轮询通信机制,否则会导致拥堵,如
图 4.1 所示。就像这个十字路口的汽车,如果车只有 10 辆,即使没有交通灯,根本不会拥
堵。而如果有 100 辆,如果任意行驶,就会发生严重拥堵。
图 4.1 CAN 的突发优势和多节点拥堵
CANopen 的创始人是非常了解 CAN 总线这个特征,所以在设计 CANopen 时,对其定
义为小网络、控制信号的实时通讯:
报文传输采用 CAN 标准帧格式。即 11bit 的 ID 域,以尽量减小传输时间;
网络控制报文均采用数据最小字节数。比如心跳报文,只有 1 个字节数据;
实时更新的过程数据无需接收方报文应答。即采用生产消费模型,降低总线负载;
需要接收方确认的配置参数一般都是采用快速单字传输。即 1 个报文最多传送 1
个 32 字节的参数变量,避免了分帧引起的实时性降低。
以上这些定义都是为了节约时间开销,最大限度保证实时性。同时为了减小简单网络的
组态工作量,CANopen 定义了强制性的缺省标识符(CAN 帧 ID)分配表,以减少使用者与
维护者的学习时间,快速上手。
4.1 网络管理(NMT)与特殊协议(Special protocols)报文 ID 分类
虽然 CANopen 的通讯发挥了 CAN 的特色,所有节点通信地位平等,运行时允许自行
发送报文,但 CANopen 网络为了稳定可靠可控,都需要设置一个网络管理主机 NMT-Master
(Network Management-Master),就像一个交响乐团的指挥家,所有节点的启动、停止都是
有他进行指挥,如图 4.2 所示。
工程技术笔记 ©2013 Guangzhou ZHIYUAN Electronics Stock Co., Ltd.
5