在閱讀有關(guān)CAN總線的文章時,你肯定會遇到“CANopen”這個詞,它其實是一個基于CAN 的通信系統(tǒng)。CANopen 在基本術(shù)語中可以定義為在CAN 總線傳輸數(shù)據(jù)時使用的通信語言。發(fā)送者和接收者對數(shù)據(jù)信息的定義需要遵循共同的標(biāo)準(zhǔn)。
與CAN 總線底層協(xié)議包含物理層和數(shù)據(jù)鏈路層相比,CANopen 則是包含網(wǎng)絡(luò)層、傳輸層、會話層、表示層、應(yīng)用層這五個層次的高層協(xié)議。
在CAN總線上這些協(xié)議層之間都是獨立的。
在CAN總線上這些協(xié)議的功能描述如下:
盡管CAN 總線已經(jīng)成功的應(yīng)用在很多行業(yè),但是為了讓它能夠應(yīng)用在更多的領(lǐng)域,CANopen 被設(shè)計出來。最初CANopen 是為面向運動的機器控制系統(tǒng)設(shè)計的,如今它在各個領(lǐng)域都得到了應(yīng)用,例如:
● Medical equipment(醫(yī)療設(shè)備)
● Stepper and servo motors(步進電機和伺服電機)
● Food processing(食品加工)
● Automation(自動化)
● Off-road vehicles(非公路車輛)
● Marine electronics(船用電子設(shè)備)
● Railway application(鐵路應(yīng)用)
● Building automation(建筑自動化)
● Mechanical manufacturing(機械制造)
● Industrial machinery(工業(yè)機械)
● Security monitoring(安防)
CANopen 使設(shè)計人員能夠執(zhí)行各種功能,使CAN 總線更適合于嵌入式網(wǎng)絡(luò)應(yīng)用,如車內(nèi)網(wǎng)絡(luò)。它提供了高度靈活的配置功能。使用CAN-open,能夠做到:
● 實現(xiàn)設(shè)備網(wǎng)絡(luò)行為
● 影響和控制網(wǎng)絡(luò)行為
● 溝通和處理數(shù)據(jù)
● 設(shè)備內(nèi)部故障提示
● 設(shè)備能夠點對點通信
● 定義內(nèi)部設(shè)備結(jié)構(gòu)
● 允許數(shù)據(jù)速率在10kbps-1000kbps 間調(diào)整
CANopen 的內(nèi)部設(shè)備結(jié)構(gòu)有三個主要的邏輯部分:
CANopen 消息幀格式: CANopen 的消息幀格式和CAN總線的相似。它包含了的COB-ID 和控制位,為了避免和CAN 總線的COB-ID 沖突,所有
的COB-ID 均不相同。
CANopen 協(xié)議:
一個CANopen協(xié)議棧實現(xiàn)幾個CANopen COB與對應(yīng)速率的CANopen 通信。CANopen 協(xié)議由以下部分組成:
? 數(shù)據(jù)對象服務(wù)協(xié)議(SDO)
● SDO服務(wù)使CANopen節(jié)點能夠通過CAN網(wǎng)絡(luò)讀取、編輯、更改或訪問另一節(jié)點對象字典的值
● 這是一種確認(rèn)的通信服務(wù),由兩個具有不同CAN標(biāo)識符的CAN數(shù)據(jù)幀組成
● 在以CAN為傳播媒介上建立兩個CANopen設(shè)備之間的對等“客戶端-服務(wù)器”的通信
Server(服務(wù)端): 訪問對象字典的所有者
Client(客戶端): 訪問對象字典并啟動與專用SDO“服務(wù)器”通信的設(shè)備
盡管SDO 非常靈活,但OVERHEAD 的存在使其不太適合實時數(shù)據(jù)操作。為了解決這個問題,使用了進程數(shù)據(jù)對象協(xié)議。
? 進程數(shù)據(jù)對象協(xié)議(PDO)
● PDO 通常被視為一個重要的CANopen 協(xié)議,因為它承載了大量的信息
● CANopen 使用進程數(shù)據(jù)對象(PDO)跨CANopen 節(jié)點在實時操作數(shù)據(jù)中傳播高優(yōu)先級控制和狀態(tài)信息
● PDO 由單個CAN 幀組成,可在單個幀內(nèi)僅傳送多達(dá)8字節(jié)的應(yīng)用程序數(shù)據(jù),其中包含多個對象參數(shù)值
Producer(生產(chǎn)者): 它產(chǎn)生要傳輸?shù)街鳈C的數(shù)據(jù)
Consumer(消費者):這里的主機就是消費者。它從生產(chǎn)者那里接收數(shù)據(jù)
? 網(wǎng)絡(luò)管理協(xié)議(NMT)
NMT 服務(wù)定義CANopen 設(shè)備的通信方式。在接收到NMT 協(xié)議時,CANopen 設(shè)備被迫轉(zhuǎn)換到命令的NMT 狀態(tài)。NMT 狀態(tài)機包括:
● 初始化狀態(tài)(設(shè)備在通電或復(fù)位后進入初始化狀態(tài))
● 預(yù)運行狀態(tài)
● 運行狀態(tài)
● 停止?fàn)顟B(tài)
NMT 協(xié)議發(fā)送單個CAN 幀,數(shù)據(jù)長度為2字節(jié),CAN ID為0。它包含命令標(biāo)識符/功能代碼(第一位),它代表請求狀態(tài),對于NMT,如果將其設(shè)置為顯性狀態(tài)0,則所有節(jié)點都必須執(zhí)行該命令。節(jié)點ID——作為指定的名字,包含需要遵守狀態(tài)轉(zhuǎn)換命令的模塊ID。
在NMT中,模塊需要使用SDO協(xié)議操作,因為PDO僅在操作狀態(tài)下才可運作。
? 特殊功能協(xié)議
為了產(chǎn)生特定的網(wǎng)絡(luò)行為,CANopen提供了三種特定的協(xié)議:
● Synchronisation Protocol(同步協(xié)議):該協(xié)議允許同步多個設(shè)備。同步生成器或應(yīng)用程序主機定期傳輸同步協(xié)議。根據(jù)預(yù)定義的連接設(shè)置,同步消息映射到單個CAN 幀,COB ID 為80h。(它不攜帶數(shù)據(jù)(DLC=0))
● Emergency Protocol(應(yīng)急協(xié)議):
任何內(nèi)部設(shè)備錯誤都會觸發(fā)應(yīng)急協(xié)議。在這種情況下,緊急消息由故障設(shè)備發(fā)送。每個錯誤事件只傳輸一次。故障設(shè)備使用將CAN標(biāo)識符COB ID 80h+(節(jié)點ID)分配給緊急消息的功能。
如果CAN總線上的設(shè)備沒有新的錯誤,則不會繼續(xù)傳輸此類消息
● Time-stamp protocol(時間戳協(xié)議):允許CANopen系統(tǒng)的用戶調(diào)整特定的網(wǎng)絡(luò)時間,該時間戳映射到一個CAN幀,該幀具有6字節(jié)的數(shù)據(jù)。這6個字節(jié)中最初的4個字節(jié)代表“一天之中的時間”信息,4個字節(jié)存儲的都為毫秒信息,接下來的2個字節(jié)則為1984年1月1日0點這個數(shù)據(jù)信息。默認(rèn)情況下,關(guān)聯(lián)的CAN幀預(yù)設(shè)值為CAN標(biāo)識符100h。
? 錯誤控制協(xié)議:監(jiān)聽CANopen 網(wǎng)絡(luò)
● Heartbeat Protocol(防斷連協(xié)議):防斷連協(xié)議驗證其可用性及NMT 有限狀態(tài)自動化(FSA)。對于CANopen 中的所有網(wǎng)絡(luò)。防斷連信號循環(huán)傳輸,以確認(rèn)防斷連發(fā)生器的可用性。
● Boot up protocol(啟動協(xié)議):這表示一種獨特類型的錯誤控制協(xié)議。在進入NMT FSA 預(yù)運行狀態(tài)之前,它將作為NMT FSA 狀態(tài)初始化中的最終操作進行傳輸。接收到此消息表示
○ 新設(shè)備已注冊到CANopen 網(wǎng)絡(luò)
○ 更改網(wǎng)絡(luò)設(shè)置(當(dāng)有新設(shè)備添加到CANopen 時)
○ 它可以被認(rèn)為是CANopen 網(wǎng)絡(luò)中出現(xiàn)錯誤情況的標(biāo)志
評論
查看更多