FPGA設(shè)計EtherCAT主站的方法和常見問題
作者從事EtherCAT等實時工業(yè)網(wǎng)絡(luò)及運控產(chǎn)品的開發(fā)多年?;贔PGA的EtherCAT主站,是不少公司的明智選擇。無論是實時性,靈活性,還是性價比均可有很好的保證。
一、基于FPGA的EtherCAT主站的設(shè)計方法
FPGA模塊主要分為五部分:初始化、狀態(tài)機、PDO、SDO、同步。
1)初始化模塊
初始化主要工作是搜集網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)、搜集各個節(jié)點的信息內(nèi)容、初始化各個節(jié)點的時間系統(tǒng)與初始同步。
2)狀態(tài)機模塊
該模塊主要實現(xiàn)各個節(jié)點的狀態(tài)機轉(zhuǎn)化。
INIT->預(yù)運行->安全運行->運行
該模塊實現(xiàn)PDO數(shù)據(jù)的準(zhǔn)備、發(fā)送、接收。
4)SDO模塊
該模塊實現(xiàn)SDO數(shù)據(jù)的準(zhǔn)備、發(fā)送、接收。
5)同步
該模塊實現(xiàn)動態(tài)時間同步。
將以上五個模塊設(shè)計完成,加上與ARM/DSP/CPU通信的通信接口,以及與運控相關(guān)的模塊(模擬量、IO、手輪等),即可實現(xiàn)整個設(shè)計。
二、基于FPGA的EtherCAT主站的常見問題
1)初始化模塊中,訪問節(jié)點EEPROM的方式理解比較繞
2)狀態(tài)機轉(zhuǎn)移中,出現(xiàn)轉(zhuǎn)移不成功,記得讀取節(jié)點0x134寄存器,查看錯誤代碼,根據(jù)錯誤代碼來查看具體不能轉(zhuǎn)移成功的原因。
這里,會出現(xiàn)林林總總的原因,只要對照手冊,基本都能解決。
這里,也是整個主站設(shè)計中,比較耗時間的問題之一。
3)PDO模塊中,部分廠家對設(shè)置尋址和邏輯尋址有特殊要求,需要注意。
4)SDO模塊中,部分廠家支持FMMU來進(jìn)行數(shù)據(jù)訪問,部分廠家僅支持寄存器來進(jìn)行數(shù)據(jù)訪問。
5)同步模塊中,出現(xiàn)從站之間的同步問題,主站和從站之間的同步問題,出現(xiàn)產(chǎn)品應(yīng)用與主站之間的同步問題。
關(guān)于同步算法,也是最耗時間的問題。
關(guān)于同步方案,可以以FPGA主站作為同步源,也可以以第一個伺服作為同步源;后者難度高點,但作者經(jīng)歷前者的產(chǎn)品應(yīng)用多一些。
三、EtherCAT主站方案的比較
開發(fā)時間層面:基于ARM的開源linux主站最優(yōu),基于ARM FPGA的主站次之
產(chǎn)品成本層面:基于FPGA的主站最優(yōu),基于ARM的開源linux主站次之
產(chǎn)品性能層面:基于FPGA的主站最優(yōu),基于ARM FPGA的主站次之
END
本文由21ic論壇feihufuture原創(chuàng)撰寫
▍