[EtherCAT] CoE添加对象字典内容

一、EtherCAT CoE对象字典

承接上文《[EtherCAT]CoE协议与服务数据SDO和过程数据PDO》中详细介绍了CoE、PDO、SDO之间的关系。

在EtherCAT从站开发中,我们经常会遇到需要增加CoE对象字典内容,实现更多参数的配置和通信的需求。

通常我们可以选择两种方式增加CoE对象字典内容:
一种是基于SSC Tool中的OD工具,直接创建新的对象字典
一种是基于现有的例程,通过修改从站设备xml文件和修改从站设备程序,实现添加新的对象字典内容

《AN_ET9300》是SSC Tool安装后的帮助文档。该文档是关于SSC Tool的使用介绍, 不仅有助于使用SSC Tool, 还有助于理解从站协议栈代码处理流程,在指导如何添加CoE字典内容方面也非常有帮助。

二、基于SSC Tool中的OD工具, 创建对象字典

HPM_SDK中的ECAT_IO例程就是通过SSC Tool中的OD工具创建的对象字典,并生成与之匹配的从站设备描述文件XML和从站协议栈程序。该方法无须手动修改xml和从站协议栈程序, 降低了修改的难度和出错的可能。

参考《AN_ET9300》中的6.4 Create an own Application13 OD Tool章节,编辑excel,添加需要的对象字典内容。

操作示例: 基于ECAT_IO增加新的对象字典内容,一部分是PDO,一部分是SDO。

ECAT_IO例程本就是基于SSC tool中的excel构建出来的,当需要增加新的对象字典内容时,我们可以修改原有的excel并重新生成xml和SSC代码。

  1. 修改excel, 并重新生成ssc代码和xml文件

  2. 重新生成ssc代码和xml文件
    新生成出文件变化可以看到digitial_ioObjects.h和xml中增加了新的对象字典内容, 这部分内容对应于excel中的对象定义。

  3. 修改应用层代码digitial_io.c
    修改PDO数据处理函数(APPL_OutputMapping处理TxPDO, APPL_InputMapping处理RxPDO)。

  4. 对于添加的SDO数据,添加对应的SDO读写函数test_sdo_write()和test_sdo_read()
    需要实现此两个函数是因为在excel中定义SDO数据时申明了专属的读写函数。 如果excel的对应单元格中不申明专属的读写函数,则无须实现。协议中会使用默认的的SDO读写函数,同样能实现新增sdo数据的读写。

  5. 将新的xml导入TwinCAT,从站烧录程序, 进行通信测试, 检查从站软件中相关变量的数值。

通过观察对xml和ssc代码的改动差异, 有助于理解xml和ssc代码与CoE对象字典的关联。 当需要手动修改增加CoE对象时,也就是需要关注这些差异性的部分。

三、手动修改从设备描述xml和从站程序代码

在原有CoE对象字典复杂且不便于整理到SSC Tool的excel中时,需要新增时可以使用手动添加方法。

当在SSC tool中使能CiA402_SAMPLE_APPLICATION参数时,会生成默认的cia402例程时。此时不支持再通过导入excel创建新的application的方式。也就是如想在cia402例程上增加新的CoE对象时,需要在原有基础上手动修改xml和从站代码,没办法通过编辑excel导入的办法完成。

手动修改时,需要注意:

  1. 申明相关的对象字典定义,并添加到对象字典中
  2. 如果是PDO对象, 还需要修改对应的RxPDO(0x160x)和TxPDO(0x1A0x)的定义,添加对象到PDO的映射
  3. 代码修改与xml修改的一致性

3.1 添加SDO

操作示例:基于ECAT_CIA402例程, 修改xml和从站代码的方法增加一组PID参数对象, 新增的参数使用SDO方式进行通信

对象索引 参数类型 访问权限 数据长度 功能描述
0x60F0 比例增益(P) 读/写(RW) 32位浮点 实时调节比例项系数
0x60F1 比例增益(I) 读/写(RW) 32位浮点 实时调节积分项系数
0x60F2 比例增益(D) 读/写(RW) 32位浮点 实时调节微分项系数
0x60F3 比例增益(FF) 读/写(RW) 32位浮点 前馈补偿参数动态调整

修改步骤:

  1. 修改xml, 添加对象字典内容。 使用REAL32数据类型。

  2. 修改从站程序
    添加对象定义和申明。

    将新增对象添加到字典中。

  3. TwinCAT中通过CoE字典(SDO)方式配置PID参数数值, 并在从站软件中检查PID参数的数值。

3.2 添加PDO

操作示例:基于ECAT_CIA402例程, 修改xml和从站代码, 新增一组参数(0x60FD Digitial input/0x60FE Digitial output), 采用PDO通信方式。

对象索引 参数类型 访问权限 数据长度 功能描述
0x60FD Digitial input 读(R) UINT32 数字信号输入
0x60FE Digitial output 读/写(RW) UINT32 数字信号输出

修改步骤:

  1. 修改xml
    1.1 添加对象定义

    1.2 将对象加入到RxPDO

    1.3 将对象加入到TxPDO

  2. 修改从站代码
    2.1 添加0x60FD和0x60FE对象定义,并在轴参数中加入digitial_output和digitial_input变量

    2.2 修改0x1602和0x1A02中定义

    2.3 在ia402 axis的对象默认值, 和修改对象字典内容

    2.4 在cia402appl.c中添加数据的赋值处理

  3. 将xml导入到TwinCAT, 开发板下载修改后的程序, 进行通信测试。

示例代码

由SSC生成的协议栈代码,由于权限问题不能在此直接提供,需要用户自行去ETG官网下载SSC Tool并按HPM_SDK EtherCAT例程中的README, 生成协议栈代码和xml文件。

本例是基于HPM_SDK v1.9.0 EtherCAT例程进行的修改,仅提供修改后的excel、xml和部分ssc的协议站代码以供参考。EtherCAT例程修改示例

示例修改中, 是对csv module做了sdo和pdo修改, cia402例程中还支持csp模式和csv/csp模式, 这些模式的修改同理。

1
0
发表回复 0

Your email address will not be published. Required fields are marked *