EtherCAT Module and Slot
目录
- 简介
- 官方文档ET9300
- 6.4.1 模块和插槽
- 6.4.1.1 插槽
- 6.4.1.2 模块
- 实战
- SLOT创建
- Module创建
- 生成代码
- 未解决的问题:
- 代码对接
简介
参考 Application Note ET9300 (EtherCAT Slave Stack Code),6.4.1 Modules and Slots
官方文档ET9300
6.4.1 模块和插槽
要定义支持模块和插槽的应用程序,应使用基于xlsx的应用程序描述。该应用程序包含多个表:一个用于基础应用程序,其他用于定义模块。模块表通过表头中的"Module Ident"信息进行标识,该标识在从站应用程序中必须唯一(图10:模块表的Module Ident字段)。基础应用程序表不得包含"Module Ident"字段。
表格可以在一个文件(多个工作表)中,也可以在单个文件中
6.4.1.1 插槽
插槽通过对象0xF030(配置的模块标识列表),图11:指定插槽。由此产生的ESI插槽元素如图12所示:
ESI文件。
参数说明:
a) 如果对象行中的访问设置为“rw”,则DownloadModuleIdentList为真
b) PDO索引增量根据相关表头信息设置(图10:模块表的模块标识字段,第5行)
c) 对象索引增量根据相关表头信息设置(图10:模块表的模块标识字段,第4行)
d) 槽位名称可通过在描述中使用语法“[Slotname: NAME]”设置。若未定义名称,则槽位将根据相关子索引自动命名。
e) 可分配的模块通过描述列中的语法“[ModuleIds: id]”指定。ID应以十六进制值表示并带前缀“0x”;多个模块ID需用“;”分隔,或重复使用该语法(参见条目4)。
f) 默认分配的模块由“Default”列的值设定。
g) 若要将槽位的MinInstances设置为0,则不应设置默认数据,或将最小值显式设为0。
6.4.1.2 模块
每个模块应在单独的表格中定义,且模块标识(module ident)须在表头中声明(见图10)。
若需在模块对象中设置“DependOnSlot”,则增量信息必须在表头中定义(见图13)。这些值将被忽略,因为增量值由基础应用表指定(参见章节6.4.1.1 Slots)。
若设置了“PdoIndexIncrement”属性,则会在PDO映射对象中自动添加“DependOnSlot”属性。
ET9300的文档描述只到这里
实战
按照上面官方的文档,获取信息如下:
1,使用XLS表格生成带有Module功能的EtherCAT源码和描述文件,Module相关部分要单独建立一个工作表(在同一个文件内)。
2,SLOT通过Module ID连接Module
SLOT创建
0xF030索引用于描述SLOT
这里只创建一个SLOT,Module id设置为0x4711
Module创建
创建一个新表作为模块表,把基础应用程序表Profile的内容框架复制进去(基础应用程序表Profile里原有的PDO等所有数据删除掉)
新模块表头部增加一个Module Ident,设置为0x4711与基础应用程序表Profile里SLOT的描述一致
新模块表的名字就是这个模块在TC3上显示的名字
新模块表内创建PDO数据,最终绑定到0x1C12和0x1C13中,注意不要和基础应用程序表Profile中的冲突(没试验过冲突之后的会发生什么)。
生成代码
打开SSC软件,重新导入XLS文件,这里可以看到识别到了两张工作表
点击生成代码,然后把生成的XML导入到TC3里面
可以看到IO数据都导入进去了
未解决的问题:
1,SLOT name在XLS里的描述没有生效,需要自己手动到XML里修改,相应的SLOT、Module 图像也要在XML里手动修改
代码对接
下期?