简介
将CANopen作为EtherCAT的应用层,在保证兼容性的同时,为了适配EtherCAT数据链路层接口,充分发挥EtherCAT的网络优势,需要对CANopen协议相应的功能扩充,然后就有了COE(CANopen over EtherCAT)。
COE对象字典(OD):可以这样理解,“一切信息皆对象”,比如某个数据,属性,设备ID,大小,方向,某个IO变量的值等等。对象字典就是对象的集合。每个对象都有对应的索引和索引。根据索引和子索引就能找到字典里的字(对象)。主站和从站都需要有对象字典,其目的个人理解为方便主站和从站进行信息交换。
RxPDO:主站主动传输RxPDO数据给从站。
TxPDO:从站主动传输TxPDO数据给主站。
一、PDO映射
PDO:过程数据对象。由对象字典中能够被映射到PDO的对象组成。
PDO映射对象包含一个对象引用列表以及以bit为单位的长度。
【简言之,PDO由多个对象组成,且是有映射关系的对象,比如PDO_1由Object1,Object2,Object3组成,每个对象有个长度。】
PDO映射:指应用对象(实时过程数据)从对象字典到PDO的映射。
映射表:包含被映射对象的数目,和具体被映射的对象。
【即由ssc工具生成的Object.h中实时过程数据的对象结构体。如下】
/**
* \brief Object structure
*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0;
UINT16 Aninput1; /* Subindex1 - Analoginput1 */
UINT16 Analoginput2; /* Subindex2 - Analoginput2 */
UINT16 Analoginput3; /* Subindex3 - Analoginput3 */
UINT32 Analoginput4; /* Subindex4 - Analoginput4 */
UINT32 Analoginput5; /* Subindex5 - Analoginput5 */
UINT32 Analoginput6; /* Subindex6 - Analoginput6 */
} OBJ_STRUCT_PACKED_END
TOBJ6020;
/**
* \brief Object variable
*/
PROTO TOBJ6020 AIInputs0x6020 = {6,0x0000,0x0000,0x0000,0x00000000,0x00000000,0x00000000};
RxPDO的映射表位于对象目录索引0x1600~0x17FF中。
TxPDO的映射表位于对象目录索引0x1A00~0x1BFF中。
图例1-PDO映射
二、同步管理器PDO分配
同步管理器通道:SM通道。由若干PDO组成。
同步管理器PDO分配表:包括已分配PDO的数量,及具体被分配的PDO。
【即由ssc工具生成的Object.h中PDO分配的对象结构体。如下】
/**
* \brief Object structure
*/
typedef struct OBJ_STRUCT_PACKED_START {
UINT16 u16SubIndex0; /**< \brief Subindex 0 */
UINT16 aEntries[2]; /**< \brief Subindex 1 - 2 */
} OBJ_STRUCT_PACKED_END
TOBJ1C13;
/**
* \brief Object variable
*/
PROTO TOBJ1C13 sTxPDOassign = {2,{0x1A00,0x1A02}};
同步管理器PDO分配表位于对象目录索引0x1C10~1C2F中。
图例2-同步管理器PDO分配
三、以xml为例简述对象字典与PDO的关系
四个sm通道分别对应MBoxOut,MBoxIn,Outputs,Inputs。
sm2分配0x1600,0x1602两个RxPDO对象。
sm3分配0x1A00,0x1A02两个TxPDO对象。
0x1600映射两个Entry,0x1602映射两个Entry。
0x1A00映射两个Entry,0x1A02映射6个Entry。
每个Entry对应一个实时过程数据(应用对象)。
-------------------------------------------------------------------------------------------------------------------------------如有问题请联系本人:QQ614139707