SylixOS上EtherCAT實現

1 EtherCAT開源協議棧介紹

    目前常見開源的主站代碼爲RT-LAB開發的SOEM(Simple OpenSource EtherCAT Master)和EtherLab的the IgH EtherCAT® Master,SylixOS對二者都支持。其中IgH做爲經常使用的EtherCAT開源協議棧,SylixOS已移植支持。安全

2 SylixOS-IgH使用框架

    SylixOS-IgH的使用盡量保留了Linux下IgH的使用方式,其中延續了命令行工具的功能,而在應用程序開發方面,藉助SylixOS集成開發套件的優點,用戶能夠更方便編輯、調試基於SylixOS-IgH的應用程序。網絡

    SylixOS-IgH主要分爲IgH主站協議棧、網絡設備驅動、IgH用戶層接口庫以及用戶應用程序。具體介紹以下所述:併發

2.1 IgH主站協議棧

    IgH主站協議棧源代碼經編譯後是一具體的ec_master.ko內核模塊,EtherCAT功能集中實如今該模塊中,另外該模塊註冊以後會在/dev路徑下建立一個EtherCAT字符設備,如圖 2‑1所示。框架

圖2‑1  /dev路徑下的EtherCAT0主站函數

   用戶程序操做EtherCAT主站,會經過用戶層接口函數最終調用I/O系統的open,ioctl函數完成EtherCAT協議棧的執行。工具

2.2 網絡設備驅動

    針對SylixOS-IgH的網絡設備驅動源代碼經編譯後是一具體的內核模塊,其中通用網卡驅動模塊命名爲generic.ko,實時網卡驅動會根據使用網卡型號針對命名,如e1000e型號的網卡驅動模塊爲ec_e1000e.ko。網絡設備驅動模塊應該在主站模塊註冊以後再進行註冊,由於主站模塊註冊後爲孤立狀態,會等待網路設備連入,網絡設備驅動模塊註冊後,就有一個真正的物理網絡接口負責收發EtherCAT數據包。其中全部內核模塊均部署在/lib/modules路徑下,如圖 2‑2所示。測試

圖2‑2  EtherCAT相關內核模塊優化

 

 

2.2.2 通用網卡驅動

通用網卡驅動的實現是基於SylixOS已有LwIP協議完成EtherCAT數據包的收發工做,其實現原理如圖 2‑3所示。spa

圖2‑3  通用網卡驅動實現基本原理操作系統

2.2.2 實時網卡驅動

在真實應用場景中,EtherCAT軟件主站都會搭配實時操做系統和實時網卡驅動,緣由在於影響實時性的關鍵因素是操做系統和網卡驅動,如圖 2‑4所示。

圖2‑4  影響實時性關鍵因素

    實時操做系統須要將過程數據準時送出,其實時性主要體如今週期性準時調用EtherCAT主站協議棧的發送函數,而網卡驅動也須要進行實時性優化,使其繞過LwIP協議棧中安全性檢查、路由、出入隊列、分片和重組等相對EtherCAT來講非必要的網絡傳輸功能,以此來保證EtherCAT數據包「準時出發,路上不能耽誤」。

2.3 IgH用戶層接口

    IgH用戶層接口源代碼編譯後是一具體的動態庫,IgH源代碼把對EtherCAT主站字符設備的「ioctl」操做所有封裝成用戶層接口函數,這樣用戶不須要面對IgH協議棧底層實現,只須要了解IgH用戶層接口函數的意義和使用方式便可。

2.4 IgH用戶應用程序

    這裏要提到,SylixOS-IgH主站三種狀態,如圖 2‑5所示。

圖2‑5  IgH主站狀態和轉化

    主站模塊註冊以後,主站處於孤立狀態;網絡設備驅動模塊註冊以後,主站處於空閒狀態;用戶應用程序執行時,會先進行主站請求操做,接着配置從站並創建用戶層過程數據和協議棧數據緩衝區的映射關係,最後進行激活主站的操做,主站處於運行狀態。主站進入運行態以後,就能夠進行週期性過程數據收發的行爲了。

    參考IgH源代碼/examples/user/main.c中的程序執行流程,能夠了解到使用IgH的主要接口,如圖 2‑6所示。

圖2‑6  用戶應用程序流程

3 SylixOS使用步驟

    SylixOS暫時不支持內核模塊註冊傳入參數機制,所以用戶如需使用SylixOS-IgH,可提早選擇做爲EtherCAT數據收發接口的網絡設備,翼輝信息會根據用戶硬件平臺和網絡設備對應MAC地址提供適配的主站內核模塊。

1. 用戶收到SylixOS-IgH_USER工程壓縮包,如圖 3‑1所示。

圖3‑1  SylixOS-IgH_USER工程壓縮包

2. 用戶將SylixOS-IgH_USER工程壓縮包解壓後導入RealEvo-IDE集成開發環境,在工程屬性中選擇依賴的BASE工程,如圖 3‑2所示。

圖3‑2  工程屬性配置

3. 選擇工程文件上傳的目標設備,如圖 3‑3所示。

圖3‑3  選擇目標設備IP地址

4. 工程屬性配置完成後,編譯工程並部署到目標設備,如圖 3‑4所示。

圖3‑4  部署工程到目標設備

5. 主從站硬件設備自行鏈接上電。遠程登陸目標設備,註冊IgH主站內核模塊ec_master.ko,而後使用命令行工具查看主站狀態,如圖 3‑5所示。

圖3‑5  註冊主站模塊並查看主站狀態

6. 接着再註冊網絡設備驅動內核模塊generic.ko,而後使用命令行工具查看主站狀態,如圖 3‑6所示。

 

圖3‑6  註冊網絡設備驅動模塊並查看主站狀態

還能夠經過「ethercatslaves」命令查看識別到的從站類型,如圖 3‑7所示。

圖3‑7  查看識別從站狀態

7. 執行IgH測試例程,該例程會激活主站併發送過程數據將數字量I/O模塊的8位輸出LED指示燈1s閃爍一次,如圖 3‑8所示。

圖3‑8  激活主站併發送過程數據

至此,SylixOS上使用EtherCAT開源協議棧IgH的基本流程已描述完畢,另外還有一些點須要注意:

  • IgH協議棧使用時須要提早預知從站設備的拓撲結構,應用程序須要根據從站的拓撲結構提早配置好各個從站的位置信息,SDO/PDO信息,在主站激活後,會將提早預知的配置信息和實際讀取從站寄存器獲取的信息進行對比,只有匹配後從站才能進入OP狀態;

  • SylixOS支持內核模塊註冊傳入參數機制以後,用戶可自行根據選定的EtherCAT報文網口修改網路配置文件;

  • EtherCAT開源協議棧IgH原生只支持Linux操做系統,SylixOS移植支持會盡量保留用戶層相同使用習慣,而IgH開源社區提供的資料並無徹底介紹用戶層接口的使用和命令行工具的使用,暫時SylixOS-IgH也僅僅提供基礎使用說明,其他功能的使用說明會在後續完善。

相關文章
相關標籤/搜索