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