《电子技术应用》
您所在的位置:首页 > 其他 > 业界动态 > CANopen协议简介

CANopen协议简介

2009-09-03
作者:致远电子

1 引言
  在上期文章中介绍了CAN总线,本期文章中将介绍CANopen协议相关概念及其组网方式。
  CANopen协议是在20世纪90年代末,由CIA(CAN in Automation)组织在CAL(CAN Application Layer)的基础上发展而来,一经推出便在欧洲得到了广泛的认可与应用。经过对CANopen协议规范文本的多次修改,使得CANopen协议的稳定性、实时性、抗干扰性都得到了进一步的提高。并且CIA在各个行业不断推出设备子协议,使CANopen协议在各个行业得到更快的发展与推广。目前CANopen协议已经在运动控制、车辆工业、电机驱动、工程机械、船舶海运等行业得到广泛的应用。
2 CANopen协议简介
  图1所示为CANopen设备结构,CANopen协议通常分为用户应用层、对象字典以及通信三个部分。其中最为核心的是对象字典,这部分将在本文以下章节中介绍。CANopen通信是CANopen关键部分,其定义了CANopen协议通信规则以及与CAN控制器驱动之间对应关系,熟悉这部分对全面掌握CANopen协议至关重要,这部分将在以下章节中进行介绍。用户应用层是用户根据实际需求编写的应用对象,本文对此将不作介绍。

 


3 CANopen对象字典
  CANopen对象字典OD(Object Dictionary)是CANopen协议最为核心的概念。所谓的对象字典就是一个有序的对象组,每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x1000~0x9FFF之间。为了允许访问数据结构中的单个元素,同时也定义了一个8位的索引值,这个索引值通常被称为子索引。
  每个CANopen设备都有一个对象字典,对象字典包含了描述这个设备和它的网络行为的所有参数,对象字典通常用电子数据文档EDS(Electronic Data Sheet)来记录这些参数,而不需要把这些参数记录在纸上。对于CANopen网络中的主节点来说,不需要对CANopen从节点的每个对象字典项都访问。
  CANopen对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等,这样可保证不同厂商的同类型设备兼容。
  CANopen协议的核心描述子协议是DS301,其包括了CANopen协议应用层及通信结构描述,其他的协议子协议都是对DS301协议描述文本的补充与扩展。在不同的应用行业都会起草一份CANopen设备子协议,子协议编号一般是DS4xx。
  CANopen协议包含了许多的子协议,其主要划分为以下三类:
  (1)通信子协议(Communication Profile)
  通信子协议,描述对象字典的主要形式和对象字典中的通信对象以及参数。这个子协议适用所有的CANopen设备,其索引值范围从0x1000~0x1FFF。
  (2)制造商自定义子协议(Manufacturer-specific Profile)
  制造商自定义子协议,对于在设备子协议中未定义的特殊功能,制造商可以在此区域根据需求定义对象字典对象。因此这个区域对于不同的厂商来说,相同的对象字典项其定义不一定相同,其索引值范围为0x2000~0x5FFF。
  (3)设备子协议(Device Profile)
  设备子协议,为各种不同类型的设备定义对象字典中的对象。目前已有十几种为不同类型的设备定义的子协议,例如DS401、DS402、DS406等,其索引值范围为0x6000~0x9FFF。
4 CANopen通信
  在CANopen协议中主要定义了管理报文对象NMT(Network Management)、服务数据对象SDO(Service Data Object)、过程数据对象PDO(Process Data Object)、预定义报文或特殊功能对象等四种对象。
  (1)管理报文NMT
  管理报文负责层管理、网络管理和ID分配服务,例如,初始化、配置和网络管理(其中包括节点保护)。网络管理中,同一个网络中只允许有一个主节点及一个或多个从节点,并遵循主从模式。
  (2)服务数据对象SDO
  SDO主要用于主节点对从节点的参数配置。服务确认是SDO的最大特点,为每个消息都生成一个应答,确保数据传输的准确性。在一个CANopen系统中,通常CANopen从节点作为SDO服务器,CANopen主节点作为客户端。客户端通过索引和子索引,能够访问数据服务器上的对象字典。这样CANopen主节点可以访问从节点的任意对象字典项的参数,并且SDO也可以传输任何长度的数据(当数据长度超过4 B时就拆分成多个报文来传输)。
  (3)过程数据对象PDO
  PDO用来传输实时数据,其传输模型为生产者消费者模型,如图2所示。数据长度被限制为1~8 B。PDO通信对象具有如下的特点:


  ①PDO通信没有协议规定,PDO数据内容由它的CAN-ID(也可称为COB-ID)定义。
  ②每个PDO在对象字典中用2个对象描述:
  · PDO通信参数,该通信参数定义了该设备所使用的COB-ID、传输类型、定时周期;
  · PDO映射参数,映射参数包含了一个对象字典中的对象列表,这些对象映射到相应的PDO,其中包括数据的长度(单位为bit),对于生产者和消费者都必须要知道这个映射参数,才能够正确地解释PDO内容。
   ③PDO消息内容是预定义的,如果PDO支持可变PDO映射,那么该PDO可以通过SDO进行配置。
  ④PDO可以有多种传输方式:
  · 同步传输(通过接收同步对象实现同步),同步传输又可分为非周期和周期传输。非周期传输是由远程帧预触发或者由设备子协议中规定的对象特定事件预触发传送。周期传输则是通过接收同步对象(SYNC)来实现,可以设置1~240个同步对象触发。
  · 异步传输(由特定事件触发),其触发方式可有两种,第一种是通过发送与PDO的COB-ID相同的远程帧来触发PDO的发送,第二种是由设备子协议中规定的对象特定事件来触发(例如定时传输、数据变化传输等)。
  (4)预定义报文或特殊功能对象
  预定义报文或特殊功能对象为CANopen设备提供特定的功能,方便CANopen主站对从站管理。在CANopen协议中,已经为特殊的功能预定义了COB-ID,其主要有以下几种特殊报文:
  ①同步(SYNC),该报文对象主要实现整个网络的同步传输,每个节点都以该同步报文作为PDO触发参数,因此该同步报文的COB-ID具有比较高的优先级以及最短的传输时间;
  ②时间标记对象(Time Stamp),为各个节点提供公共的时间参考;
  ③紧急事件对象(Emergency),当设备内部发生错误触发该对象,即发送设备内部错误代码;
  ④节点/寿命保护(Node/Life Guarding),主节点可通过节点保护方式获取从节点的状态,从节点可通过寿命保护方式获取主节点的状态;
  ⑤启动报文对象(Boot-up),从节点初始化完成后向网络中发送该对象,并进入到预操作状态。
5 CANopen预定义连接集
  CANopen预定义连接是为了减少网络的组态工作量,定义了强制性的缺省标识符(CAN-ID)分配表,该分配表是基于11位CAN-ID的标准帧格式。将其划分为4位的功能码和7位的节点号(Node-ID)。如图3所示,在CANopen中也通常把CAN-ID称为COB-ID(通信对象编号)。


  其中节点号由系统集成商给定,每个CANopen设备都需要分配一个节点号,节点号的范围为1~127(0不允许被使用)。预定义连接集定义了4个接收PDO(Receive-PDO)、4个发送PDO(Transmit-PDO)、1个SDO(占用2个CAN-ID)、1个紧急对象和1个节点错误控制(Node-Error-Control)ID。也支持不需确认的NMT模块控制服务、同步(SYNC)和时间标志(Time Stamp)对象报文。
6 CANopen网络结构
  图4所示为CANopen典型的网络结构,该网络中有一个主节点,三个从节点以及一个CANopen网关挂接的其他设备。由于CANopen是基于CAN总线,因此其也属于总线型网络,在布线和维护等方面非常方便,可最大限度地节约组网成本。


  CAN总线作为新型成熟的现场总线已经应用到生活生产的各个领域。其中基于CAN总线的CANopen协议,以其独特的优势已经成为行业标准,CANopen也必将成为现场总线的发展趋势。
  广州致远电子有限公司提供各种接口的CANopen接口卡、CANopen终端设备(包括数据采集,电机控制等)、CANopen分析仪、网关及网桥、OPC服务器以及基于CANopen协议的整套组网方案及应用开发。

本站内容除特别声明的原创文章之外,转载内容只为传递更多信息,并不代表本网站赞同其观点。转载的所有的文章、图片、音/视频文件等资料的版权归版权所有权人所有。本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如涉及作品内容、版权和其它问题,请及时通过电子邮件或电话通知我们,以便迅速采取适当措施,避免给双方造成不必要的经济损失。联系电话:010-82306118;邮箱:aet@chinaaet.com。