关键词:现场总线; CAN总线; CANopen; 协议
引言
现场总线的应用研究日益广泛,在众多的现场总线中,其中 CAN总线以其易于掌握、易于开发等优点,成为一种很有应用前景的现场总线。但CAN不是一种完整的网络协议,缺少应用层和网络管理部分。CANopen是最初由从事工业控制的CiA(CAN in Automation)会员开发的针对工业系统,并基于CAN通信协议的应用层协议。CANopen在包括海上电子设备,医疗设备以及铁路系统等多个领域都有广泛的应用。
一、CANopen 协议结构
CANopen协议的结构定向根据ISO11898国际标准,以开放系统互联网络OSI为参考模型,结构如图1所示:
图1 CANopen通信参考模型
如图所示,在数据链路层,具有CAN控制芯片,遵循CAN 2.0A/2.0B协议,物理层规定执行ISO11898国际标准,数据链路层和物理层由硬件实现
CANopen的设备规范,使得制造商可以按照其规范生产标准的通用设备,也不需要特殊的软件来把不同厂家的网络设备组建起来。基本的网络操作由明确的强制的设备规范所保证。CiA提供了包括CiA-401的I/O模型,以及CiA-404的用于测量设备和闭环控制的规程。这些规程都由一个叫做“对象字典”的标准化数据库来实现。对象字典可以用一个16 位的索引进行存取,在数组和结构的情况下再用一个8 位的子索引。该字典也描述了设备的全部应用对象。
二、CANopen通信对象
CANopen通信标准规定了四中通信对象(报文),通过通信标识符(COB-ID)或CAN标识符来表示区分。
1. 网络管理报文NMT
网络管理报文提供网络管理服务,例如,初始化,错误控制和设备状态控制。所有这些功能都是基于主-从这个概念上的。
1.1 NMT对象
NMT 对象映象到一个单一的带有2 个字节数据长度的CAN 帧,它的标识符为0 ,第一个字节包含命令说明符,第二个字节包含必须执行此命令的设备的节点标识符,当节点标识符为0 时,所有的从节点必须执行此命令。由NMT 主站发送的NMT 对象强制节点转换成另一个状态。
1.2 NMT节点保护(Node guarding)
节点保护对象是由NMT 主站节点远程请求的具有一个字节的CAN 帧。 数据字节主要包含节点的状态, 节点保护时间在对象定期发送,节点保护时间也在对象字典中作了规定。此外还规定了保护时间寿命(Life Guarding Time) ,在该时间区内NMT 主站必须保护一个NMT 从站,这就确保了即使在主站不存在的情况下,节点仍能以用户指定的方式作出反应。
图2显示了NMT功能和特定命令字的关系:
图2 NMT功能命令字
2. 过程数据对象(PDO)
过程数据对象用来传递实时数据,数据由一个生产者发出,可以有一个或多个消费者接受。数据传输被限制在1到8个字节内,每个PDO 有一个唯一的标识符,标识符具有高优先级以确保良好的实时性能,如果需要硬实时控制,那么系统的设计者可为每个PDO 组态一个禁止时间(inhibit-time) ,该“禁止时间”严禁在特定的时间内发送这个对象。PDO有三种传输模式:
(1)事件或定时器触发PDO模式。此种传输模式又叫做异步PDO模式。当设备内的特别设备或特别制造商事件发生时PDO被传送,这些事件如应用数值的改变,例如数字输入的改变,温度的改变等。使用这种传输模式对网络带宽的要求最低。
(2)远程请求触发PDO模式。PDO消费者可以通过发送一个CAN远程帧,相应的PDO生产者将对远程帧做出反应。由于不同CAN控制器的远程帧行为不同,所以在正常运作时这种传输模式是不允许的。此外,相比事件或定时器触发PDO模式,此传输模式对带宽有更高的要求。
(3)同步触发PDO模式。同步PDO模式由Sync(同步)报文触发。负责发送同步报文的是同步生产者(Sync producer),同步生产者可以存在于如简单的输入输出设备,驱动器和复杂的过程控制设备中。
3. 服务数据对象(SDO)
服务数据对象用于建立两个CANopen设备的点对点通信,这种连接是基于客户/服务器机理的。SDO服务器是对要求连接设备提供对象字典的设备,SDO客户是想连接特定设备的对象字典的设备。SDO服务是基于具有两个不同标识符的CAN报文之上的,一个报文由SDO服务器使用,另外一个由SDO客户使用。一个SDO客户可以有最多127个通道,也就意味着一个SDO客户可以同时和最多127个不同设备连接。
4. 预定报文或特殊功能对象
CANopen 还定义了三个特定对象:同步,时间标记,和应急对象。
(1)同步对象(Synchronization object)。同步对象通过外部事件同步所有设备。在网络上有一个设备是同步发生器,它的唯一功能就是产生同步信号,网络上的任何设备在接受到同步信号后都必须同步。同步信号是一个短报文,它只是一个CAN报文,而没有任何数据,但它可具有多达8 个字节的用户专用数据
(2)时间标记对象(Time Stamp Object)。时间标记对象利用系统时钟同步本地时钟。一个通用的时间帧参考提供给设备,它包含一个时间和日期的值,相关的CAN 帧有标识符256 和一个6 个字节长度的数据字段。
(3)应急对象(Emergency object)。应急对象被用来传递应用设备的状态信息。由设备内部出现致命错误来触发。因此应急对象适用于中断类型的报警信号。每个“错误事件”(error event)只能发送一次应急对象,只有当设备发生新的应急事件时,才可以再发送应急对象。CANopen通信标准规定了应急错误代码,它是一个单一的具有8 个数据字节的CAN 帧。
三、标识符的地址分配
为了减少对简单网络管理工作,CANopen 定义了强制性的缺省标识符地址分配表。这些标识符在初始化后可以在预操作状态中获得。这个缺省ID分配表包括一个功能部分和一个模块ID部分。标识符规定了其对象的优先级别。
这些ID分配表允许单一主设备与多达127个从设备进行点对点(peer-to-peer)通信。也支持非确认的NMT 广播,同步和时间标定对象以及节点保护。预定的主/从连接集支持1个应急对象(Emergency object),1个SDO,最多4个接收PDO(Receive-PDO)和4个发送PDO(Transmit-PDO) 和节点保护对象(Node Guarding Object)。
预定主/从连接集定义了一些CAN标示符,而其他的是开放的,可以有设计者定义。NMT(0),缺省SDO(1405-1535和1537-1663),NMT错误控制报文(1793-1919)这些标示符是固定不可改变的。
四、结束语
总之,CANopen为客户提供了标准的CAN的应用层协议。CANopen非常灵活的应用层协议和许多可供选择的特性都有利于嵌入式网络设计者设计出更有竞争力的产品。此外,已经有很多通用的管理工具及软件,客户可以根据自己的需要设计特定的网络设备。随着对现场总线研究的深入,CANopen将会在更多领域得到广泛应用。