CAN總線協議當中的媒體訪問控制層
說到協議,不少人總是先想到網絡和計算機。的確,計算機和網絡是協議的大戶,但是隨著電子化不斷的發展,越來越多的領域都開始使用近乎和計算機同樣智能的電子設備,當中也會涉及到協議問題?,F在我們為大家介紹的就是CAN總線協議。CAN總線最初是德國BOSCH為汽車行業的監測,控制而設計的?,F已應用到鐵路、交通、國防、工程、工業機械、紡織、農用機械、數控、醫療器械機器人、樓宇、安防等方面?,F在我們就來了解一下有關的協議問題吧。
CAN總線協議
下面對CAN總線協議的媒體訪問控制子層的一些概念和特征做如下說明:
(1)報文(Message) 總線上的報文以不同報文格式發送,但長度受到限制。當總線空閑時,任何一個網絡上的節點都可以發送報文。
(2)信息路由(Information Routing) 在CAN中,節點不使用任何關于系統配置的報文,比如站地址,由接收節點根據報文本身特征判斷是否接收這幀信息。因此系統擴展時,不用對應用層以及任何節點的軟件和硬件作改變,可以直接在CAN中增加節點。
(3)標識符(Identifier) 要傳送的報文有特征標識符(是數據幀和遠程幀的一個域),它給出的不是目標節點地址,而是這個報文本身的特征。信息以廣播方式在網絡上發送,所有節點都可以接收到。節點通過標識符判定是否接收這幀信息。
(4)數據一致性應確保報文在CAN里同時被所有節點接收或同時不接收,這是配合錯誤處理和再同步功能實現的。
(5)位傳輸速率不同的CAN系統速度不同,但在一個給定的系統里,位傳輸速率是***的,并且是固定的。
(6)優先權 由發送數據的報文中的標識符決定報文占用總線的優先權。標識符越小,優先權越高。
(7)遠程數據請求(Remote Data Request) 通過發送遠程幀,需要數據的節點請求另一節點發送相應的數據?;貞濣c傳送的數據幀與請求數據的遠程幀由相同的標識符命名。
(8)仲裁(Arbitration) 只要總線空閑,任何節點都可以向總線發送報文。如果有兩個或兩個以上的節點同時發送報文,就會引起總線訪問碰撞。通過使用標識符的逐位仲裁可以解決這個碰撞。仲裁的機制確保了報文和時間均不損失。當具有相同標識符的數據幀和遠程幀同時發送時,數據幀優先于遠程幀。在仲裁期間,每一個發送器都對發送位的電平與被監控的總線電平進行比較。如果電平相同,則這個單元可以繼續發送,如果發送的是“隱性”電平而監視到的是“顯性”電平,那么這個單元就失去了仲裁,必須退出發送狀態。
(9)總線狀態 總線有“顯性”和“隱性”兩個狀態,“顯性”對應邏輯“0”,“隱性”對應邏輯“1”。“顯性”狀態和“隱性”狀態與為“顯性”狀態,所以兩個節點同時分別發送“0”和“1”時,總線上呈現“0”。CAN總線采用二進制不歸零(NRZ)編碼方式,所以總線上不是“0”,就是“1”。但是CAN總線協議并沒有具體定義這兩種狀態的具體實現方式,如圖7-7所示。
10)故障界定(Confinement) CAN節點能區分瞬時擾動引起的故障和***性故障。故障節點會被關閉。
(11)應答接收節點對正確接收的報文給出應答,對不一致報文進行標記。