控制工程师论坛

现场总线

基于CAN的高层协议CANopen与DeviceNET的比较

chenwh78
chenwh78

2008-10-21

CAN总线以其成本低廉、通信实时性好、纠错能力强等优点而被汽车工业、电力系统变电站自动化、智能大厦等系统广泛采用。作为一种通信协议,CAN本身并未指出流量控制、节点地址分配、通信建立、设备连接标准等具体的细则。后来在CAN总线协议的基础上,产生了DeviceNET和CANopen协议标准。 

1 CANopen简介
1.1 CANopen由来
    1993年,Bosch公司领导的CAN-BUS协会开始研究CAN-BUS通讯、系统、管理方面的细则,以后逐步完善,由此发展成为CANopen协议,它是CAL(CAN Application Layer)协议基础上开发的,使用了CAL通信和服务协议子集,它在保证网络节点互用性的同时允许节点的功能随意
扩展,定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。CANopen协议是一个开放性的协议,对于开发者来说它是完全免费的。CANopen在发布后不久就获得了广泛的承认,后来,有CiA(CAN in Automation)协会管理、维护、和发展。到2001年,CANopen协议已经成为全欧洲的嵌入式网络标准。

1.2 CANopen协议剖析
1.2.1 网络模型
    CANopen协议的物理层和数据链路层延用了CAL(CAN Application Layer)协议标准,一个网段上最多支持127个节点,采用CAN 收发器芯片,支持CAN2.0和CAN2.0B帧格式收发。并在CiA DS303-1指出了电缆和接点标准,在CiA DS-304中指出了接点保护的规范,即总线要有安全开关、光电隔离、紧急开关、电源保护等。CANopen把CAN的11位标识符分成2部分,及4位功能码和7个操作数据类型,如图1所示。具体分配如表1所示。
 
图1 canopen COB-ID

表1 CANopen标识符的分配表
功能段地址段
0000NMT 系统管理
0001SYNC同步标记
0011PD0(tx)过程数据对象发送包
0100PD0(rx)过程数据对象接收包
1011SDO(tx)服务数据的发送包
1100SD0(rx)服务数据的接收包

    如果是29位的标识符机制,可以把现有的11标识符的定义映射到29位的COB-ID的高11位,使表中的C0B-ID的范围变的更大。
1.2.2 报文格式
    CANopen通信模型定义4种报文:

    其中PDO是实时性要求最高的也是最重要的的数据,它有同步和异步触发2种模式。
1.2.3 通信机理
    CANopen的核心概念是设备对象字典(Object Dictionary,OD),它是一个有序的对象组;每个对象采用一个16位的索引值来寻址,为了允许访问数据结构中的单个元素,同时定义了一个8位的子索引,CANopen网络中每个节点都有一个对象字典。对象字典包含了描述这个设备和它的网络行为的所有参数。一个节点的对象字典是在电子数据文档(Electronic Data Sheet,EDS)中描述或者记录在纸上。CANopen由一系列称为子协议构成。如通信子协议DS-301,还有各种设备子协议(device profile),如DS-404(传感器和调节器),DS-405(可编程控制器)等。通信机理的核心如图2所示。
 
图2 CANopen设备的通信过程
1.2.4 应用中要注意的一些问题
(1)在开发过程中不必要将CANopen协议中的各项内容都一一编写,只要根据应用的具体要求按照CANopen协议编写即可。对象字典都要通过软件实现,这是实现CANopen的关键。
(2)组建对象字典时并没有必要把协议规定的所有项都包括进去,另外还要留出足够的空间,使得用户可以根据以后的具体需要向对象字典中添加功能项。
(3)一般应用中,如果CANopen网络不复杂,使用预定义的标识符分配就能满足要求。对于特别大的系统,如果要制定标识符分配,这需要大量的软件编程。
(4)对于CANopen网络中必须实现的管理功能,一般由一个节点来实现,但也可以由几个节点分别承担。尤其对于SYNC报文传输和标识符的分配,分开来实现会更好。

回帖

评论2

总共 , 当前 /
首页 | 登录 | 注册 | 返回顶部↑
手机版 | 电脑版
版权所有 Copyright(C) 2016 CE China