EtherCAT FOE是一種主站對(duì)從站設(shè)備固件升級(jí)的技術(shù),通過(guò)利用EtherCAT的數(shù)據(jù)鏈路層來(lái)處理數(shù)據(jù)實(shí)現(xiàn)文件傳輸,可以確保文件傳輸?shù)耐暾院蜏?zhǔn)確性,為設(shè)備的維護(hù)、升級(jí)、監(jiān)控和管理提供強(qiáng)大的支持。
在EtherCAT工業(yè)網(wǎng)絡(luò)中,通常會(huì)連接大量的從站設(shè)備。然而,如果需要對(duì)這些從站設(shè)備的軟件固件進(jìn)行升級(jí),傳統(tǒng)的逐個(gè)打開(kāi)從站設(shè)備外殼,并使用JTAG接口逐個(gè)更新固件的方式非常不便捷。為了解決這個(gè)問(wèn)題,可以采用基于EtherCAT協(xié)議的文件傳輸機(jī)制,即EtherCAT FOE(File Over EtherCAT)。EtherCAT FOE利用EtherCAT的數(shù)據(jù)鏈路層處理數(shù)據(jù)單元(DLPDU)來(lái)實(shí)現(xiàn)文件傳輸,從而確保傳輸?shù)耐暾院蜏?zhǔn)確性。通過(guò)采用EtherCAT FOE,可以實(shí)現(xiàn)對(duì)從站設(shè)備固件的高效、可靠和靈活的遠(yuǎn)程升級(jí)。因此,在工業(yè)自動(dòng)化領(lǐng)域,EtherCAT FOE得到廣泛應(yīng)用,為設(shè)備的維護(hù)、升級(jí)、監(jiān)控和管理提供了強(qiáng)大的支持。
EtherCAT FOE的常用在以下應(yīng)用場(chǎng)景:
固件更新:通過(guò)EtherCAT FOE,設(shè)備可以輕松地進(jìn)行固件更新。主機(jī)可以通過(guò)EtherCAT網(wǎng)絡(luò)將固件文件發(fā)送到設(shè)備,設(shè)備接收文件后進(jìn)行固件更新操作,簡(jiǎn)化設(shè)備的維護(hù)和升級(jí)過(guò)程。
配置文件下載:設(shè)備在啟動(dòng)或重新配置時(shí)需要加載配置文件。EtherCAT FOE可用于將配置文件從主機(jī)傳輸?shù)皆O(shè)備,使設(shè)備能夠根據(jù)配置文件進(jìn)行正確的初始化和運(yùn)行。
數(shù)據(jù)記錄與監(jiān)控:EtherCAT FOE可用于傳輸各種數(shù)據(jù)記錄和監(jiān)控信息。例如,主機(jī)可以定期將設(shè)備的運(yùn)行數(shù)據(jù)和狀態(tài)信息通過(guò)EtherCAT網(wǎng)絡(luò)發(fā)送到上位機(jī)進(jìn)行記錄和分析。
遠(yuǎn)程控制與診斷:通過(guò)EtherCAT FOE,主機(jī)可以向設(shè)備發(fā)送控制指令或診斷請(qǐng)求。設(shè)備接收指令或請(qǐng)求后進(jìn)行相應(yīng)操作,并將結(jié)果返回給主機(jī),實(shí)現(xiàn)設(shè)備的遠(yuǎn)程控制和診斷功能。
分布式文件系統(tǒng):EtherCAT FOE可用于構(gòu)建分布式文件系統(tǒng),實(shí)現(xiàn)多個(gè)設(shè)備共享同一組文件,為工業(yè)自動(dòng)化系統(tǒng)提供靈活的文件管理和共享機(jī)制。
EtherCAT FOE具有許多優(yōu)點(diǎn):
高效可靠:EtherCAT FOE使用EtherCAT的數(shù)據(jù)鏈路層處理數(shù)據(jù)單元(DLPDU)作為傳輸機(jī)制,具有高可靠性和低延遲。它能夠保證文件傳輸?shù)耐暾院蜏?zhǔn)確性,適用于工業(yè)自動(dòng)化應(yīng)用中對(duì)可靠性要求較高的場(chǎng)景。
靈活的文件傳輸:EtherCAT FOE支持多種文件傳輸模式,如點(diǎn)對(duì)點(diǎn)、廣播和組播等,使得在不同設(shè)備之間進(jìn)行文件傳輸具有很大的靈活性。
支持多種文件格式:EtherCAT FOE支持多種文件格式,如二進(jìn)制文件、文本文件、XML文件等,使得在不同類型的設(shè)備之間進(jìn)行文件傳輸具有很好的通用性。
易于集成:EtherCAT協(xié)議是一種標(biāo)準(zhǔn)的以太網(wǎng)協(xié)議,易于與現(xiàn)有的以太網(wǎng)設(shè)備和系統(tǒng)集成。這大大簡(jiǎn)化了EtherCAT FOE的集成和部署過(guò)程。
EtherCAT FOE具體的工作原理:
EtherCAT FOE采用了客戶端-服務(wù)器模型。在EtherCAT網(wǎng)絡(luò)中,有一個(gè)FOE客戶端和一個(gè)或多個(gè)FOE服務(wù)器。FOE客戶端負(fù)責(zé)發(fā)起文件傳輸請(qǐng)求,而FOE服務(wù)器則負(fù)責(zé)處理客戶端請(qǐng)求并進(jìn)行相應(yīng)的文件傳輸操作。其大致的工作原理如下:
FOE客戶端發(fā)送一個(gè)文件傳輸請(qǐng)求給FOE服務(wù)器,在請(qǐng)求中指定要讀取或?qū)懭氲奈募拖鄳?yīng)的操作(如讀取、寫(xiě)入、刪除等)。
FOE服務(wù)器接收并解析客戶端的請(qǐng)求,然后根據(jù)請(qǐng)求中指定的文件和操作進(jìn)行相應(yīng)的處理。
如果是讀取操作,F(xiàn)OE服務(wù)器會(huì)將指定文件的內(nèi)容讀取到內(nèi)部緩沖區(qū),并將緩沖區(qū)的內(nèi)容返回給FOE客戶端。
如果是寫(xiě)入操作,F(xiàn)OE服務(wù)器會(huì)將FOE客戶端提供的數(shù)據(jù)寫(xiě)入到指定文件中。
在文件傳輸過(guò)程中,F(xiàn)OE客戶端和服務(wù)器之間會(huì)進(jìn)行必要的握手和錯(cuò)誤檢測(cè),確保傳輸?shù)目煽啃院屯暾浴?/p>
傳輸完成后,F(xiàn)OE客戶端會(huì)接收到傳輸結(jié)果的確認(rèn)信息,并根據(jù)需要進(jìn)行進(jìn)一步的處理。
廣州致遠(yuǎn)電子以EtherCAT工業(yè)以太網(wǎng)協(xié)議為向?qū)?,開(kāi)發(fā)了一系列?EtherCAT主站控制器和通訊卡,其中包括EtherCAT FOE(File Over EtherCAT)功能。這些EtherCAT主站控制器和PCIe EtherCAT通訊卡可以快速、有效、便捷地構(gòu)建數(shù)控智能化設(shè)備。通過(guò)支持固件更新、配置文件下載、數(shù)據(jù)記錄與監(jiān)控、遠(yuǎn)程控制與診斷、分布式文件系統(tǒng)等功能,更能夠適應(yīng)工廠智能化、信息化產(chǎn)業(yè)的需求。
表1 EtherCAT主站控制器
圖1 EtherCAT主站控制器系統(tǒng)框圖
表2 PCIe?EtherCAT主站通訊卡
圖2 PCIe?EtherCAT通訊卡
??AWStudio運(yùn)動(dòng)控制版本
AWStudio (運(yùn)動(dòng)控制版本)是ZLG致遠(yuǎn)電子針對(duì)工業(yè)自動(dòng)化及智能裝備編程開(kāi)發(fā)平臺(tái),以低代碼和可視化操作為目標(biāo),簡(jiǎn)化EtherCAT主站控制器、EtherCAT主站通訊卡、運(yùn)動(dòng)控制器、示教器(手持HMI)等設(shè)備的開(kāi)發(fā)流程以適應(yīng)未來(lái)復(fù)雜多變的智能制造設(shè)備智能化需求。AWStudio(運(yùn)動(dòng)控制版本)除了簡(jiǎn)化搭配有硬件配置,EtherCAT配置,設(shè)備掃描等基礎(chǔ)功能外,還提供了AWBlock可視化、圖形化的模塊化編程語(yǔ)言以及工藝小程序開(kāi)發(fā)功能,給應(yīng)用增加了無(wú)限的擴(kuò)展性,大大降低使用者的入門(mén)門(mén)檻。
圖3?AWStudio?(運(yùn)動(dòng)控制版本)
? AWStudio?(運(yùn)動(dòng)控制版本)的FOE功能使用1.?準(zhǔn)備工作
1.1 硬件連接
請(qǐng)準(zhǔn)備好一臺(tái)電腦、一臺(tái)EtherCA主站控制器或者主站通訊卡、一臺(tái)或多臺(tái)EtherCAT從站(從站配置示例,推薦使用伺服驅(qū)動(dòng)器進(jìn)行測(cè)試或IO),多條網(wǎng)線(直連交叉均可,至少兩根)。然后使用網(wǎng)線將設(shè)備按以下示意圖進(jìn)行連接,如果有多臺(tái)從站,使用網(wǎng)線將前一個(gè)從站的OUT連接到當(dāng)前從站的IN即可。
1.2 軟件安裝
安裝AWStudio-for-Motion-Control(若沒(méi)有,可以咨詢我們售后)。
2. 新建/打開(kāi)解決方案
AWStudio啟動(dòng)后默認(rèn)沒(méi)有解決方案,需要先新建或打開(kāi)一個(gè)解決方案。
2.1?新建解決方案
點(diǎn)擊界面中”新建”按鈕或者工具欄的”新建”按鈕,可彈出”新建解決方案”對(duì)話框。
解決方案類型選擇”主站控制器/卡配置”,解決方案名稱和解決方案路徑按需要修改,點(diǎn)擊”創(chuàng)建”按鈕即可創(chuàng)建一個(gè)新的解決方案。
2.2?打開(kāi)解決方案
點(diǎn)擊界面中”打開(kāi)”按鈕或者工具欄的”打開(kāi)”按鈕,可彈出”打開(kāi)解決方案”對(duì)話框。選中解決方案文件(.solution)后,點(diǎn)擊”打開(kāi)”按鈕即可打開(kāi)解決方案。
2.3?主界面
新建或打開(kāi)解決方案后,軟件會(huì)進(jìn)入主界面。
2.4?獲取網(wǎng)卡
運(yùn)動(dòng)控制器的NET1的出廠默認(rèn)IP為192.168.1.136,NET2的IP為192.168.2.136,依此類推。以下過(guò)程需要通過(guò)上們機(jī)來(lái)連接設(shè)備,因此需要將電腦的IP設(shè)置為和運(yùn)動(dòng)控制器相同的IP段,例如設(shè)置為192.168.1.200?地址,設(shè)置成功后嘗試 ping 192.168.1.136,確保連接成功(具體設(shè)置可參考快速入門(mén)章節(jié))。
輸入驅(qū)動(dòng)器(主站)IP地址后,點(diǎn)擊獲取網(wǎng)卡,即可獲取網(wǎng)卡列表,如發(fā)現(xiàn)網(wǎng)卡則表示獲取網(wǎng)卡成功。
3. 掃描從站設(shè)備
在菜單欄中點(diǎn)擊從站庫(kù)管理,安裝相對(duì)應(yīng)的ESI文件,如下所示。
通過(guò)主站節(jié)點(diǎn)右鍵菜單或工具欄掃描總線上的從站設(shè)備,并將其網(wǎng)絡(luò)拓?fù)?/a>添加到本地主站樹(shù)節(jié)點(diǎn),如下所示。
確認(rèn)掃描出從站設(shè)備后,點(diǎn)擊右鍵啟動(dòng)主站,并將主站啟動(dòng)到操作狀態(tài)模式,此模式下支持郵箱通信,如下所示。
選擇從站設(shè)備,在子菜單欄中點(diǎn)擊郵箱,點(diǎn)擊瀏覽選擇對(duì)應(yīng)的文件,根據(jù)需求選擇下載或讀取即可,如下所示。
EtherCAT 主站的FOE例程
1. 接口說(shuō)明
EtherCAT 主站的FOE的函數(shù)使用也非常簡(jiǎn)單,只有讀接口EcatFoERead,寫(xiě)接口EcatFoEWrite這兩個(gè)接口既能實(shí)現(xiàn)固件或者文件的傳輸,EcatFoEWrite是從本地文件系統(tǒng)寫(xiě)文件到從站,EcatFoERead 是從從站中讀文件到本地文件系統(tǒng)。
/**
? ?@brief 從本地文件系統(tǒng)寫(xiě)文件到從站
? ?@param hHandle ECAT 控制句柄
? ?@param u16SlaveId 從站位置索引,范圍:0~SlaveCount-1
? ?@param pszFileLocalName 本地文件系統(tǒng)的文件名
? ?@param pszFileSlaveName 從站文件系統(tǒng)的文件名
? ?@return 返回 ECAT_S_OK(0)表示成功,非 0 表示失敗
**/
int32_t EcatFoEWrite(
IN ECAT_HANDLE hHandle, ?
IN uint16_t u16SlaveId,
IN const char *pszFileLocalName,
IN const char *pszFileSlaveName);
/**
? ?@brief 從從站中讀文件到本地文件系統(tǒng)
? ?@param hHandle ECAT 控制句柄
? ?@param u16SlaveId 從站位置索引,范圍:0~SlaveCount-1
? ?@param pszFileLocalName 本地文件系統(tǒng)的文件名
? ?@param pszFileSlaveName 從站文件系統(tǒng)的文件名
? ?@return 返回 ECAT_S_OK(0)表示成功,非 0 表示失敗
*/
int32_t EcatFoERead(
? ?IN ECAT_HANDLE hHandle,
? ?IN uint16_t u16SlaveId,
? ?IN const char *pszFileLocalName,
? ?IN const char *pszFileSlaveName);
2. 示例
以示例將本地文件傳輸?shù)綇恼驹O(shè)備,同時(shí)讀取設(shè)備文件并保存到本地,代碼如下所示。
int32_t ecat_foe_test(ECAT_HANDLE hHandle)
{
int ret;
//操作句柄
? ?if (hHandle) return ? -1;
//將本地文件foe_test.txt,以foe_test.txt命名傳輸?shù)綇恼驹O(shè)備。
?ret = EcatFoEWrite(hHandle, 0, "foe_test.txt", "foe_test.txt");
if(ret) return ? -2;
//讀取從站設(shè)備foe_test.txt文件,并命名為foe_test_back.txt保存到本地。
?ret = ?EcatFoERead(hHandle, 0, "foe_test_back.txt", "foe_test.txt");
if(ret) return ? -3;
? ?return 0;
}