SylixOS實時以太網淺析

目錄

1. 應用場景    1

2. 技術實現    1

2.1驅動層面的分析    1

2.2收發包方式的分析    2

2.3收發包週期控制的分析    4

3. 參考資料    5

 

 

 

  1. 應用場景


    工業以太網技術將成爲工業控制網絡和現場總線的主流技術,但傳統以太網介質訪問控制方式——帶有衝突檢測的載波偵聽多路訪問機制CSMA/CD,即:當一個節點要發送數據時,首先監聽信道;如果信道空閒就發送數據,並繼續監聽;如果在數據發送過程中監聽到了衝突,則立刻停止數據發送,等待一段隨機的時間後,重新開始嘗試發送數據。這種方式是一種非確定性的介質訪問控制方式,不能滿足工業現場的實時性要求。針對這種情況,業界提出了工業以太網新標準。當然,隨着機器人、伺服驅動、數控系統的發展,實時以太網的趨勢也越來越明顯。


     

  2. 技術實現

    SylixOS在AM335X開發板上實現了EtherCat實時以太網,經過長時間測試,可以驅動6軸聯動。下面將從驅動,收發包方式,收發包週期控制三個方面分析。


    2.1驅動層面的分析


    SylixOS提供網卡驅動框架,編寫一個網卡驅動變得十分簡單,主要需要實現網卡初始化、收包、發包、中斷處理、控制等幾個驅動函數。圖 21爲網卡驅動框架簡圖。

    圖 21網卡驅動框架簡圖

    在接收中斷服務例程中,只通知t_netjob任務接收報文,不做網絡包的接收,防止中斷處理時間過長。圖 22爲接收中斷服務例程。

    圖 22接收中斷服務例程


    2.2 收發包方式的分析


    根據EtherCat協議,時間關鍵的數據採用週期性過程數據的通信方式,非時間關鍵的數據採用非週期性通信方式。圖 23 爲EtherCat通信參考模型。

    圖 23EtherCat通信參考模型

    SylixOS提供AF_PACKET鏈路層通信,專門針對EtherCat協議,用於實現高速實時數據通信。在數據傳輸過程中,因爲用戶希望數據直接通過網絡接口收發包,不經過協議棧,則可以用這個協議域。在運動控制中,主站也可以通過這個協議域得到從站的MAC地址,在使用上它有兩種方式,一種方式是用戶直接用send、recv類函數進行收發,還有一種是mmap內存映射,可以有效減少內存拷貝的次數,圖 24爲SylixOS網絡架構。

     

    圖 24 SyLIxOS網絡架構

     


    2.3 收發包週期控制的分析


    在實時以太網應用中,用戶對於收發包週期有嚴格的要求,儘量避免發生抖動,因爲抖動可能會導致收發包的精度下降。但在數據傳輸過程中,收發包的時間不可避免。比如有一種需求是用戶希望收發包的整個週期是一個600us的過程,但在實際開發過程中,收發包的時間無法準確估計,如何保證整個週期的時間就是600us,過去一般是通過延時一個比600us稍短的時間,以達到整個週期的時間接近600us的目的,但SylixOS提供了更好的解決方法——速率單調調度RMS,爲週期性任務解決多任務調度衝突的一種非常好的方法,RMS基於任務的週期指定優先級。在使用中只需要將週期時間參數告訴系統,系統會自動調整週期內的延時時間,如果在600us內都沒有跑完週期性任務,系統是會報錯的。用戶在做這種週期性的開發是很方便的,不需要再去微調延時時間。下面用一段僞代碼簡單介紹一下RMS的使用方法。圖 25爲RMS使用範例,設置RMS調度器時間爲3秒,代碼執行時間隨機產生,最終測試結果爲3秒打印一次。

    圖 25 RMS使用範例

     

    在工業實時以太網的應用過程中,不僅需要對實時性有要求,對於準確性有着更高的要求,SylixOS從驅動層到用戶層全面保證。我們後續還將推出工業系統現場總線解決方案包。

     

  3. 參考資料


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章