1、过程数据对象(PDO)和服务数据对象(SDO)的报文ID。
用户应用CANopen时,需要传递的配置信息和应用信息都是放在过程数据对象PDO(Process data object)和服务数据对象SDO (Service data object)里面。这些对象就和市场上卖水果的箩筐,大小是一样的,只是装的东西(应用数据)不一样,如图所示。这就是CiA301协议所规定的基础协议——“箩筐”,而CiA4xx的子协议或者用户自定义的对象就是“箩筐”里面的东西。
PDO和SDO就像水果箩筐
PDO和SDO的通讯区别在于,PDO属于过程数据,即单向传输,无需接收节点回应CAN报文来确认,从通讯术语上来说是属于“生产消费”模型
生产消费模型
而SDO属于服务数据,有指定被接收节点的地址(Node-ID),并且需要指定的接收节点回应CAN报文来确认已经接收,如果超时没有确认,则发送节点将会重新发送原报文。这种通讯方式属于常见的“服务器客户端”的通信模型,即我们通常所说的轮询式。如图
服务器客户端模型
对于PDO和SDO的报文ID分配,为了减少网络的组态工作量,CANopen预定义了强制性的缺省标识符(CAN-ID)分配表,该分配表是基于11 位CAN-ID 的标准帧格式。将其划分为4 位的功能码(Function-ID)和7 位的节点号(Node-ID)。如图所示.
PDO和SDO的预定义连接ID分配
在CANopen里也通常把CAN-ID 称为COB-ID(通信对象编号)。所以我们可以分清楚两个易于混淆的名称:
COB-ID:Communication Object Identifier,即CANopen中某种通讯对像的报文帧ID,即CAN报文的11位ID。代表了一种通讯含义。
Node-ID:节点ID号,即CANopen网络中的节点地址,CANopen规定了逻辑上最大128个节点,所以Node-ID最.为128(7位)。
COB-ID和Node-ID无必然联系,但在过程数数据对象(PDO)和服务数据对.(SDO)中,COB-ID中.含.Node-ID。
由于需要区分每个CANopen节点的输入和输出,所以PDO分为TPDO(发送PDO)和(接收RPDO),发送和接收是以CANopen从站节点为参考(如果CAN主站就相反)。TPDO和RPDO分别有4个数据对象,每种数据对象就是1条CAN报文封装,如表所示,这些都是数据收发的容器,就像上图所示,水果箩筐为使用者准备好,就看使用者在里面放什么水果了。
而SDO就相对比较简单固定,发起通讯的“问”SDO的CAN帧ID就是600h +node-ID,这里的Node-ID是被问的节点地址,而被问的节点应“答”SDO的CAN帧ID就是580h +node-ID。一般在CANopen网络中,只有NMT主机能发起SDO通讯,进行节点参数配置或者关键性参数的传递。当然从节点也可以对其他从节点发起SDO通讯。
如表所.。为CANopen预定义报文的PDO报文和SDO报文中的ID分类。使用者务必牢记!
PDO与SDO的CAN-ID定义
2、对象字典OD(Object dictionary)
CANopen对象字典(OD: Object Dictionary)是CANopen协议最为核心的概念。所谓的对象字典就是一个有序的对象组,描述了对应CANopen节点的所有参数,包括通讯数据的存放位置也列入其索引,这个表变成可以传递形式就叫做EDS文件(电子数据文档Electronic Data Sheet)。对象字典,就像体检表,具备这个人每个功能的参数,便于用人单位(主站)进行合理分配工作
对象字典与体检表
每个对象采用一个16位的索引值来寻址,这个索引值通常被称为索引,其范围在0x0000到0xFFFF之间。为了避免数据大量时无索引可分配,所以在某些索引下也定义了一个8 位的索引值,这个索引值通常被称为子索引,其范围是0x00到0xFF之间。
每个索引内具体的参数,最大用32位的变量来表示,即Unsigned32,四个字节。
每个CANopen设备都有一个对象字典,使用电子数据文档(EDS文件)来记录这些参数,而不需要把这些参数记录在纸上。对于CANopen网络中的主节点来说,不需要对CANopen从节点的每个对象字典项都访问。
CANopen对象字典中的项由一系列子协议来描述。子协议为对象字典中的每个对象都描述了它的功能、名字、索引、子索引、数据类型,以及这个对象是否必需、读写属性等等,这样可保证不同厂商的同类型设备兼容。
CANopen协议的核心描述子协议是DS301,其包括了CANopen协议应用层及通信结构描述,其它的协议子协议都是对DS301 协议描述文本的补充与扩展。在不同的应用行业都会起草一份CANopen设备子协议,子协议编号一般是DS4xx。
2.1 对象字典概述
如表所示,为对象字典索引区域定义,其中标绿色底纹的通讯对象子协议区和制造商特定子协议区是用户需要关注的区域。
对象字典概述
2.2 通讯对象子协议区(Communicationprofile area)
通讯对象子协议区(Communication profile area)定义了所有和通信有关的对象参数,如表所示,标绿色底纹的索引范围1000h to 1029h为通用通讯对象,所有CANopen节点都必须具备这些索引,否则将无法加入CANopen网络。其他索引根据实际情况进行分配与定
通讯对象协议区
2.3 通用通讯对象(General communicationobjects)
由于通用通讯对象十分重要,NMT主站(CANopen主站)在启动时,通常都全部或者部分读取所有从站中通用通讯对象中的索引,所以所有的通用通讯对象都必须在CANopen从站中实现,使用者也必须熟知这些索引地址与其含义。如
通用通讯对象
2.4 制造商特定子协议(Manufacturer-specificProfile)
对象字典索引2000h to 5FFFh为制造商特定子协议,通常是存放所应用子协议的应用数据。而上文所描述的通讯对象子协议区(Communication profile area)是存放这些应用数据的通信参数。比如广州致远电子的XGate-COP10从站模块规定了:
RPDO的通讯参数存放在1400hto15FFh映射参数存放在1600hto17FFh数据存放为2000h之后厂商自定义区;
TPDO的通讯参数存放在1800hto19FFh映射参数存放在1A00hto1BFFh数据存放为2000h之后厂商自定义区。
具体讲解将在后面PDO(过程数据对象)章节进行详细叙述。
对于在设备子协议中未定义的特殊功能,制造商也可以在此区域根据需求定义对象字典对象。因此这个区域对于不同的厂商来说,相同的对象字典项其定义不一定相同。
2.5 标准化设备子协议(Standardizedprofile area)
标准化设备子协议,为各种行业不同类型的标准设备定义对象字典中的对象。目前已有十几种为不同类型的设备定义的子协议,例如DS401、DS402、DS406等,其索引值范围为0x6000~0x9FFF。同样,这个区域对于不同的标准化设备子协议来说,相同的对象字典项其定义不一定相同。这部分在本文中不做叙述。
本文章转载自广州致远(原文作者周立功、黄敏思) |