船用發動機監控系統為什么使用CAN總線通信協議呢?
- 控制器局域網絡(CAN)具有高保密性,有效的支持分布式控制或實時控制的串行通信網絡;
- 速率高,CAN的位速率可達1Mbps(40m);
- 廉價,多使用與交通運載工具、發動機控制部件等;
- 采用線性總線結構,每個子系統對總線具有相同的權利,多主工作方式。任意一個節點可以在任何時候向網絡上的其他節點發送信息而不分主從;
- 發送信息分為不同的優先級,采用非破壞性總線裁決技術,當兩個節點同時向網絡上傳遞信息時,優先級低的停止發送數據,而優先級高的節點不受影響的繼續傳遞數據;
- 與總線相連的單元沒有類似於“地址”的信息,因此總線上增加單元時,連接在總線上的其他單元軟硬件及應用層都不需要改變,節點按照濾波器過濾接收的信息;
- 具有檢錯、錯誤通知、錯誤恢復的功能;
- 具有點對點,一點對多點,全局廣播接收傳送數據的功能。
CAN總線基礎知識:
- 總線狀態總線有“顯性”和“隱性”兩個狀態,“顯性”對應邏輯“0”,“隱性”對應邏輯“1”。“顯性”狀態和“隱性”狀態相與的結果為“顯性”狀態,所以兩個節點同時分別發送“0”和“1”時,總線上呈現“0”。也就是說在總線上顯性電平具有優先權,只有所有的單元都輸出隱性電平,總線上才為隱性電平。另外在CAN總線的起止端都有一個120歐的終端電阻來做阻抗匹配,以減少回波。
- CAN協議通過以下5種類型的幀進行:
數據幀
遠程幀
錯誤幀
過載幀
間隔幀
CAN報文發送優先權抉擇:
- CAN 總線以報文為單位進行數據傳送,報文的優先級結合在11 位標識符中,具有最低二進制數的標識符有最高的優先級。這種優先級一旦在系統設計時被確立后就不能再被更改。總線讀取中的沖突可通過位仲裁解決。如圖2 所示,當幾個站同時發送報文時,站1 的報文標識符為011111;站2 的報文標識符為0100110;站3 的報文標識符為0100111。所有標識符都有相同的兩位01,直到第3 位進行比較時,站1 的報文被丟掉,因為它的第3 位為高,而其它兩個站的報文第3位為低。站2 和站3 報文的4、5、6 位相同,直到第7 位時,站3 的報文才被丟失。注意,總線中的信號持續跟蹤最后獲得總線讀取權的站的報文。在此例中,站2 的報文被跟蹤。這種非破壞性位仲裁方法的優點在於,在網絡最終確定哪一個站的報文被傳送以前,報文的起始部分已經在網絡上傳送了。所有未獲得總線讀取權的站都成為具有最高優先權報文的接收站,並且不會在總線再次空閑前發送報文。
CAN數據幀組成:
-
(1) 幀起始。 表示數據開的段幀起始。
(2) 仲裁段。 表示該幀優先級的仲裁段。
(3) 控制段。 表示數據的字節及保留位控制段。
(4) 數據段。 數據的內容,一幀可發送0~8個字節的數據段。
(5) CRC段。 檢查幀的傳輸錯誤段。
(6) ACK段。 表示確認正常接收的段。
(7) 幀結束。 表示數據的段幀結束。 - 數據幀的構成如下圖所示:圖中D表示顯性電平,R表示顯性電平。

-
應答場(ACK)包括應答位和應答分隔符。發送站發送的這兩位均為隱性電平(邏輯1),這時正確接收報文的接收站發送主控電平(邏輯0)覆蓋它。用這種方法,發送站可以保證網絡中至少有一個站能正確接收到報文遠程幀由6 個場組成:幀起始、仲裁場、控制場、CRC 場、應答場和幀結束。遠程幀不存在數據場。遠程幀的RTR 位必須是隱位。DLC 的數據值是獨立的,它可以是0~8 中的任何數值,為對應數據幀的數據長度。
