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标识符的分配表 功能段 | 地址段 | 0000 | NMT 系统管理 | 0001 | SYNC同步标记 | 0011 | PD0(tx)过程数据对象发送包 | 0100 | PD0(rx)过程数据对象接收包 | 1011 | SDO(tx)服务数据的发送包 | 1100 | SD0(rx)服务数据的接收包 | 如果是29位的标识符机制,可以把现有的11标识符的定义映射到29位的COB-ID的高11位,使表中的C0B-ID的范围变的更大。 1.2.2 报文格式 CANopen通信模型定义4种报文: - 管理报文 主要网络管理和ID分配服务,如初始化,配置和网络管理(包括:节点保护)。
- 服务数据对象(Service Data Object,SDO) 通过使用索引和子索引(在CAN报文的前几个字节),SDO使客户机能够访问设备(服务器)对象字典中的项(对象)。SDO通过CAL中多元域的CMS对象实现,允许传送任何长度的数据(当数据超过4个字节时分拆成几个报文)。
- 过程数据对象(Process Data Object,PDO) 用来传输实时数据,数据从一个生产者传到一个或多个消费者。数据传送限制在1~8个字节。
- 预定义和特殊功能对象 包括同步(SYNC)、时间标记对象(Time Stamp)、紧急事件(Emergency)、节点/寿命保护(Node/Life guarding)、Boot-UP过程对象。
其中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 DeviceNET简介 2.1 DeviceNET由来及OSI/SIO参考模型 DeviceNET协议最初有美国的Rockwell自动化公司开发应用。目前有ODVA(Open DeviceNET Vendor Association)组织管理和推广。它是一个开放式的协议,只要付出象征性的资金获得ODVA的一个许可号码,就可以得到协议的详细内容。DeviceNET属于CIP(Control and Information Protoco1)网络的范畴,CIP网络有下列特点: (1)报文的传输类型有I/O、互索、配置、程序上下载等; (2)它是一个面向连接的协议,必须要先建立,才能通信; (3)采用生产者/消费者模型; (4)可以支持主从,多主,对等,或者三种模式的任意组合; (5)面向对象编程等特点。 DeviceNET以CIP协议为基础,沿用了CAN 协议标准所规定的ISO参考模型中物理层和数据链路层的一部分,并补充了不同的报文的传送格式,总线访问仲裁规则及故障检测和隔离的发法。DeviceNET增加了传输介质的协议规范,每个网段最大只允许有64个节点,采用干线支线进行网络拓扑;5线制总线结构(2信号线,2电源线,1屏蔽线),总线支持125/250/500 kb/s三种波特率,最大传输距离为500 m,DeviceNET使用5线制,可以对网络上的节点进行总线供电。又由于它采用5线制,在实际的应用中接错的可能性更大,所以要求节点能够承受由于任意的5条线误接而产生的电压。所以在这个原因下,要求在实际的应用中的收发器一定要符合DeviceNET规范的规约中,仅要求收发器能承受2条信号线的误接线产生的电压。DeviceNET要有节点的接地和隔离,即任一设备必须要有隔离栅,以及节点的误接线保护电路。
2.2 标识符分配 DeviceNET中,每一个连接有一个11位的连接标识符(Connection ID,CID)来标识,将CID分成优先级不同的4组报文,如图3所示。组一报文优先级最高,通常用来发送设备的I/O报文,报文组四优先级最低,用于设备离线时的通信。
2.3 DeviceNET报文 I/O报文用来传送实时性,准确性高的数据。而且支持多种触发方式,如位选通(bit strobe)、轮询(poll)、状态改变(change of state)和循环(cyclic)等。 显式报文 用来传送实时性要求低的对象,如上下载程序、修改设备组态、记载数据日志等。
2.4 对象模型 DeviceNET的每个节点被模型化为对象的集合,主要包括连接对象、对象实例、标识对象、参数对象等。它是一个面向对象的连接,可以用VC++类对象编程。通信核心是;根据数据的优先级分配成哪类报文组CID,根据节点对象模型引用和配置参数,初始化网络。 3 主要区别 3.1 传输距离 CANopen网络可实现远距离传输(≤10 km),工作速率可调(1 Mb/s≥ 通讯速率≥ 5 kb/s),因此,在实际应用中,要考虑到传输距离的限制而选择总线协议。如果用devicenet进行远距离传输,要使用网络中继器,现在市场上已经有很多这两种总线系统的中继器产品.
3.2 标识符分配 CANopen支持CAN2.0 A11位和CAN2.0 B29位标识符,而且报文的优先级只能通过它的大小来区分,通常节点地址比较小的COB-ID报文的优先级最高。如果要传送需要快速响应的事件,则要通过预定义和特殊功能对象,如同步(SYNC),时间标记对象(time stamp),紧急事件(emergency),PDO 用来传输实时数据,优先级大于SDO,因为SDO的数据量大,通常用于设备初始化组态。而DeviceNET只用了CAN2.0 A的11位标识符去分组定义报文的优先级,这种信息组设计方法使总线优先级可任意分布,而不仅和节点地址有关。还取决与它是I/O还是显示报文,报文的组号等。虽然CANopen和DeviceNET的标识符分配机制不同,但都可以很方便的定义报文的优先级。
3.3 初始化组态不同
3.4 软件开发流程不同
3.5 应用领域 CANopen不仅可以用在远距离的通信系统中,还可以用在像咖啡机、电子直线加速器、大型超市自动化、安全系统、注压机等系统中。DeviceNET比较适合应用在传感器设备、微型执行器设备等设备上。 4 结语 本文通过对两种非常流行的现场总线协议的比较,清楚地说明了它们的不同之处,两者的技术有时可以互相借鉴,在具体的工业应用中,要综合考虑它们的价格,接线保护,通信长度,开发时间,通信机制等的不同,选择最适合的现场总线。 CAN总线在各个领域有着很好的应用前景,CANopen和DeviceNET是一种国际上公开的应用层总线协议,它们和CAN协议构成一个完整的网络协议,它可以使开发商生产的设备具有很好兼容性。DeviceNET的技术以及应用在国内外已经趋于成熟,CANopen协议在欧洲已经非常流行,但国内应用的还不多,有待进一步研究。
|