没有合适的资源?快使用搜索试试~ 我知道了~
首页canopen、canfestival
canopen、canfestival
需积分: 43 232 浏览量
更新于2023-05-26
评论
收藏 1.86MB DOC 举报
canopen 协议总结,及移植到arm linux过程详细介绍。canfestival移植
资源详情
资源评论
资源推荐

CANopen 协议
一、 CAN、CAL、CANopen 关系
1.1 CAN
CAN(Controller Area Network)现场总线仅仅定义了第 1 层、第 2 层(见 ISO11898 标
准);实际设计中,这两层完全由硬件实现,设计人员无需再为此开发相关软件
(Soware)或固件(Firmware)。
同时,CAN 只定义物理层和数据链路层,没有规定应用层,本身并不完整,需要一个
高层协议来定义 CAN 报文中的 11/29 位标识符、8 字节数据的使用。而且,基于 CAN 总线
的工业自动化应用中,越来越需要一个开放的、标准化的高层协议:这个协议支持各种
CAN 厂商设备的互用性、互换性,能够实现在 CAN 网络中提供标准的、统一的系统通讯模
式,提供设备功能描述方式,执行网络管理功能。
CANopen 协议是 CAN-in-Automaon(CiA) 定义的标准之一,并且在发布后不久就获得了
广泛的承认。尤其是在欧洲, CANopen 协议被认为是在基于 CAN 的工业系统中占领导地位
的标准。
1.2 CAL
CAL(CAN Applicaon Layer)协议是目前基于 CAN 的高层通讯协议中的一种,最早由
Philips 医疗设备部门制定。现在 CAL 由独立的 CAN 用户和制造商集团 CiA(CAN in
Automaon)协会负责管理、发展和推广
CAL 提供了 4 种应用层服务功能:
(1)CMS (CAN-based Message Speci+caon)
CMS 提供了一个开放的、面向对象的环境,用于实现用户的应用。CMS 提供基于变量、事
件、域类型的对象,以设计和规定一个设备(节点)的功能如何被访问(例如,如何上载
下载超过 8 字节的一组数据(域),并且有终止传输的功能)。
CMS 从 MMS (Manufacturing Message Speci+caon)继承而来。MMS 是 OSI 为工业设备的远
程控制和监控而制定的应用层规范。
(2)NMT (Network ManagemenT)
提供网络管理(如初始化、启动和停止节点,侦测失效节点)服务。这种服务是采用
主从通讯模式(所以只有一个 NMT 主节点)来实现的。
(3)DBT (DistriBuTor)
提供动态分配 CAN ID(正式名称为 COB-ID,Communicaon Object Iden+er)服务。这
种服务是采用主从通讯模式(所以只有一个 DBT 主节点)来实现的。
(4)LMT (Layer ManagemenT)
LMT 提供修改层参数的服务:一个节点(LMT Master)可以设置另外一个节点(LMT
Slave)的某层参数(如改变一个节点的 NMT 地址,或改变 CAN 接口的位定时和波特率)。
1.3 CANopen
CAL 提供了所有的网络管理服务和报文传送协议,但并没有定义 CMS 对象的内容或者
正在通讯的对象的类型(它只定义了 how,没有定义 what)。而这正是 CANopen 切入点。
CANopen 是在 CAL 基础上开发的,使用了 CAL 通讯和服务协议子集,提供了分布式控制系
统的一种实现方案。CANopen 在保证网络节点互用性的同时允许节点的功能随意扩展:或

简单或复杂。CANopen 的核心概念是设备对象字典(OD:Object Diconary),在其它现场
总线(Pro+bus,Interbus-S)系统中也使用这种设备描述形式。对象字典不是 CAL 的一部分,
而是在 CANopen 中实现的。
图 1 CAN 标准、CANopen 协议在 OSI 网络模型中的位置框图
二、CANopen 介绍
CANopen 是一个基于 CAN 串行总线系统和 CAL(CAN 应用层)的高层协议。 CANopen 的核心
概念是设备对象字典(OD: ObjectDictionary),CANopen 通讯通过对象字典(OD)能够访问驱动
器的所有参数。
图 2-1CANopen 设备结构如图
2.1 CANopen 概括
(1) DCF

是 CAN 网络的配置(Config)的数据存档文件。其作用不大,在 Codesys 软件里就有此选项。
(2) EDS
电子数据表格,是描述一台从站设备的属性,参数的文件,是对从站设备对象字典的描述。比如一台
伺服驱动器,如果其内部参数(每个参数对应对象字典中的一个位置,由 index,sub-index 决定)没有更
改,其对应的 EDS 文件就不会更改。多说一句,不是所有的主控制器都需要使用 EDS,比如 Beckhoff 就
不需要,他需要你对 CANopen DS301,DS402 足够熟悉,人工对齐配置;步科 FD,JD 伺服按照
DS402 标准制定 EDS 文件,用户可直接配置,降低开发周期。
(3)复位节点
当设备遇到异常(如从站断线后重连,使用 M258 测试步科 FD 伺服),主控会发送“复位节点”,步
科的 ED 伺服复位节点,驱动器恢复出厂值,而且连 CAN 通讯参数也恢复成默认值。FD,JD 伺服是除了
CAN 通讯参数外,其他配置参数恢复出厂值。
(4)EMCY
紧急报文,从站如伺服,在断电后会发送一条紧急报文,告诉主控其状态,一般伺服断电后,其电容
电量能保证其发送该条报文。
(5)心跳,节点保护
配置心跳参数,设置心跳周期,心跳消费时间,这个消费者时间实际上是作为一个超时参数。主站收
到一个心跳后,开始计时,如果在超时时间内没有收到下一个心跳,则认为从站离线,并报告错误,按照
用户配置的错误处理方法处理。
网络中的每个节点都可以配置心跳,主站可以监听从站,从站可以监听主站,从站还可以监听从站。这里
有一个生产者、消费者的概念,总线上的设备定义自己是心跳的生产者,还是消费者。生产者产生心跳,
消费者监听心跳,然后在捕捉到异常后做出对应的处理。
节点保护,其作用类似心跳,但可以读取从站设备的 CANopen 通讯状态(初始化,预操作,操作中,
停止),属于 DS301 的范畴。
(6) DS301 和 DS402 的区别
DS301 就是一个通讯协议栈,DS402 是建立在 DS301 的上层协议,属于伺服类的控制协议,协议中
规定好每个对象字典值得作用,比如 0x6040,是控制字。DS402 把一个伺服应该具有的功能都定义好了,
开发厂家按照协议定义即可。
(7)对象字典
从软件的角度来说,对象字典本质就是一些数据结构的集合。可以这么理解,把对象字典看做是一
本书,CANopen 设备的行为准则是要参考这本书的,不管它做什么,只要它的行为要参考对象字典,就
必须先查阅字典,再决定要不要做。比如它什么时候发送 TPDO,这个行为是需要查询对象字典中对应于
TPDO 的传输类型以及 Event timer。还有就是像 PDO 映射的原理,比如我要发送的数据,都是去查询这
本书,看下它那里写的什么内容,然后我在把这部分内容以 PDO 的形式发送出去。
例如你的程序收到了一笔 CAN 报文,由于可以访问对象字典的对象是 SDO,首先要判断它是 SDO
对象,那么你的程序就需要按照 SDO 中指定的索引和子索引去查找对象字典(一个排好序的数据结构
集),找到相应的对象后按照 SDO 中的指令去操作这个对象,例如把一个值赋给字典中的变量。
(8)SDO
这个很简单,就是类似串口的一发一回模式,主站发送请求帧,从站回复应答帧。
To write the 1 byte data : 0xFD in the object dictionary of node 5, at index 0x1400, subindex 2, sends :
605 2F 00 14 02 FD 00 00 00
If success, the node 5 responds :
585 60 00 14 02 00 00 00 00
To write the 4 bytes data : 0x60120208 in the object dictionary of node 5, at index 0x1603, subindex 1,
sends :

605 23 03 16 01 08 02 12 60
If success, the node 5 responds :
585 60 03 16 01 00 00 00 00
(9)PDO
分为 TX-PDO,RX-PDO。
RPDO 通信参数
RPDO 映射参数
上图,这就是 PDO 的配置过程,0x1402(接收 PDO 通讯参数),PDO 使用的 cob-id,传输类型,
Inhibit time,EventTimer。
0x1602(映射对象),上例中映射为 Controlword,Target position。
剩余19页未读,继续阅读

















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0