CAN應用層和CANopen

CANopen 概述

CANopen是附加了一套设备子协议的高层(第7层)CAN通信协议。作为一种标准化、高度可配置的嵌入式网络解决方案,它广泛应用于实时工业应用、机器人、医疗、交通、汽车和航空等领域。CANopen设备子协议系列规定了各种标准化的通信机制和设备功能,以服务于各种应用程序。CANopen标准由CAN in Automation (CiA)国际用户和制造商协会维护保持。

CANopen的优势

  • 通过应用程序和网络活动服务,使具备高度灵活配置能力的嵌入式应用标准化。
  • 标准化的设备、接口和应用程序配置有助于CANopen系统和高度模块功能的充分集成,并提供互操作性和互换性。
  • 众多国际供应商支持的高度标准化协议。
  • 实时数据交换,同步与异步,循环与非循环,事件驱动。
  • 具有高效寻址方案的对象字典,允许系统工程师和应用程序开发人员在CANopen基本配置文件上进行扩展,并提供扩展设备配置和诊断功能。
  • SDO(服务数据对象)报文与对象字典相结合,为系统设计者提供了通过网络进行设备配置的途径。
  • 各种通信对象都允许系统设计者为过程数据通信、错误显示和网络控制,设计编程所需的网络功能。
  • 通过专用同步SYNC(同步对象)和TIME(时间标识对象)实现高效同步。
  • 通过Node Guarding (节点监测) 进行可靠的节点监测和诊断。
  • 高效灵活的设备状态,实现耐用性、容错性和恢复能力。

觀看由CAN in Automation組提供的有關“ CANopen FD”的更新。

CANopen协议

CiA 通过一系列文件维护保持 CANopen 设备和通讯协议规定。CANopen 的 CiA 文件 包括下列3类:

CiA规定 – 为实施协议,对硬件及软件配置的功能规定。
CiA建议 – 关于最适宜解决方案的信息。
CiA 实施和用户指南– 关于怎样使用CiA 功能和建议的说明。
基本配置由CiA 301规范定义。它被命名为“CANopen应用层和通信配置”,并规定了CANopen应用层。这些规范包括:

1. CANopen对象字典中的数据类型、编码规则和对象
2. CANopen通信服务和协议
3. CANopen 网络管理服务和协议
4. CANopen 通讯配置 – 物理层
5. 预定义的通信对象标识符连接数集、与紧急事件相关的对象、时间标识和同步通信对象
此基本 CiA 301配置规定由其他CiA文件进行了补充和扩展,为一些具体领域的设备和功能规定了设备、应用程序和接口配置。下面是其中几个例子:

CiA 302 – CANopen 附加应用层功能
CiA 303-1 – 布线和接头管脚分配
CiA 303-3 – 指示器规范
CiA 306 – CANopen 电子数据表规范
CiA 309 – 从其他网络接入CANopen
CiA 315 – CANopen 通用框架
CiA 401 – 通用I/O模块的CANopen设备配置
CiA 402 – 驱动和运动控制的CANopen设备配置

CANopen设备模型

每个CANopen设备都遵循一个通用的设备模型,因此不同的设备能依据同样的CANopen标准。CANopen设备模型的三个组成部分是:

  • 通讯
  • 对象字典
  • 应用软件

通讯

CANopen通过不同的通讯模式在节点之间传输报文:

生产/消费模式: 它是一个广播连接,以推送模式工作(信号生产节点向消费节点发送无任何特定要求的信息)和引入模式(消费节点向信号生产节点要求特定信息)。

用户机/服务器模式: 通过SDO协议,用户节点向服务器节点要求数据(对象字典索引),然后服务器节点通过发送在指定索引处的对象内容来响应。

主机/从机模式: 主机节点可在任何时候向从机节点发送或要求数据。例如:NMT协议通信。

CANopen通信单元由必要的通信接口和协议软件组成,通过总线在节点之间进行通信对象的发送和接收。各种CANopen通信对象用于实现各种类型的通信,如过程数据、网络管理、节点监控、同步信号错误控制和紧急报文。这些对象及其说明如下:

CANopen帧

它由下列场组成:

  • 11位 CAN帧id,也称为CANopen通信对象标识符(COB-ID)。它进一步分为4位功能代码(代表一个CANopen通信对象)和7位节点id。
  • 1位远程传输请求 (RTR)。
  • 4位数据长度。
  • 0 – 8字节的数据。

对象字典

对象字典(OD)是CANopen协议的核心概念。它是一组预定义的CANopen对象,通过网络使用索引和子索引访问对象。对象字典提供了应用程序和设备之间的沟通方式,提供了配置该设备的途径,和与设备通信的方法。作为对象索引存储在对象字典中的信息包括:

  • 通信和应用程序配置参数
  • 标准化设备配置参数
  • 制造商特定设备配置文件参数
  • 设备配置静态数据类型
  • 设备配置复杂数据类型
  • 复杂和静态数据类型
  • 制造商特定数据类型
  • 其他

从上述对象说明可以清楚地看出,制造商可以通过扩展由标准设备配置和数据类型规范要求的标准设备功能,来增强其设备的功能。他可以按照CANopen标准的指导,以预定义的方式添加自己特定的制造商配置和数据类型。

对象字典条目中的场包括:

主索引: 16位索引,直接对应对象字典中的条目。对于简单变量,该索引直接引用变量值;对于复杂类型,该索引对应整个记录或数组。

索引: 对应具体数据场的8位子索引,如主索引指向的复杂数据结构中的数组项或记录值。

对象: 条目中对象类型的符号名称。例如:变量、数组、记录等。
名称: 描述条目的字符串。

类型: 条目的数据类型限定词。例如:UNSIGNED32、BOOLEAN等。

属性: 此条目的访问权限值。例如:读取和书写,只读取,只书写。

必须/可选/Optional: 设备必须实现此具体对象条目,还是可以选择执行。

各种对象参数组按索引范围排列如下:

通讯配置的范例索引

引用复杂或结构化数据类型条目的子索引示例

这些条目用于单通道RS-232适配器,其通信参数在索引6092H处以单一结构数据类型存在。然后,各个通信参数存在于子索引6092H中,范围从0起。

上述对象字典项的C编程语言结构定义为:

typedef struct{
	UNSIGNED char NumberOfEntries;
	UNSIGNED short BaudRate;
	UNSIGNED char NumberOfDataBits;
	UNSIGNED char NumberOfStopBits;
	UNSIGNED char Parity
} RS232

CANopen的网络管理

CANopen的网络管理采取主机/从机通信模式。整个网络被设置为一个“状态机”,其中一个设备被指定为NMT主机,另一个设备被指定为NMT从机。NMT主机控制和监控NMT从机的状态。通过NMT主机触发,NMT从机进行状态转换,实现CANopen网络的各个阶段。

通过具体的NMT协议,如启动协议、模块控制协议、心跳协议(Heartbeat Protocol)和节点监测,从主机向从机发出状态更改命令,进行这些状态转换。NMT主机向特定节点或所有节点发送NMT命令代码以改变状态。

NMT从状态机的初始状态序列从开机,或从关机事件的恢复开始,然后是设备初始化。然后,NMT从机将自动转换到预运行状态。在错误监测和诊断期间的内部设备重置(重置应用程序和重置通信)也会使NMT从机进入初始化状态,然后进入预运行状态。在此转换之前,该从机将使用启动协议向总线发送启动报文,以表明启动过程。

在预运行状态下,应用程序配置工具可以使用SDO通信,配置NMT从机和设置参数。由于设备尚未开始运行,因此在此状态下不能使用PDO通信。

一旦状态从预运行变为运行状态,节点中的所有通信对象都将变为活跃状态,并且运行节点之间均可进行PDO和SDO通信。在此阶段,也可以通过SDO访问对象字典。当节点状态更改为停止时,PDO和SDO通信都将停止。

CANopen中的节点监测

NMT主机定期使用远程帧询问从机的当前状态,并将其与网络数据库中记录的早期状态相比较。任何不匹配和缺少PDO传输的状态都会以适当的错误代码表示,然后应用程序将采取适当的操作,如设备重置或错误标识。这称为节点监测,是通过使用节点监测协议得以实现。NMT从机使用一种称为生命监测的技术,通过在预定义的时间间隔里,内部检查节点监测帧的接收,来检测NMT主机的缺失。

现代设备设计使用Heartbeat协议进行节点监视,其中NMT从设备(Heartbeat Producer心跳发出者)将周期性地向NMT主设备(Heartbeat Consumer心跳使用者)发送Heartbeat报文。这些报文之间的间隔是可配置的,并在主、从两个设备的对象字典中Heartbeat producer time(心跳产生时间)对象上都进行设置。如果心跳报文在此时间限制内未到达,则发出者将被视为关机,使用者将采取补救措施,如设备重置或错误显示。

预定义的连接数组

对于只有1个主机和最多127个从机的简单通信结构,CANopen提供了CAN报文标识符的预定义分配,这被称为预定义连接数集。此方法的主要目的是减少简单网络中仅需要点对点连接的的配置数量。此预定义的主从机连接机制支持按设备分配通信对象,如下所示:

  • 一个紧急状况对象
  • SYNC和时间标识对象
  • 一个 SDO 连接
  • NMT节点监测 (节点监测/心跳)
  • 最多 4个输出和4 个输入PDO

电子数据表格和 CANopen 系统配置

一个电子数据表(EDS)是一个标准化的电子文件,描述为CANopen设备定义的通信功能和对象。此供应方生成的文件有3个区域:

  • 关于EDS文件的信息
  • 一般设备信息
  • 具有默认变量的对象字典

EDS文件可用作CANopen设备的配置和网络设置工具。

CANopen 和 Kvaser

Kvaser 开发了 Kvaser CANopen Stack, 这是一个使用便捷、存储高效的AAPI,能实现CANopen设备的高性能运行 。它完全符合CANopen标准,并完全支持CANopen主机和从机功能。

CANopen在工业中的应用

Vector Informatik GmbH 是CCANalyzer的的开发商 – 这是 CANopen 网络分析和模拟的最佳软件工具之一。

Port GmbH 开发了大量CANopen 工具,包括:

  • 用于CANopen设备开发的CANopen Design Tool。
  • CANopen 主机/从机协议库
  • CANopen 模块和配置文件
  • CANopen 设备监测
  • CANopen 网关服务器

National Instruments提供一个1-Port C系列CANopen接口模块,用于帮助CANopen应用程序开发。

有许多其他CANopen商业工具,以及开源API和协议栈,比如CANopenNode,它们使用CANopen的开放架构,借助于此协议的高度标准化、详细的建议和指南,发展新的应用。


更多資源