继上一期基于SEED-RT118X套件开发EtherCat从站(四)状态机,这期为您带来该系列的第五篇。
i.MX RT1180 EEPROM
EtherCAT从控制器利用EEPROM来存储EtherCAT从站信息(ESI),EEPROM的大小根据ESC(EtherCAT从站控制器)的不同而有所差异,通常支持从1 Kbit到4 Mbit的容量。为了简化设计,EtherCAT从控制器还支持通过微控制器来模拟EEPROM,从而省略物理EEPROM的使用。
i.MX RT 1180采用了一个外挂的EEPROM来实现EtherCAT从站信息存储功能。在使用EtherCAT功能前,需要在EEPROM中预先烧写相关信息,以确保i.MX RT 1180的EtherCAT模块能够正常工作。EEPROM中的内容既可以被从站应用层读取,也可以由EtherCAT主站来读取和修改。
EEPROM的烧写方法
EEPROM内容的烧写通常有两种方法:一种是在从站生产时预先烧写好,另一种是在主站扫描到从站后由主站来动态烧写。然而,由于i.MX RT 1180的EtherCAT模块在启动时需要读取EEPROM中的配置信息,如果无法读取到内容,可能会影响其MDIO的工作,进而无法正确配置外部PHY,导致主站无法扫描到从设备。因此,建议在实际部署前,预先在EEPROM中烧写好必要的信息。
一旦EEPROM中的内容被预先烧写好,从站就可以被EtherCAT主站正常扫描到。之后,如果需要修改EEPROM中的内容,可以直接通过EtherCAT主站进行动态修改。这种方式不仅简化了从站的生产流程,也提供了更加灵活的配置和管理能力。
EEPROM的数据结构
EEPROM数据结构如下图所示:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM 0-7的EEPROM内容:
根据协议可知每个字的值:
比如字0 取值0x0C80,我们可以知道i. MX RT1180的EtherCAT模块寄存器地址0x0140的取值就是0x80,地址0x0141的取值就是0x0C。
EEPROM(字8-15)区域为产品标识区:包括厂商标识(VendorID)、产品码(ProductCode)、版本号(RevisionNo)和序列号(SerialNo),各占两个字。
其中的字26值为0x0004,表示邮箱使用的协议是COE,这与我们之前分析的代码是一致的。
从字64开始,存储的是一系列分类附加信息,这些信息的类型丰富多样,涵盖了字符串、通用信息、FMMU信息、同步管理器信息、TxPDo、RxPDo,以及分布时钟等多个方面。这些信息并非必填项,是否填写取决于主站的具体要求。
如果主站系统如TwinCAT或IGH,这些附加信息即使不填写也无妨,因为主站会依赖其内部存储的XML文件来自动读取和解析所需的信息。然而,在另一种情况下,如果主站系统为SOEM或其他不支持XML文件读取的系统,那么这些分类附加信息就变得尤为重要,必须填写完整。这是因为这些主站需要这些附加信息来正确配置和通信与从站。
我们首先看STRINGS(字符串)类型,字符串用于给后面的分类附加信息标注名字。当分类附加信息类型值是10(十进制)时,表示接下来这段数据是字符串,字符串数据结构如下图所示:
根据协议解析如下:
接下来我们再来看TXPDO(输出过程数据)以及RXPDO(输入过程数据),当分类附加信息类型值是50(十进制)时,表示接下来这段数据是TXPDO信息,当分类附加信息类型值是51(十进制)时,表示接下来这段数据是RXPDO信息,结构如下图所示:
根据协议解析如下:
上面列出了SEED-RT118X中关于TxPDO以及RxPDO的信息,其具体使用方法可以参考CiA402中的描述。
相关阅读