1. 程式人生 > >CANOpen系列教程01_初識CAN與CANOpen及相關內容

CANOpen系列教程01_初識CAN與CANOpen及相關內容

該系列教程已經在我的個人微信公眾號**「strongerHuang」**整理並分享。因在這裡分享文章,還需單獨整理一遍,時間有限,就不再一一重複整理出來了。

想要檢視更多相關教程,可以關注我的個人微信公眾號「strongerHuang」,回覆【CANOpen系列教程】即可檢視。

申明:該文件由作者「strongerHuang」原創釋出,僅供個人學習使用,轉載請公眾號聯絡作者授權。版權所有,禁止商用

一、寫在前面

我之前學習CANOpen的時候,網上有用的資料極少,走了不少彎路。到目前為止,網上關於CANOpen的資料依然很少。所以,特地寫下該系列教程,幫助初學者跨過這道坎。

從我個人學習CANOpen的經歷來看,學會使用CANOpen難度其實不大。難點在於需要掌握的基礎知識很多,而且許多都有關聯性,容易把人繞暈

那麼,我希望通過結合之前我的學習經歷,以及工作經驗,站在小白的角度寫下該系列教程。當然,該教程由我個人編輯並整理,難免有些廢話,或者錯誤,還請諒解。

二、初識CAN與CANOpen

2.1 什麼是CAN?

CAN:是Controller Area Network的縮寫,即控制器區域網絡,屬於工業現場匯流排,是ISO國際標準化的序列通訊協議。

從OSI(Open System Interconnection開放系統互聯)7層網路模型的角度來看,CAN現場匯流排僅僅定義了第 1 層(物理層)和第 2 層(資料鏈路層)。

而在實際設計中,這兩層完全由硬體實現,設計人員無需再為此開發相關軟體或韌體(Firmware),只要瞭解如何呼叫相關的介面和暫存器,即可完成對CAN的控制。

上面介紹的內容可能太官方,初學者可能看了之後還是不明白。簡單的說:CAN匯流排就是一層硬體協議。比如:差分訊號電平的定義、資料幀的定義等等。

PS:初學者可以結合UART來理解,比如UART串列埠傳送一個字元’A’,它就是一種序列通訊的方式。

2.2 什麼是CANOpen?

CANopen是一種架構在CAN控制區域網上的高層軟體通訊協議,包括通訊子協議及裝置子協議,常在嵌入式系統中使用,也是工業控制常用到的一種現場匯流排協議。

CANopen協議是在20世紀90年代末,由總部位於德國紐倫堡的 CiA 組織——CAN-in-Automation,在 CAL(CAN Application Layer)的基礎上發展而來。

由於CAN匯流排只定義了OSI中的物理層和資料鏈路層,因此對於不同的應用出現了不同的【應用層協議】,為了使不同廠商的產品能夠相互相容,世界範圍內需要通用的CAN應用層通訊協議。

在過去的二三十年中湧現出許多的協議,不過到現在為止能夠廣泛被承認的協議卻不多,現在應用較廣的CAN應用層協議主要有以下三種: CANopen協議:主要應用在汽車、工業控制、自動化儀表等領域,目前由 CIA 負責管理和維護;

J1939協議:CAN匯流排在商用車領域佔有絕大部分市場份額的應用層協議,由美國機動車工程師學會發起,現已在全球範圍內得到廣泛的應用;

DeviceNet協議:在美國等地佔有相當大的市場份額,主要用於工業通訊及控制和儀器儀表等領域。

而本文說的CANOpen也是目前應用較廣的一種協議。簡單的說,CANOpen就是CAN匯流排應用層協議。

PS:學習CANOpen應用層協議之前請務必先了解CAN匯流排協議。

三、CAN匯流排特點

CAN匯流排採用差分訊號傳輸,通常情況下只需要兩根訊號線(CAN-H和CAN-L)就可以進行正常的通訊。在干擾比較強的場合,還需要用到遮蔽地即CAN-G(主要功能是遮蔽干擾訊號), CAN協議推薦使用者使用遮蔽雙絞線作為CAN匯流排的傳輸線。

CAN匯流排通訊的優勢和特點: **A.**CAN總線上任意節點,均可在任意時刻主動的向其它節點發起通訊,但在同一時刻優先順序高的節點能獲得匯流排的使用權。

**B.**標準CAN匯流排傳輸波特率可達到1Mbps。在5Kbps的通訊波特率下最遠傳輸距離可以達到 10Km,即使在1Mbps的波特率下也能傳輸40m的距離。

**C.**CAN匯流排定義使用了硬體報文濾波,可實現點對點及點對多點的通訊方式,不需要軟體來控制。

**D.**CAN匯流排所掛接的節點數量主要取決於CAN匯流排收發器或驅動器,目前的驅動器一般都可以使同一網路容量達到110個節點。

**E.**CAN匯流排通訊介質可採用雙絞線、同軸電纜或光纖,選擇極為靈活。可大大節約組網成本。

當然,CAN匯流排的優勢還有許多,當你掌握之後就會明白為什麼CAN匯流排應用得如此廣泛了。

四、教程規劃

CAN匯流排及CANOpen協議相關的內容相對比較多,如果每一個細節知識點都寫出來,可能花掉我業餘時間寫一年也寫不完。

我寫該教程目的在於引導初學者入門,我會結合例項程式碼讓大家邊學邊理解,至於實際專案程式設計應用不一定講述的很多(這個看後面情況)。

首先從CAN底層講起,再到CANOpen協議相關基礎知識,最後實際應用。當然,中間每一個環節內容相對可能較多,也有可能會遺漏部分內容。

五、說明

1.該文件部分文字來自周立功的相關教程,僅供個人學習使用,版權所有,禁止商用。

2.本文由我一個人編輯並整理,難免存在一些錯誤。

3.為了方便大家平時公交、地鐵、外出辦事也能用手機隨時隨地檢視該教程,該教程同步更新於微信公眾號**「strongerHuang」**,關注微信公眾號回覆【CANOpen系列教程】即可檢視全系列教程。

六、最後

我的微信公眾號(ID:strongerHuang)還在分享STM8、STM32、Keil、IAR、FreeRTOS、UCOS、RT-Thread、CANOpen、Modbus…等更多精彩內容,如果想檢視更多內容,可以關注我的微信公眾號。