CAN与CANOpen

Posted maifansnet

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAN与CANOpen相关的知识,希望对你有一定的参考价值。

CAN与CANOpen(一)基本概念 
CAN与CANOpen(二)报文格式 
CAN与CANOpen(三)错误处理
CAN与CANOpen(四)CANOpen对象字典 
CAN与CANOpen(五)PDO和SDO
CAN与CANOpen(六)网络管理和CAN FD

4.3通讯对象

CANOpen协议共有6种通讯对象,分别是:PDOSDOSYNCTIMEEMCYNMT。这6种通讯对象完成了CANOpen协议的所有通讯功能。其中我们只介绍使用较多的PDOSDONMT4.4)。

4.3.1通信对象IDCOB-ID

CANOpen协议的通讯对象主要利用了CAN协议中的数据帧和远程帧。为了区分不同的通讯对象,CANOpen协议利用数据帧/远程帧中的ID。其中第7位到第10位为功能代码。第0位到第6位为节点ID,用以区分不同节点的相同功能。这样就允许最多127个从节点与主节点通讯。


28 COB-ID的结构

下面是预定义的各通讯对象的COB-ID


3各通讯对象对应的COB-ID

其中绿色部分为广播的通讯对象,蓝色部分为点对点的通讯对象。

COB-ID的大小也决定了通讯对象的优先级,其中NMT的优先级最高,PDO的优先级高于SDO

4.3.2Process Data Object

CANOpen中的实时数据传输是由PDO来完成的。PDO的传输采用了生产者消费者模式。共有两种PDOTPDORPDOTPDO用来传输数据,支持TPDO的节点都是PDO数据的生产者。RPDO用来接收PDO数据,支持RPDO的节点是PDO数据的消费者。从表3可以看出,一个节点最多支持4TPDO(分别是180h+NodeID280h +NodeID380h +NodeID480h +NodeID)和4RPDO(分别是200h +NodeID300h +NodeID400h +NodeID500h +NodeID)。每一个PDO都对应一些参数,包括通讯参数和映射参数。

 4.3.2.1PDO的参数

PDO的参数包括两部分,通讯参数和映射参数.他们占据了对象字典中从14001BFF之间的位置.


4 PDO参数在对象字典中的位置

PDO的通讯参数定义了COB-ID,传输类型(同步,异步,循环,时间出发),inhibit time(两个PDO的最小间隔),5.

6给出了PDO的映射参数.一个PDO最多可以映射到64个对象。每一项的含义见图29。最高16位是对象字典的索引,后面8位是子索引。最低8位是数据长度。关于PDO映射的详细介绍见4.3.2.2


5 PDO通讯参数


6 PDO映射参数


29 PDO映射参数解释

4.3.2.2PDO映射

PDO的内容没有固定的形式,它的数据段可以是18个字节长。使用PDO的一个基本的出发点是发射端和接收端都知道PDO中的数据的含义。图30说明了具体的工作原理。PDO采用了生产者和消费者模式。生产者按照TPDO的映射参数从对象字典中抽取数据形成PDO的数据。当消费者接收到PDO的数据后,就会按照RPDO的映射关系,将PDO中的数据解析出来,填入对应的数据字典中。

31给出了生产者生成PDO0数据的具体过程。首先生产者从[1800,01]中得到COB-ID。然后从[1A00,01]中获取第一个对象。[1A00,01]中的值为0x20000108h,那么第一个对象为[2000,01],对应值为A,PDO中占0x8位。接着是第二个对象[2003,03],对应值为G,在PDO中占0x10位。最后是对象[2003,01],对应值F,在PDO中占0x8位。这样一个有数据AGF组成的,32位的PDO就形成了。


30 TPDORPDO[2]


31 PDO数据的形成

 4.3.3SDO

SDO(Service Data Object)使用Client-Server模式建立起点到点的通讯并实现了对对象字典中条目的读写。其中被访问的对象字典的所在设备作为Server,访问对象字典的设备作为client。参考下图。SDO采用的请求应答模式,每次SDO访问都会有2CAN的数据帧对应。一条是请求,一条是应答。


32 client-server模式

SDO主要提供3种服务:段传输,块传输,中止传输。下面分别来介绍这三种服务是如何实现的。

4.3.3.1段传输

下面是SDO段传输Download过程中的示意图。首先由client端发起,然后Server端应答。这样一来一回。知道把数据传输完毕。当传输的数据长度小于4时,一次应答就可把数据传输完毕。


33SDO段下载时的clientserver端数据应答


34初始化SDO下载的命令字


35SDO段下载的命令字

3435标出了在SDO段下载的初始化和数据传输阶段的命令字。其中: