SAE J1939 協議簡介(大結局)


因爲應用層會根據不一樣的行業和需求有所不一樣,因此應用層的開發能夠參考標準自行研究,關於這個系列,今天是最後一集,咱們來說講 J1939的網絡管理層(J1939/81)微信

其實任何一種協議單看協議文件都是很枯燥的,可是其實協議軟件的開發流程圖就隱含在這協議描述中,多看幾遍,多讀幾遍,多琢磨琢磨,在找些參考資料,相信你必定會理解協議中的需求,爲你的後續開發掃平障礙。網絡


確定有人會問,總線上有那麼多節點,總線上的那麼多節點是如何管理和通訊的呢?spa

網絡管理層就是解決這些問題的。先來說講什麼叫控制器應用程序。.net


控制器應用程序(CAController Application(CA) ci

控制器爲電控單元(ECU) 內執行一種特殊控制功能的軟件和硬件。控制器裏的軟件稱爲「控制器應用程序」(CA)。一個ECU 能夠執行一個或多個控制功能,所以能夠包括一個或多個CA。爲了可以在本標準網絡上進行通訊,每一個CA都必須有一個地址以及一個和它聯繫在一塊兒的名字。開發


網絡管理層爲惟一識別網絡上的CA、管理地址分配和網絡錯誤提供必要的定義和程序。文檔

每一個CA應能提供惟一的64位名字(8個字節).CA必須首先聲明地址成功,而後才能向網絡發送,若是CA按地址聲明過程聲明地址失敗,必須按標準方式進行處理並向網絡報告。在採用J1939標準的網絡中,地址用於保證消息標識符的惟一性以及代表消息的源地址。地址聲明消息包括地址和名字,用於把名字和網絡中的某個地址關聯在一塊兒。每一個CA在開始正常的網絡通訊以前,必須有一個名字而且成功聲明瞭一個地址。名字有兩個用途:get


其一用於表示CA的功能描述(如發動機1,發動機2)io

其二,做爲一個數值,用於地址仲裁。class


把一個地址與惟一的名字相關聯,也就把一個地址和一個CA關聯起來。ECU的製造商和網絡集成商必須保證全部在一個網絡上傳輸消息CA的名字是惟一的。網絡上的每一個CA都應有一個名字,這樣 CA能夠根據它的主要功能被惟一標識。當多個 CA試着聲明同一個地址時,名字的全部8 個字節做爲一個數值用於仲裁過程,這樣進一步加強了標識符的惟一性,網絡上的每一個CA依次獲得一個惟一的地址,可以正確地和其它ECU仲裁CAN數據幀。關於64位名字各個域的描述和使用,你們能夠在開發的時候根據本身的系統或工程按照標準的要求填寫,不用死記硬背這些域的定義.

總之一句話,用地址和名字來保證節點的惟一識別性。在發送任何應用層的消息以前,必須先進行地址聲明,地址聲明PGN(60928)。每一個CA 在完成上電自檢(POST)後,發送其它通訊消息以前,要經過地址聲明消息得到一個網絡中惟一的源地址。成功聲明源地址的過程:首先發送一個地址聲明消息聲明地址;其後沒有收到競爭該地址的地址聲明消息。地址在 0-127 248-253 範圍內,有單一地址的CA,能夠在發送地址聲明信息後當即開始正常的網絡通訊。對於其它的CA在使用地址以前要容許仲裁地址,所以要等到發送地址聲明消息250ms 後才能夠開始或恢復正常的網絡通訊。


對於接收到地址聲明請求消息如何處理


接收到地址聲明消息請求後,CA必須發送地址聲明消息。消息包括:CA已經聲明到並正在使用的地址、CA尚未聲明過但它想聲明的地址及空地址(CA已經聲明過但沒有成功).沒有嘗試地址聲明的CA不能參與網絡通訊直至它嘗試聲明瞭一個源地址。CA在沒有嘗試地址聲明以前不能發送不能聲明地址消息或其它任何消息。



若是你一時半會不能理解這裏的簡介也沒有關係,只要記住,每一個節點必須用地址和名字來保持本身的惟一性。因此在上電後,必須先完成地址聲明才能開始通訊。在具體開發時候能夠在找J1939(81)的詳細文檔仔細琢磨研究。




本文分享自微信公衆號 - 嵌入式程序猿(InterruptISR)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。

相關文章
相關標籤/搜索