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中的描述