加入星计划,您可以享受以下权益:

  • 创作内容快速变现
  • 行业影响力扩散
  • 作品版权保护
  • 300W+ 专业用户
  • 1.5W+ 优质创作者
  • 5000+ 长期合作伙伴
立即加入
  • 正文
  • 相关推荐
申请入驻 产业图谱

基于i.MX RT118X开发ethercat从站(五)-EEPROM

01/03 16:20
176
加入交流群
扫码加入
获取工程师必备礼包
参与热点资讯讨论

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内容的烧写通常有两种方法:一种是在从站生产时预先烧写好,另一种是在主站扫描到从站后由主站来动态烧写。然而,由于i.MX RT 1180的EtherCAT模块在启动时需要读取EEPROM中的配置信息,如果无法读取到内容,可能会影响其MDIO的工作,进而无法正确配置外部PHY,导致主站无法扫描到从设备。因此,建议在实际部署前,预先在EEPROM中烧写好必要的信息。

一旦EEPROM中的内容被预先烧写好,从站就可以被EtherCAT主站正常扫描到。之后,如果需要修改EEPROM中的内容,可以直接通过EtherCAT主站进行动态修改。这种方式不仅简化了从站的生产流程,也提供了更加灵活的配置和管理能力。

 

EEPROM数据结构如下图所示:

EtherCAT从控制器的EEPROM中,内容被分为几个区域,其中前64个字节(0至63)是协议规定的必要信息,而后续的内容则是可选的。具体来说,前8个字节(0到7)是ESC配置区域(如下图所示),这些值在芯片上电后会被自动读取,并用于配置EtherCAT模块的工作模式。

 

下图是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规范如下:

下图是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规范如下:

下图是 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(十进制)时,表示接下来这段数据是字符串,字符串数据结构如下图所示

下图是 EtherCAT控制四电机套件对应EEPROM 字符串内容:

根据协议解析如下:

地址

含义

0x0080

0x000A

10,表示接下来的信息是字符串

0x0082

0x0037

55,表示接下来字符串段一共55个字(110个字节)

0x83

0x0A

10,一共10个字符串

0x84

0x17

23,第一个字符串一共23个字节

0x85-0x9C

........

XXXXXRT118X-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信息,结构如下图所示

下图是 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信息,结构如下图所示

下图是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格式入下图所示:

下图是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,备用

 

上面目前只列出了一个电机的TxPDO以及RxPDO的信息,其他三个电机TxPDO以及RxPDO的信息可以根据实际需求添加。

TxPDO以及RxPDO具体使用方法可以参考CiA402中的描述

相关推荐