十五.EtherCAT开发之对象字典的映射原理
15.1 协议栈文件含义
仔细阅读四个代码文件
l 文件el9800appl.c:主函数,数据收发函数所在
l 文件el9800appl.h:对象字典定义所在,包含对象字典的类型、权限、长度、映射关系、链接变量、初值等等
l 文件el9800hw.c:PDI接口函数,定时器/IRQ/DC中断函数
l 文件el9800hw.h:上个文件的一些宏
15.2 对象字典的映射原理
对象字典的映射原理可以简单理解为:
如下图,TxPDO的组成由映射关系16XX的值来决定排序、长度,而映射管理0x1C12的值决定使用哪些映射关系(一个或多个)。同理RxPDO也是如此
其中TxPDO和RxPDO相当于一个一个变量,0x7010等相当于变量的编号。
映射关系和映射管理,比如共同决定通信时传输哪些变量。
比如开发板例子中:0x1600的值为
PROTO TOBJ1601 sDORxPDOMap
#ifdef EVALBOARD
= {9, {0x70100101, 0x70100201, 0x70100301, 0x70100401,0x70100501, 0x70100601, 0x70100701, 0x70100801, 0x08}}
#endif
9表示,0x1601有9个子索引
其中0x70100101:表示0x7010的子索引0x01中取0x01bit
0x70100201:表示0x7010的子索引0x02中取0x01bit
同理。。。。。。
然后这些截取的数据按顺序拼凑成一包数据,每个周期进行一次数据交互。
其中0x08表示0x0000的子索引0x00中取0x08bit,这个是为了凑齐数据包,0x0000表示无效数据的填充。
注意:所有对象字典的总长度必须是16bit的倍数,否则通信会报错。
0x1C12的值:
PROTO TOBJ1C12 sRxPDOassign
#ifdef EVALBOARD
= {0x01, {0x1601}}
#endif
;
0x01,表示只有一个子索引。
0x1C12的值为0x1601,表示数据包拼凑时,使用0x1601管理的PDO。
若0x1C12下有多个子索引,值为0x1601和0x1602,则,数据通信时,使用0x1601和0x1602管理的PDO。