新聞中心
系統(tǒng)運維 1 EtherCAT開源協(xié)議棧介紹
目前常見開源的主站代碼為RT-LAB開發(fā)的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS對兩者都支持。其中IgH作為常用的EtherCAT開源協(xié)議棧,SylixOS已移植支持。
SylixOS-IgH的使用盡可能保留了Linux下IgH的使用方式,其中延續(xù)了命令行工具的功能,而在應(yīng)用程序開發(fā)方面,借助SylixOS集成開發(fā)套件的優(yōu)勢,用戶可以更方便編輯、調(diào)試基于SylixOS-IgH的應(yīng)用程序。
SylixOS-IgH主要分為IgH主站協(xié)議棧、網(wǎng)絡(luò)設(shè)備驅(qū)動、IgH用戶層接口庫以及用戶應(yīng)用程序。具體介紹如下所述:
2.1 IgH主站協(xié)議棧IgH主站協(xié)議棧源代碼經(jīng)編譯后是一具體的ec_master.ko內(nèi)核模塊,EtherCAT功能集中實現(xiàn)在該模塊中,另外該模塊注冊之后會在/dev路徑下創(chuàng)建一個EtherCAT字符設(shè)備,如圖 21所示。
用戶程序操作EtherCAT主站,會通過用戶層接口函數(shù)最終調(diào)用I/O系統(tǒng)的open,ioctl函數(shù)完成EtherCAT協(xié)議棧的執(zhí)行。
2.2 網(wǎng)絡(luò)設(shè)備驅(qū)動針對SylixOS-IgH的網(wǎng)絡(luò)設(shè)備驅(qū)動源代碼經(jīng)編譯后是一具體的內(nèi)核模塊,其中通用網(wǎng)卡驅(qū)動模塊命名為generic.ko,實時網(wǎng)卡驅(qū)動會根據(jù)使用網(wǎng)卡型號針對命名,如e1000e型號的網(wǎng)卡驅(qū)動模塊為ec_e1000e.ko。網(wǎng)絡(luò)設(shè)備驅(qū)動模塊應(yīng)該在主站模塊注冊之后再進行注冊,因為主站模塊注冊后為孤立狀態(tài),會等待網(wǎng)路設(shè)備連入,網(wǎng)絡(luò)設(shè)備驅(qū)動模塊注冊后,就有一個真正的物理網(wǎng)絡(luò)接口負責(zé)收發(fā)EtherCAT數(shù)據(jù)包。其中所有內(nèi)核模塊均部署在/lib/modules路徑下,如圖 22所示。
2.2.2 通用網(wǎng)卡驅(qū)動
通用網(wǎng)卡驅(qū)動的實現(xiàn)是基于SylixOS已有LwIP協(xié)議完成EtherCAT數(shù)據(jù)包的收發(fā)工作,其實現(xiàn)原理如圖 23所示。
2.2.2 實時網(wǎng)卡驅(qū)動
在真實應(yīng)用場景中,EtherCAT軟件主站都會搭配實時操作系統(tǒng)和實時網(wǎng)卡驅(qū)動,原因在于影響實時性的關(guān)鍵因素是操作系統(tǒng)和網(wǎng)卡驅(qū)動,如圖 24所示。
實時操作系統(tǒng)需要將過程數(shù)據(jù)準時送出,其實時性主要體現(xiàn)在周期性準時調(diào)用EtherCAT主站協(xié)議棧的發(fā)送函數(shù),而網(wǎng)卡驅(qū)動也需要進行實時性優(yōu)化,使其繞過LwIP協(xié)議棧中安全性檢查、路由、出入隊列、分片和重組等相對EtherCAT來說非必要的網(wǎng)絡(luò)傳輸功能,以此來保證EtherCAT數(shù)據(jù)包“準時出發(fā),路上不能耽誤”。
2.3 IgH用戶層接口IgH用戶層接口源代碼編譯后是一具體的動態(tài)庫,IgH源代碼把對EtherCAT主站字符設(shè)備的“ioctl”操作全部封裝成用戶層接口函數(shù),這樣用戶不需要面對IgH協(xié)議棧底層實現(xiàn),只需要了解IgH用戶層接口函數(shù)的意義和使用方式即可。
2.4 IgH用戶應(yīng)用程序這里要提到,SylixOS-IgH主站三種狀態(tài),如圖 25所示。
主站模塊注冊之后,主站處于孤立狀態(tài);網(wǎng)絡(luò)設(shè)備驅(qū)動模塊注冊之后,主站處于空閑狀態(tài);用戶應(yīng)用程序執(zhí)行時,會先進行主站請求操作,接著配置從站并建立用戶層過程數(shù)據(jù)和協(xié)議棧數(shù)據(jù)緩沖區(qū)的映射關(guān)系,最后進行激活主站的操作,主站處于運行狀態(tài)。主站進入運行態(tài)之后,就可以進行周期性過程數(shù)據(jù)收發(fā)的行為了。
參考IgH源代碼/examples/user/main.c中的程序執(zhí)行流程,可以了解到使用IgH的主要接口,如圖 26所示。
3 SylixOS使用步驟
SylixOS暫時不支持內(nèi)核模塊注冊傳入?yún)?shù)機制,因此用戶如需使用SylixOS-IgH,可提前選擇作為EtherCAT數(shù)據(jù)收發(fā)接口的網(wǎng)絡(luò)設(shè)備,翼輝信息會根據(jù)用戶硬件平臺和網(wǎng)絡(luò)設(shè)備對應(yīng)MAC地址提供適配的主站內(nèi)核模塊。
1. 用戶收到SylixOS-IgH_USER工程壓縮包,如圖 31所示。
2. 用戶將SylixOS-IgH_USER工程壓縮包解壓后導(dǎo)入RealEvo-IDE集成開發(fā)環(huán)境,在工程屬性中選擇依賴的BASE工程,如圖 32所示。
3. 選擇工程文件上傳的目標設(shè)備,如圖 33所示。
4. 工程屬性配置完成后,編譯工程并部署到目標設(shè)備,如圖 34所示。
5.主從站硬件設(shè)備自行連接上電。遠程登錄目標設(shè)備,注冊IgH主站內(nèi)核模塊ec_master.ko,然后使用命令行工具查看主站狀態(tài),如圖 35所示。
6. 接著再注冊網(wǎng)絡(luò)設(shè)備驅(qū)動內(nèi)核模塊generic.ko,然后使用命令行工具查看主站狀態(tài),如圖 36所示。
還可以通過“ethercatslaves”命令查看識別到的從站類型,如圖 37所示。
至此,SylixOS上使用EtherCAT開源協(xié)議棧IgH的基本流程已描述完畢,另外還有一些點需要注意:
IgH協(xié)議棧使用時需要提前預(yù)知從站設(shè)備的拓撲結(jié)構(gòu),應(yīng)用程序需要根據(jù)從站的拓撲結(jié)構(gòu)提前配置好各個從站的位置信息,SDO/PDO信息,在主站激活后,會將提前預(yù)知的配置信息和實際讀取從站寄存器獲取的信息進行對比,只有匹配后從站才能進入OP狀態(tài);
SylixOS支持內(nèi)核模塊注冊傳入?yún)?shù)機制之后,用戶可自行根據(jù)選定的EtherCAT報文網(wǎng)口修改網(wǎng)路配置文件;
EtherCAT開源協(xié)議棧IgH原生只支持Linux操作系統(tǒng),SylixOS移植支持會盡可能保留用戶層相同使用習(xí)慣,而IgH開源社區(qū)提供的資料并沒有完全介紹用戶層接口的使用和命令行工具的使用,暫時SylixOS-IgH也僅僅提供基礎(chǔ)使用說明,其余功能的使用說明會在后續(xù)完善。
網(wǎng)站欄目:SylixOS上EtherCAT實現(xiàn)
URL分享:http://fisionsoft.com.cn/article/cgppoh.html