在使用倍福的 TwinCAT 组态 EtherCAT 从站时,可以在从站的属性页的 Process Data 界面看到两个不明显的可选项 PDO Assignmentment 与 PDO Configuration,由于该值一般在 EtherCAT 从站的 ESI 文件中已经给定,所以很多用户会忽略这两个选项,那么这两个选项的含义是什么,有什么作用,互相之间有什么影响呢。


要想了解这个问题,首先简单了解一下 CoE 协议 PDO 部分,即 CANopen Over EtherCAT,CANopen 协议作为应用层协议运行在 EtherCAT 通信链路上,其架构如图:


在 CANopen 协议中,主站与从站的周期性数据通信称为 PDO,通过预定义的 PDO 对象进行管理,PDO 相关的对象分为两个部分,一部分是 PDO 通信参数对象(用于指定 PDO 的使能、CAN-ID、触发方式等),一部分是 PDO 映射参数(指定哪些参数数据对象被映射到该 PDO 中,RPDO:0x1600~0x17FF/TPDO:0x1A00~0x1BFF),在 EtherCAT 中,任一传输方向的 PDO 数据通道由一个或若干个 Sync Manager 管理,这与 CANopen 中每一个 PDO 都有一个单独的通信参数对象不同,一个 Sync Manager 可同时对应多个 PDO 映射对象。由于数据链路层的差异, EtherCAT 从站保留了 CANopen 的 PDO 映射参数对象,而对于 PDO 的通信参数则通过自定义的对象管理,其中 PDO 的使能通过 0x1C10~0x1C2F 对象进行管理,其一种常见的 PDO 数据管理结构如下:


通常在 PLC 配置时,我们可以在从站的过程数据配置页面,根据实际应用需求动态的决定哪一些 PDO 被使能并整体映射到过程数据通道中,也可以动态配置哪一些应用层参数如目标速度、控制字、状态字等是否映射到某一个 PDO 中。ESI 文件中的 PDOAssign 与 PDOConfig 关键字则向主站以及工程师提示这种 PDO 动态配置行为是否被此从站所允许。接下来我们采用倍福 PLC 作为 EtherCAT 主站,以 HMS Anybus CompactCom 40 EtherCAT 作为从站,抓取 TwinCAT 和 Anybus EtherCAT 从站之间的报文,来实际分析 PDO Assignmentment 与 PDO Configuration 对设备初始化的影响,加深一下 EtherCAT 对 PDO 配置机制的理解。

首先勾选 PDO Assignment,此时模块的 PDO 没有分配到任何的 SM 中,即没有对默认的 PDO 使能,抓取报文,可以看到主站在建立通信时,首先会初始化从站中与 PDO 相关的 SM 寄存器,并为从站写入 PDO 配置信息,主站与从站可以正常建立通信。




随后取消勾选 PDO Assignment 选项,此时模块的 PDO 没有分配到 SM2/3 中,即模块没有默认的 PDO 使能,当我们在 TwinCAT 中取消 PDO Assign 时,可以看到报文中没有任何关于 PDO SM2/3 寄存器配置的报文。主站与从站 PDO 配置不再一致,主站尝试与从站通信失败。






现在通过在从站中直接修改 Anybus CompactCom 40 EtherCAT 的 PDO 相关的 0x1C12/0x1C13 对象,使其具有默认使能的 PDO,这里我们配置 Anybus CompactCom 40 EtherCAT PDO 0x1601、0x1A01 默认使能,使得主站与从站默认 PDO 配置一致,监控报文,可以看到报文中仍然没有任何关于 PDO 配置的报文,但是主站尝试以所组态的 PDO 数据与从站通信时,主站与从站可以正常交互数据。




因此可以得出结论,当 EtherCAT 从站没有使能任何 PDO 时,即从站 SM2/3 相关寄存器为空时,则必须使能 PDO Assginment,由主站在通信初始化时写入 PDO 分配信息到其 SM2/3 中,使能从站 PDO。
首先保持 PDO Assignment 使能,随后取消勾选 PDO Configuration,随后抓取报文,可以看到报文中只有关于 SM2/3 配置的报文。而没有配置 PDO Entry list 相关的报文。由于 PDO 的数据组成员是与 ESI 文件中的 PDO Entry List 配置一致,因此通信可以成功,数据正常交互。



随后在 TwinCAT 中删除从站 PDO 中任意增加一个成员(注意:该 PDO 必须是可以修改的,Fixed PDO 不支持修改),然后分析抓取报文,可以看到主站初始化从站时,没有配置 PDO 相关的报文,而此时主站所组态的 PDO 与从站默认的 PDO Entry List 不一致,通信失败。






随后再次勾选 PDO Configuration 配置,在报文中可以看到主站向从站写入新的 PDO Entry List,主站与从站成功建立通信。



小结:因此可以得出结论,当 EtherCAT 从站某一个 PDO Entry List 可以修改,且主站中的 PDO Entry List 与从站默认的 Entry List 不一致时需要使能 PDO config。
对于 PDO 默认使能以及 PDO 默认的数据组成员 Entry List 都固定的设备,则可以同时取消勾选 PDO config 与 PDO Assignment,此时主站与从站在通信建立的过程中没有任何有关 PDO 初始化报文,这样带来的好处是,这将减少不同品牌主站 PLC 因配置 PDO 行为不同,所产生 PDO 配置错误,提高设备对不同类型 EtherCAT 主站的适配性,而这需要在开发从站时,给从站写入固定的 PDO 信息。并且最好主动在设备的 E2PROM/ESI 文件中将 PDOAssign 与 PDOConfig 都置 0,以适应各类主站。

这样在主站上电时可直接与从站建立通信,而跳过 PDO 的配置过程,大大降低现场因为 PDO 配置造成的 EtherCAT 通信错误概率,提高客户使用感受,减少产品交付问题。