首页 理论教育CANopen应用层与现场总线应用技术

CANopen应用层与现场总线应用技术

【摘要】:CANopen应用层详细定义了通信服务和其他相关的通信协议。CANopen规范中所定义的基本通信服务构成了应用程序与CANopen应用层之间的接口。3)响应:应用程序对CANopen软件报告的事件或任务做出的应答。通信单元提供数据传输所需的所有机制和通信对象,符合CANopen规范的数据可以利用这些机制通过CAN接口进行传输。CANopen协议已经将对象字典进行了分配,见表4-25。

CANopen应用层详细定义了通信服务和其他相关的通信协议。通信对象、过程参数和配置参数一起保存在设备的对象字典中。通信对象中的标识符可以通过“预定义主/从连接集”或应用子协议中定义的“预连接”来分配。通信协议由各种不同的CAN报文来实现。由于大多数的通信对象都可以被“破坏”或“生成”,所以通信对象的优先级必须根据实际的应用来分配。通信对象的分配方式与应用对象的动态分配方式相结合,使得系统集成商有了更多的方式进行参数配置,也就是说,在设计通信参数方面的自由度变得更大。

CANopen规范中所定义的基本通信服务构成了应用程序与CANopen应用层之间的接口。基本服务有以下4种:

1)请求:应用程序请求CANopen软件的一种通信服务。

2)指示:CANopen软件向应用程序报告某一事件或应执行的任务。

3)响应:应用程序对CANopen软件报告的事件或任务做出的应答。

4)确认:CANopen软件向应用程序确认CANopen软件已经执行了任务。

CANopen应用层的服务类型分为2种,一种是仅在一个设备中执行的服务,比如局部服务和提供者启动的服务;另一种是多个设备通过网络进行通信的服务,比如确认和未确认的服务。

1.基本原理

由于CAN只对物理层和数据链路层进行了定义,因此,为了能让设备之间通过CAN进行通信,用户还需要进行一些与应用相关的定义。首先,将网络中可用的CAN标识符分配给每个设备。这样才能知道哪些消息的优先级高,哪些消息的优先级低,设备之间是否具有优先顺序,或CAN标识符中是否包含预设功能。其次,为了不让系统中出现功能不同但CAN报文相同的情况,用户还要做出一些相关的定义。

除了上述定义外,传输的数据内容也要定义,主要包括数据内容的传输格式以及数据读取规则。

通信单元由CAN收发器、CAN控制器以及CANopen协议栈组成。协议栈中包括实现通信的通信对象(如过程数据对象(PDO)和服务数据对象(SDO))和状态机。通信单元提供数据传输所需的所有机制和通信对象,符合CANopen规范的数据可以利用这些机制通过CAN接口进行传输。

在CANopen设备的应用单元中,对设备的基本功能进行了定义或描述。例如,在I/O设备中,可以访问设备的数字或模拟输入/输出接口;在驱动控制系统中,可以实现轨迹发生器或速度控制模块的控制。

对象字典是应用单元与通信单元之间的接口,实际上是设备的所有参数列表。应用单元和通信单元都可访问这个参数列表。对对象字典中的词目进行读或写。例如,为通信对象配置不同的CAN标识符。如果应用对象是一个调节器,那么对象字典中的词目就是调节器的参数。

2.通信对象

CANopen应用层详细描述了各种不同类型的通信对象(COB),这些通信对象都是由一个或多个CAN报文实现的。通信对象分为以下4种类型:

1)过程数据对象(PDO消息),用来传输实时数据。

2)服务数据对象(SDO服务器消息和SDO客户端消息),用来读/写其他CANopen设备的对象字典。

3)预定义对象(同步、时间和紧急报文)。(www.chuimin.cn)

4)网络管理对象,用来控制NMT状态机(NMT消息)和监测设备(心跳、启动报文)。

(1)过程数据对象

在许多集中式控制系统中,各种设备都可能会定时传输其所有的过程数据。通常情况下,控制主机会通过轮询的方法来查询从机的过程数据,按照一定的顺序进行查询。从机则把各自过程数据应答给控制主机。

在CANopen中,过程数据被分为几个单独的段,每个段最多为8个字节,这些段就是过程数据对象(PDO)。过程数据对象由一个CAN报文构成,过程数据对象的优先级由对应的CAN标识符决定。过程数据对象分接收过程数据对象(RPDO)和发送过程数据对象(TPDO)两种。

(2)服务数据对象

CANopen设备为用户提供了一种访问内部设备数据的标准途径,设备数据由一种固定的结构(即对象字典)管理,同时也能通过这个结构来读取。对象字典中的条目可以通过服务数据对象(SDO)来访问,此外,一个CANopen设备必须提供至少一个SDO服务器,该服务器被称为默认的SDO服务器。而与之对应的SDO客户端通常在CANopen管理器中实现。因此,为了让其他CANopen设备或配置工具也能访问默认SDO服务器,CANopen管理器必须引入一个SDO管理器。

被访问对象字典的设备必须具有一个SDO管理器,这样才能保证正确地解释标准的SDO传输协议,并确保正确地访问对象字典。SDO之间的数据交换通常都是由SDO客户端发起的,它可以是CANopen网络中任意一个设备中的SDO客户端。

3.对象字典

在对象字典中,CANopen设备的所有对象都是以标准化方式进行描述的。对象字典是所有数据结构的集合,这些数据结构涉及设备的应用程序、通信以及状态机。对象字典利用对象来描述CANopen设备的全部功能,并且它也是通信接口与应用程序之间的接口。

对象字典中的对象可以通过一个已知的16位索引来识别,对象可以是一个变量、一个数组或一种结构;数组和结构中的单元又可以通过8位子索引进行访问(不允许嵌套结构)。

CANopen协议已经将对象字典进行了分配,见表4-25。

表4-25 对象字典的结构

978-7-111-55649-7-Chapter04-139.jpg

这样用户就可以通过同一索引和子索引获得所有设备中的通信对象,以及用于某种设备类别的对象(设备、应用或接口子协议)。而制造商相关的属性则保存在事先保留的索引范围内(即制造商定义的范围),而且索引的结构也已固定。

4.网络管理系统

网络管理系统(NMT)负责启动网络和监控设备。为了节约网络资源(尤其是CAN标识符和总线带宽),将CANopen网络管理系统设计成一种主/从机系统。对于那些出于安全原因要求在网络中包含多个NMT主机的应用而言,可以采用一个“动态主机”(Flying NMT Master)。当活动的NMT主机出现故障时,另一个设备将会自动承担NMT主机的义务。

在CANopen网络中只允许有一个活动的NMT主机,通常为中央控制器(即应用主机)。原则上每一种设备(包括传感器)均可执行NMT主机功能。如果网络中有多个设备都具有NMT主机功能,则只有一个能配置成主机。有关配置NMT主机的详细信息可在用于编程CANopen设备的“框架规范”(CiA 302)中找到。