• 正文
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

基于i.MX RT118X開(kāi)發(fā)ethercat從站(五)-EEPROM

01/03 16:20
1442
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

EtherCAT從控制器利用EEPROM來(lái)存儲(chǔ)EtherCAT從站信息(ESI),EEPROM的大小根據(jù)ESC(EtherCAT從站控制器)的不同而有所差異,通常支持從1 Kbit到4 Mbit的容量。為了簡(jiǎn)化設(shè)計(jì),EtherCAT從控制器還支持通過(guò)微控制器來(lái)模擬EEPROM,從而省略物理EEPROM的使用。

i.MX RT 1180采用了一個(gè)外掛的EEPROM來(lái)實(shí)現(xiàn)EtherCAT從站信息存儲(chǔ)功能。在使用EtherCAT功能前,需要在EEPROM中預(yù)先燒寫(xiě)相關(guān)信息,以確保i.MX RT 1180的EtherCAT模塊能夠正常工作。EEPROM中的內(nèi)容既可以被從站應(yīng)用層讀取,也可以由EtherCAT主站來(lái)讀取和修改。

EEPROM內(nèi)容的燒寫(xiě)通常有兩種方法:一種是在從站生產(chǎn)時(shí)預(yù)先燒寫(xiě)好,另一種是在主站掃描到從站后由主站來(lái)動(dòng)態(tài)燒寫(xiě)。然而,由于i.MX RT 1180的EtherCAT模塊在啟動(dòng)時(shí)需要讀取EEPROM中的配置信息,如果無(wú)法讀取到內(nèi)容,可能會(huì)影響其MDIO的工作,進(jìn)而無(wú)法正確配置外部PHY,導(dǎo)致主站無(wú)法掃描到從設(shè)備。因此,建議在實(shí)際部署前,預(yù)先在EEPROM中燒寫(xiě)好必要的信息。

一旦EEPROM中的內(nèi)容被預(yù)先燒寫(xiě)好,從站就可以被EtherCAT主站正常掃描到。之后,如果需要修改EEPROM中的內(nèi)容,可以直接通過(guò)EtherCAT主站進(jìn)行動(dòng)態(tài)修改。這種方式不僅簡(jiǎn)化了從站的生產(chǎn)流程,也提供了更加靈活的配置和管理能力。

?

EEPROM數(shù)據(jù)結(jié)構(gòu)如下圖所示:

EtherCAT從控制器的EEPROM中,內(nèi)容被分為幾個(gè)區(qū)域,其中前64個(gè)字節(jié)(0至63)是協(xié)議規(guī)定的必要信息,而后續(xù)的內(nèi)容則是可選的。具體來(lái)說(shuō),前8個(gè)字節(jié)(0到7)是ESC配置區(qū)域(如下圖所示),這些值在芯片上電后會(huì)被自動(dòng)讀取,并用于配置EtherCAT模塊的工作模式。

?

下圖是EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM 0-7的EEPROM內(nèi)容

根據(jù)協(xié)議可知每個(gè)字的值:

字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)區(qū)域?yàn)楫a(chǎn)品標(biāo)識(shí)區(qū):包括廠商標(biāo)識(shí)(VendorID)、產(chǎn)品碼(ProductCode)、版本號(hào)(RevisionNo)和序列號(hào)(SerialNo),各占兩個(gè)字。

當(dāng)主站開(kāi)始掃描設(shè)備時(shí),就是通過(guò)這里的信息來(lái)分辨從站是什么設(shè)備。關(guān)于這8個(gè)字的定義EtherCAT規(guī)范如下:

下圖是EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM(字8-15)的EEPROM內(nèi)容

根據(jù)協(xié)議可知每個(gè)字的值:

字8-9(Vendor ID)

0xE00004D8

字10-11(Product Code)

0x00000002

字12-13(Revision Number)

0x00000011

字14-15(Serial Number)

0x00000000

EEPROM字16-字63區(qū)域存儲(chǔ)的信息,包括郵箱配置等信息。EtherCAT規(guī)范如下:

下圖是 EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM 16-63的EEPROM內(nèi)容

其中部分字含義如下:

字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,表示郵箱使用的協(xié)議是COE,這與我們之前分析的代碼是一致的。

從字64開(kāi)始,存儲(chǔ)的是一系列分類附加信息,這些信息的類型豐富多樣,涵蓋了字符串、通用信息、FMMU信息、同步管理器信息、TxPDo、RxPDo,以及分布時(shí)鐘等多個(gè)方面。這些信息并非必填項(xiàng),是否填寫(xiě)取決于主站的具體要求。

如果主站系統(tǒng)如TwinCAT或IGH,這些附加信息即使不填寫(xiě)也無(wú)妨,因?yàn)橹髡緯?huì)依賴其內(nèi)部存儲(chǔ)的XML文件來(lái)自動(dòng)讀取和解析所需的信息。然而,在另一種情況下,如果主站系統(tǒng)為SOEM或其他不支持XML文件讀取的系統(tǒng),那么這些分類附加信息就變得尤為重要,必須填寫(xiě)完整。這是因?yàn)檫@些主站需要這些附加信息來(lái)正確配置和通信與從站。

接下來(lái),我們將簡(jiǎn)要介紹一些常用的分類附加信息。這些數(shù)據(jù)結(jié)構(gòu)的組織方式相對(duì)統(tǒng)一,通常以一個(gè)2字節(jié)的類型名開(kāi)始,緊接著是2字節(jié)的數(shù)據(jù)長(zhǎng)度字段,用以指示隨后數(shù)據(jù)信息的具體長(zhǎng)度,最后則是根據(jù)數(shù)據(jù)長(zhǎng)度定義的實(shí)際數(shù)據(jù)信息內(nèi)容。

其中類型名的取值如下圖所示:

我們首先看STRINGS(字符串)類型,字符串用于給后面的分類附加信息標(biāo)注名字。當(dāng)分類附加信息類型值是10(十進(jìn)制)時(shí),表示接下來(lái)這段數(shù)據(jù)是字符串,字符串?dāng)?shù)據(jù)結(jié)構(gòu)如下圖所示

下圖是 EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM 字符串內(nèi)容:

根據(jù)協(xié)議解析如下:

地址

含義

0x0080

0x000A

10,表示接下來(lái)的信息是字符串

0x0082

0x0037

55,表示接下來(lái)字符串段一共55個(gè)字(110個(gè)字節(jié))

0x83

0x0A

10,一共10個(gè)字符串

0x84

0x17

23,第一個(gè)字符串一共23個(gè)字節(jié)

0x85-0x9C

........

XXXXXRT118X-SERVO-MOTOR

0x9D

0x04

4,第二個(gè)字符串一共4個(gè)字節(jié)

0x9E-0xA1

........

ECAT

0xA2

0x08

8,第三個(gè)字符串一共8個(gè)字節(jié)

0xA3-0xAA

........

Synchron

0xAB

0x08

2,第四個(gè)字符串一共2個(gè)字節(jié)

0xAC-0xAD

........

DC

... ...

... ...

后面類似

我們?cè)賮?lái)看FMMU,當(dāng)分類附加信息類型值是40(十進(jìn)制)時(shí),表示接下來(lái)這段數(shù)據(jù)是FMMU信息,結(jié)構(gòu)如下圖所示

下圖是 EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM FMMU內(nèi)容:

根據(jù)協(xié)議解析如下:

地址

含義

0x0116

0x0028

40,表示接下來(lái)的信息是FMMU

0x0118

0x0002

FMMU信息段一共2個(gè)字(4個(gè)字節(jié))

0x011A

0x01

FMMU0用于過(guò)程數(shù)據(jù)輸出

0x011B

0x02

FMMU1用于過(guò)程數(shù)據(jù)輸入

0x011C

0x03

FMMU2用于郵箱狀態(tài)讀取

0x011D

0xFF

FMMU3未使用

?

我們?cè)賮?lái)看SyncM(同步管理器),當(dāng)分類附加信息類型值是41(十進(jìn)制)時(shí),表示接下來(lái)這段數(shù)據(jù)是SyncM信息,結(jié)構(gòu)如下圖所示

下圖是EtherCAT控制四電機(jī)套件對(duì)應(yīng)EEPROM SyncM內(nèi)容:

根據(jù)協(xié)議解析如下:

地址

含義

0x011E

0x0029

41,表示接下來(lái)的信息是SyncM

0x0120

0x0010

SyncM信息段一共16個(gè)字(32個(gè)字節(jié))

0x0122

0x1000

SM0物理起始地址:0x1000

0x0124

0x0080

SM0長(zhǎng)度:0x0080

0x0126

0x26

SM0控制寄存器:0x26

0x0127

0x00

SM0狀態(tài)寄存器:0x00

0x0128

0x01

SM0使能寄存器:0x01,使能

0x0129

0x01

SM0類型寄存器:0x01,用于郵箱輸出

0x012A

0x1080

SM1物理起始地址:0x1000

0x012C

0x0080

SM1長(zhǎng)度:0x0080

0x012E

0x22

SM1控制寄存器:0x22

0x012F

0x00

SM1狀態(tài)寄存器:0x00

0x0130

0x01

SM1使能寄存器:0x01,使能

0x0131

0x02

SM1類型寄存器:0x02,用于郵箱輸入

0x0132

0x1100

SM2物理起始地址:0x1100

0x0134

0x0006

SM2長(zhǎng)度:0x0006

0x0136

0x22

SM2控制寄存器:0x64

0x0137

0x00

SM2狀態(tài)寄存器:0x00

0x0138

0x01

SM2使能寄存器:0x01,使能

0x0139

0x02

SM2類型寄存器:0x03,用于過(guò)程數(shù)據(jù)輸出

0x013A

0x1080

SM3物理起始地址:0x1400

0x013C

0x0080

SM3長(zhǎng)度:0x0006

0x013E

0x22

SM3控制寄存器:0x20

0x013F

0x00

SM3狀態(tài)寄存器:0x00

0x0140

0x01

SM3使能寄存器:0x01,使能

0x0141

0x02

SM3類型寄存器:0x04,用于過(guò)程數(shù)據(jù)輸入

?

接下來(lái)我們?cè)賮?lái)看TXPDO(輸出過(guò)程數(shù)據(jù))以及RXPDO(輸入過(guò)程數(shù)據(jù)),當(dāng)分類附加信息類型值是50(十進(jìn)制)時(shí),表示接下來(lái)這段數(shù)據(jù)是TXPDO信息,當(dāng)分類附加信息類型值是51(十進(jìn)制)時(shí),表示接下來(lái)這段數(shù)據(jù)是RXPDO信息,結(jié)構(gòu)如下圖所示

其中Entry格式入下圖所示:

下圖是EtherCAT控制四電機(jī)套件對(duì)應(yīng)TxPDO以及RxPDO內(nèi)容:

根據(jù)協(xié)議解析如下:

地址

含義

0x0142

0x0032

50,表示接下來(lái)的信息是TxPDO

0x0144

0x000C

TxPDO信息段一共12個(gè)字(24個(gè)字節(jié))

0x0146

0x1A01

PDO索引

0x0148

0x02

子索引數(shù)量:一共2個(gè)

0x0149

0x03

相關(guān)聯(lián)的同步管理器SM3

0x014A

0x00

DC同步

0x014B

0x05

名稱索引

0x014C

0x0010

PDO固定內(nèi)容,不允許修改

下面是TxPDO具體內(nèi)容

0x14E

0x6041

條目1主索引

0x150

0x00

子索引0x00

0x151

0x06

名稱索引0x06,參考附加信息字符串內(nèi)容,“Status Word”

0x152

0x06

數(shù)據(jù)類型0x06,UINT

0x153

0x10

數(shù)據(jù)長(zhǎng)度(bit),表示該條目共16個(gè)bit

0x154

0x0000

Flags,備用

0x156

0x6064

條目2主索引

0x158

0x00

子索引0x00

0x159

0x07

名稱索引0x07,參考附加信息字符串內(nèi)容,“ActualPosition”

0x15A

0x04

數(shù)據(jù)類型0x04,DINT

0x15B

0x20

數(shù)據(jù)長(zhǎng)度(bit),表示該條目共32個(gè)bit

0x15C

0x0000

Flags,備用

?

地址

含義

0x015E

0x0033

51,表示接下來(lái)的信息是RxPDO

0x0160

0x000C

TxPDO信息段一共12個(gè)字(24個(gè)字節(jié))

0x0162

0x1601

PDO索引

0x0164

0x02

子索引數(shù)量:一共2個(gè)

0x0165

0x02

相關(guān)聯(lián)的同步管理器SM2

0x0166

0x00

DC同步

0x0167

0x08

名稱索引

0x0168

0x0010

PDO固定內(nèi)容,不允許修改

下面是RxPDO具體內(nèi)容

0x16A

0x6040

條目1主索引

0x16C

0x00

子索引0x00

0x16D

0x09

名稱索引0x09,參考附加信息字符串內(nèi)容,“Control Word”

0x16E

0x06

數(shù)據(jù)類型0x06,UINT

0x16F

0x10

數(shù)據(jù)長(zhǎng)度(bit),表示該條目共16個(gè)bit

0x170

0x0000

Flags,備用

0x172

0x607A

條目2主索引

0x174

0x00

子索引0x00

0x175

0x07

名稱索引0x0A,參考附加信息字符串內(nèi)容,“TargetPosition”

0x176

0x04

數(shù)據(jù)類型0x04,DINT

0x177

0x20

數(shù)據(jù)長(zhǎng)度(bit),表示該條目共32個(gè)bit

0x178

0x0000

Flags,備用

?

上面目前只列出了一個(gè)電機(jī)的TxPDO以及RxPDO的信息,其他三個(gè)電機(jī)TxPDO以及RxPDO的信息可以根據(jù)實(shí)際需求添加。

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

相關(guān)推薦