SylixOS ICAN 協議移植筆記

  1. ICAN協議簡介

  2. ICAN簡介。

    ICAN協議( Industrial CAN protocol )爲基於現場總線 CAN-bus的應用層協議。ICAN協議爲工業控制應用領域提供了一種簡單可靠,易於開發的總線系統。

    在市場中,DeviceNet 和CANopen使用的較多,但是它們的協議規範比較複雜,理解和開發的難度比較大,對於一些並不複雜的基於CAN總線的控制網絡不太適合。因此有必要開發設計一種簡單可靠的CAN高層協議,以適合於    CAN的簡單應用,ICAN協議因此而生。

    ICAN協議屬於面向節點的協議。在ICAN協議中,通過特定的功能碼來建立或者刪除數據連接。並且在報文的標識符中指定了源節點地址和目標節點地址,因此信息鏈接建立以後,數據通訊的雙方就已經確定,並且可以在該連接的基礎上進行數據通信。

  3. ICAN報文簡介

  4. ICAN協議的標識符分配

    ICAN協議通信的所有報文都依賴於CAN 2.0B協議。也就是ID幀爲29bit,在CAN2.0B協議中這29bit只當節點的ID使用,ICAN則充分利用了這29bit。在ID中加入了很多控制信息。如圖 21所示主要分爲SrcMACID(源節點編號)佔擴展幀ID的21 – 28位,DestMACID(目標節點編號)佔擴展幀ID的13 – 20位,ACK(應答位)單獨佔擴展幀ID的12位,

    FUNC ID(功能碼)佔擴展幀ID的8 – 11位,和Source ID(資源節點編號)佔擴展幀ID的0 – 7位。

                                                                     

    21 ICAN協議對 CAN報文ID段的分配

  5. ICAN協議的報文數據分配

    CAN報文爲短幀報文,最多可以傳送8個字節數據。在ICAN協議中報文的數據部分主要用於傳送功能碼相關的參數,以及特定的功能數據。對於報文數據部分的分配相對比較簡單,主要考慮以下方面:

    在實際應用中需要傳送大於8個字節的數據,因此對報文數據部分的分配需要增加分段傳送的機制。同時在報文數據定義時,充分利用報文數據的8字節長度,合理分配特殊的功能碼和有效數據,儘可能在每幀報文中攜帶儘可能多的有效數據。

    如圖 22所示:在ICAN協議報文數據分配中,報文數據的第一個字節用作特定的報文分段傳送標識。報文數據剩餘的7個字節均可擁有傳送有效的數據(功能碼相關的參數)。在ICAN協議中每幀能夠傳輸的有效數據達到7個字節。

     

    22 ICAN報文數據分配

     

    關於ICAN協議主要是CAN2.0B協議中的ID 段和數據段。由於ICAN協議中具體每段如何使用所佔篇幅過多,文本再次不做過多介紹。(注:詳情請見《ICAN應用層協議V1.0》百度可查)。

  6. SylixOS移植ICAN

    在網上查找相關ICAN資料,發現ICAN協議只是在中國一些特定的場合使用,而且大多用於STM32這種主頻較低,且沒有移植操作系統的單片機上。本人蔘考了STM32系列單片機有關ICAN協議部分的移植,與其說是移植不如說是本人蔘照ICAN協議,在應用APP中,自己實現了對ICAN的報文的封裝和解析。有些功能和機制還未完全實現,如果發現實現有不妥當的地方,請及時和作者聯繫進行更正。

    本文移植的ICAN協議,是在底層CAN控制器已經調通能正常收發報文的前提下進行的。在APP中已經封裝好了一幀CAN報文,(注:詳細應用APP的操作在之前的文章中已經有詳細的介紹。在此就不做過多介紹,本次移植基於本公司IMAX6Q試驗箱平臺。)在硬件電路上,把試驗箱上CAN0和CAN1兩個CAN控制器輸出端的CAN_H相連,CAN_L相連。打開CAN0設備進入讀取模式,打開CAN1進入發送模式,(發送的報文在應用程序中已經封裝完畢。)CAN1設備向外發送CAN報文。CAN0設備收到CAN報文後根據ICAN協議進行報文解析並且打印出解析後的相關數據。

     

  7. 免責聲明

    內部交流文檔,若發現相關錯誤或者建議,請及時聯繫文檔創建者進行修訂和更新。

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