This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS320F28388D: 关于f2838x_cm_cia402_solution例程中对象字典的疑问

Part Number: TMS320F28388D

如上图所示,为例程中402对象字典对象的默认值

以CSV模式RxPDO中的1602对象为例

第一个数值3,表示这个对象中有3个entry

第一个entry的数值是0x604000106040是控制字的Index数值;因为控制字是一个16bit的数值,所以它的subindex0为00;最后的10,即0x10 = 16(十进制)代表控制字的数据位宽为16bit

第二个entry的含义是类似,只不过对象的index和数据位宽不一样

我现在不太理解第三个entry的含义,就是最后的这个0x00000010,

上图为et9300文档中index的定义

index 0x0000看起来位于数据类型区

按照这个理解 0x00000010中最后的0x10,应该是指数据位宽是16个bit

不过这个数据位宽指的什么数据的宽度呢?

这个帖子发在C2000论坛可能不太合适,不过我没有EtherCAT官方论坛的账号,所以麻烦C2000论坛有经验的工程师指点一下

谢谢

  • 刚刚注册了ETG官方论坛 已经在那边提问了 回复应该会比较慢 有消息我会发到论坛里

  • 您好 感谢帮助 这家公司的这份文档 比ETG官方讲402框架的文档要细致

    我看下能不能找到答案

  • 您好 看了下您提供的文档 我没有找到这个问题的答案

    在ETG论坛发帖一周 目前没有回复 我在ETG的文档中目前还没有找到答案

    不过调试过程中感觉每个PDO通道最后的"0x0000 00yy",很像是在进行字节对齐操作

    以RxPDO 1600为例

    这个结构中有5个数据,数据最宽为32bit 如果最后的8个bit看作是padding,即Entry 5,那么bit位加在一起就是32bit的整数倍

    以RxPDO 1601为例

    最后的16bit在XML文件中的Comment中写的就是padding,在这个结构中,数据最宽为32bit,算上最后的16bit padding 那么总的bit数也是32bit的整数倍

    以我自己增加的cst模式的RxPDO 1603为例

    在这个新增加的结构中,数据都是16bit宽的,所以应该不需要增加entry进行补位

    从以上举例理解,我现在认为,最后的0x0000 0008,0x0000 0010这样的entry应该是类似结构体中有不同数据宽度时的字节对齐处理

  • 我觉得您的推测很有道理。

    我们这边对这些确实不是很了解。

  • 您好 关于对象字典字节对齐方式 我找到了最终的答案

    以上为SSC工具生成的ecat_def.h文件,文件中使能了以上两个宏定义 OBJ_DWORD_ALIGNOBJ_WORD_ALIGN

    按照注释理解,如果对象是32bit的,按照32bit对齐;如果对象是16bit的,按照16bit对齐。

    在项目的XML文件中,我做了这样的设计:

    上图为RxPDO通道,对象有8bit位宽、16bit位宽、32biit位宽3种,按照ecat_def.h中的定义,应设计32bit位宽对齐,所以最后的补位是24bit,即:

    16+32+32+16+8+24 = 128(32x4)

    上图为TxPDO通道,对象同样有8bit位宽、16bit位宽、32biit位宽3种,按照ecat_def.h中的定义,应设计32bit位宽对齐,所以最后的补位是8bit,即:

    16+32+32+16+16+8+8 = 128(32x4)

  • 明白了,非常感谢您的分享!

x 出现错误。请重试或与管理员联系。