相关阅读
继上一期 基于SEED-RT118X套件开发EtherCat从站(四)状态机,这期为您带来该系列的第五篇。
继上一期 基于SEED-RT118X套件开发EtherCat从站(四)状态机,这期为您带来该系列的第五篇。
i.MX RT1180 EEPROM
EtherCAT从控制器利用EEPROM来存储EtherCAT从站信息(ESI),EEPROM的大小根据ESC(EtherCAT从站控制器)的不同而有所差异,通常支持从1 Kbit到4 Mbit的容量。为了简化设计,EtherCAT从控制器还支持通过微控制器来模拟EEPROM,从而省略物理EEPROM的使用。
EEPROM的烧写方法
i.MX RT 1180采用了一个外挂的EEPROM来实现EtherCAT从站信息存储功能。在使用EtherCAT功能前,需要在EEPROM中预先烧写相关信息,以确保i.MX RT 1180的EtherCAT模块能够正常工作。EEPROM中的内容既可以被从站应用层读取,也可以由EtherCAT主站来读取和修改。
法
EEPROM内容的烧写通常有两种方法:一种是在从站生产时预先烧写好,另一种是在主站扫描到从站后由主站来动态烧写。然而,由于i.MX RT 1180的EtherCAT模块在启动时需要读取EEPROM中的配置信息,如果无法读取到内容,可能会影响其MDIO的工作,进而无法正确配置外部PHY,导致主站无法扫描到从设备。因此,建议在实际部署前,预先在EEPROM中烧写好必要的信息。
一旦EEPROM中的内容被预先烧写好,从站就可以被EtherCAT主站正常扫描到。之后,如果需要修改EEPROM中的内容,可以直接通过EtherCAT主站进行动态修改。这种方式不仅简化了从站的生产流程,也提供了更加灵活的配置和管理能力。
EEPROM的数据结构
EEPROM数据结构如下图所示:
EtherCAT从控制器的EEPROM中,内容被分为几个区域,其中前64个字节(0至63)是协议规定的必要信息,而后续的内容则是可选的。具体来说,前8个字节(0到7)是ESC配置区域(如下图所示),这些值在芯片上电后会被自动读取,并用于配置EtherCAT模块的工作模式。
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM 0-7的EEPROM内容:
根据协议可知每个字的值:
字0(PDI Control) |
0x0C80 |
字1(PDI Configuration) |
0xEE84 |
字2(Pulse Length of SYNCSignals) |
0x000A |
字3(Extended PDI Configuration) |
0x0000 |
字4(Configured Station Alias) |
0x0000 |
字5(Reserved) |
0x0000 |
字6(Reserved) |
0x0000 |
字7(Checksum) |
0x0080 |
比如字0 取值0x0C80,我们可以知道i. MX RT1180的EtherCAT模块寄存器地址0x0140的取值就是0x80,地址0x0141的取值就是0x0C
EEPROM(字8-15)区域为产品标识区:包括厂商标识(VendorID)、产品码(ProductCode)、版本号(RevisionNo)和序列号(SerialNo),各占两个字。
当主站开始扫描设备时,就是通过这里的信息来分辨从站是什么设备。关于这8个字的定义EtherCAT规范如下:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM(字8-15)的EEPROM内容:
根据协议可知每个字的值:
字8-9(Vendor ID) |
0xE00004D8 |
字10-11(Product Code) |
0x00000002 |
字12-13(Revision Number) |
0x00000011 |
字14-15(Serial Number) |
0x00000000 |
EEPROM字16-字63区域存储的信息,包括邮箱配置等信息。EtherCAT规范如下:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM 16-63的EEPROM内容:
其中部分字含义如下:
字16-19(reserved) |
0x00000000 |
字20(Bootstrap Receive Mailbox Offset) |
0x0000 |
字21(Bootstrap Receive Mailbox Size) |
0x0000 |
字22(Bootstrap Send Mailbox Offset) |
0x0000 |
字22(Bootstrap Send Mailbox Size) |
0x0000 |
字23(Standard Receive Mailbox Offset) |
0x1000 |
字24(Standard Receive Mailbox Size) |
0x0080 |
字25(Standard Send Mailbox Offset) |
0x1080 |
字26(Standard Send Mailbox Size) |
0x0080 |
字26(Mailbox Protocol) |
0x0004 |
其中的字26值为0x0004,表示邮箱使用的协议是COE,这与我们之前分析的代码是一致的。
从字64开始,存储的是一系列分类附加信息,这些信息的类型丰富多样,涵盖了字符串、通用信息、FMMU信息、同步管理器信息、TxPDo、RxPDo,以及分布时钟等多个方面。这些信息并非必填项,是否填写取决于主站的具体要求。
如果主站系统如TwinCAT或IGH,这些附加信息即使不填写也无妨,因为主站会依赖其内部存储的XML文件来自动读取和解析所需的信息。然而,在另一种情况下,如果主站系统为SOEM或其他不支持XML文件读取的系统,那么这些分类附加信息就变得尤为重要,必须填写完整。这是因为这些主站需要这些附加信息来正确配置和通信与从站。
接下来,我们将简要介绍一些常用的分类附加信息。这些数据结构的组织方式相对统一,通常以一个2字节的类型名开始,紧接着是2字节的数据长度字段,用以指示随后数据信息的具体长度,最后则是根据数据长度定义的实际数据信息内容。
其中类型名的取值如下图所示:
我们首先看STRINGS(字符串)类型,字符串用于给后面的分类附加信息标注名字。当分类附加信息类型值是10(十进制)时,表示接下来这段数据是字符串,字符串数据结构如下图所示:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM 字符串内容:
根据协议解析如下:
地址 |
值 |
含义 |
0x0080 |
0x000A |
10,表示接下来的信息是字符串 |
0x0082 |
0x0037 |
55,表示接下来字符串段一共55个字(110个字节) |
0x83 |
0x0A |
10,一共10个字符串 |
0x84 |
0x17 |
23,第一个字符串一共23个字节 |
0x85-0x9C |
........ |
SEED-RT118X-SERVO-MOTOR |
0x9D |
0x04 |
4,第二个字符串一共4个字节 |
0x9E-0xA1 |
........ |
ECAT |
0xA2 |
0x08 |
8,第三个字符串一共8个字节 |
0xA3-0xAA |
........ |
Synchron |
0xAB |
0x08 |
2,第四个字符串一共2个字节 |
0xAC-0xAD |
........ |
DC |
... ... |
... ... |
后面类似 |
我们再来看FMMU,当分类附加信息类型值是40(十进制)时,表示接下来这段数据是FMMU信息,结构如下图所示:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM FMMU内容:
根据协议解析如下:
地址 |
值 |
含义 |
0x0116 |
0x0028 |
40,表示接下来的信息是FMMU |
0x0118 |
0x0002 |
FMMU信息段一共2个字(4个字节) |
0x011A |
0x01 |
FMMU0用于过程数据输出 |
0x011B |
0x02 |
FMMU1用于过程数据输入 |
0x011C |
0x03 |
FMMU2用于邮箱状态读取 |
0x011D |
0xFF |
FMMU3未使用 |
我们再来看SyncM(同步管理器),当分类附加信息类型值是41(十进制)时,表示接下来这段数据是SyncM信息,结构如下图所示:
下图是SEED-RT118X EtherCAT控制四电机套件对应EEPROM SyncM内容:
根据协议解析如下:
地址 |
值 |
含义 |
0x011E |
0x0029 |
41,表示接下来的信息是SyncM |
0x0120 |
0x0010 |
SyncM信息段一共16个字(32个字节) |
0x0122 |
0x1000 |
SM0物理起始地址:0x1000 |
0x0124 |
0x0080 |
SM0长度:0x0080 |
0x0126 |
0x26 |
SM0控制寄存器:0x26 |
0x0127 |
0x00 |
SM0状态寄存器:0x00 |
0x0128 |
0x01 |
SM0使能寄存器:0x01,使能 |
0x0129 |
0x01 |
SM0类型寄存器:0x01,用于邮箱输出 |
0x012A |
0x1080 |
SM1物理起始地址:0x1000 |
0x012C |
0x0080 |
SM1长度:0x0080 |
0x012E |
0x22 |
SM1控制寄存器:0x22 |
0x012F |
0x00 |
SM1状态寄存器:0x00 |
0x0130 |
0x01 |
SM1使能寄存器:0x01,使能 |
0x0131 |
0x02 |
SM1类型寄存器:0x02,用于邮箱输入 |
0x0132 |
0x1100 |
SM2物理起始地址:0x1100 |
0x0134 |
0x0006 |
SM2长度:0x0006 |
0x0136 |
0x22 |
SM2控制寄存器:0x64 |
0x0137 |
0x00 |
SM2状态寄存器:0x00 |
0x0138 |
0x01 |
SM2使能寄存器:0x01,使能 |
0x0139 |
0x02 |
SM2类型寄存器:0x03,用于过程数据输出 |
0x013A |
0x1080 |
SM3物理起始地址:0x1400 |
0x013C |
0x0080 |
SM3长度:0x0006 |
0x013E |
0x22 |
SM3控制寄存器:0x20 |
0x013F |
0x00 |
SM3状态寄存器:0x00 |
0x0140 |
0x01 |
SM3使能寄存器:0x01,使能 |
0x0141 |
0x02 |
SM3类型寄存器:0x04,用于过程数据输入 |
接下来我们再来看TXPDO(输出过程数据)以及RXPDO(输入过程数据),当分类附加信息类型值是50(十进制)时,表示接下来这段数据是TXPDO信息,当分类附加信息类型值是51(十进制)时,表示接下来这段数据是RXPDO信息,结构如下图所示:
其中Entry格式入下图所示:
下图是SEED-RT118X EtherCAT控制四电机套件对应TxPDO以及RxPDO内容:
根据协议解析如下:
地址 |
值 |
含义 |
0x0142 |
0x0032 |
50,表示接下来的信息是TxPDO |
0x0144 |
0x000C |
TxPDO信息段一共12个字(24个字节) |
0x0146 |
0x1A01 |
PDO索引 |
0x0148 |
0x02 |
子索引数量:一共2个 |
0x0149 |
0x03 |
相关联的同步管理器SM3 |
0x014A |
0x00 |
DC同步 |
0x014B |
0x05 |
名称索引 |
0x014C |
0x0010 |
PDO固定内容,不允许修改 |
下面是TxPDO具体内容 |
||
0x14E |
0x6041 |
条目1主索引 |
0x150 |
0x00 |
子索引0x00 |
0x151 |
0x06 |
名称索引0x06,参考附加信息字符串内容,“Status Word” |
0x152 |
0x06 |
数据类型0x06,UINT |
0x153 |
0x10 |
数据长度(bit),表示该条目共16个bit |
0x154 |
0x0000 |
Flags,备用 |
0x156 |
0x6064 |
条目2主索引 |
0x158 |
0x00 |
子索引0x00 |
0x159 |
0x07 |
名称索引0x07,参考附加信息字符串内容,“ActualPosition” |
0x15A |
0x04 |
数据类型0x04,DINT |
0x15B |
0x20 |
数据长度(bit),表示该条目共32个bit |
0x15C |
0x0000 |
Flags,备用 |
地址 |
值 |
含义 |
0x015E |
0x0033 |
51,表示接下来的信息是RxPDO |
0x0160 |
0x000C |
TxPDO信息段一共12个字(24个字节) |
0x0162 |
0x1601 |
PDO索引 |
0x0164 |
0x02 |
子索引数量:一共2个 |
0x0165 |
0x02 |
相关联的同步管理器SM2 |
0x0166 |
0x00 |
DC同步 |
0x0167 |
0x08 |
名称索引 |
0x0168 |
0x0010 |
PDO固定内容,不允许修改 |
下面是RxPDO具体内容 |
||
0x16A |
0x6040 |
条目1主索引 |
0x16C |
0x00 |
子索引0x00 |
0x16D |
0x09 |
名称索引0x09,参考附加信息字符串内容,“Control Word” |
0x16E |
0x06 |
数据类型0x06,UINT |
0x16F |
0x10 |
数据长度(bit),表示该条目共16个bit |
0x170 |
0x0000 |
Flags,备用 |
0x172 |
0x607A |
条目2主索引 |
0x174 |
0x00 |
子索引0x00 |
0x175 |
0x07 |
名称索引0x0A,参考附加信息字符串内容,“TargetPosition” |
0x176 |
0x04 |
数据类型0x04,DINT |
0x177 |
0x20 |
数据长度(bit),表示该条目共32个bit |
0x178 |
0x0000 |
Flags,备用 |
上面列出了SEED-RT118X中关于TxPDO以及RxPDO的信息,其具体使用方法可以参考CiA402中的描述。
相关阅读