概述
AUTOSAR CAN 網(wǎng)絡(luò)管理是一個獨(dú)立于硬件的協(xié)議,只能在 CAN 上使用。它的主要目的是協(xié)調(diào)網(wǎng)絡(luò)的正常運(yùn)行和總線休眠模式之間的轉(zhuǎn)換。
除了核心功能之外,還提供了可配置功能,例如, 實(shí)施服務(wù)來檢測所有當(dāng)前節(jié)點(diǎn)或檢測是否所有其他節(jié)點(diǎn)都準(zhǔn)備好休眠。
CAN 網(wǎng)絡(luò)管理(CanNm)功能提供網(wǎng)絡(luò)管理接口(NmIf)和 CAN 接口(CanIf)模塊之間的適配。
網(wǎng)絡(luò)管理的制約
CanNm 的一個通道只與一個網(wǎng)絡(luò)中的一個網(wǎng)絡(luò)管理集群相關(guān)聯(lián)。一個網(wǎng)絡(luò)管理群集在一個節(jié)點(diǎn)中只能有一個 CanNm 通道。
CanNm 的一個通道僅與同一 ECU 內(nèi)的一個網(wǎng)絡(luò)相關(guān)聯(lián)。
CanNm 僅適用于 CAN 系統(tǒng)。
CANNm 模塊可以應(yīng)用于任何汽車領(lǐng)域。
網(wǎng)絡(luò)管理協(xié)議
喚醒請求
喚醒請求可分為如下兩種:
本地喚醒請求, 即來自該節(jié)點(diǎn)內(nèi)部的對網(wǎng)絡(luò)的喚醒請求。
遠(yuǎn)程喚醒請求, 即來自網(wǎng)絡(luò)上其他節(jié)點(diǎn)的網(wǎng)絡(luò)管理報(bào)文請求。
網(wǎng)絡(luò)管理模式
網(wǎng)絡(luò)管理包含如下三種模式:
睡眠模式
預(yù)睡眠模式
網(wǎng)絡(luò)模式
睡眠模式
當(dāng)節(jié)點(diǎn)沒有本地網(wǎng)絡(luò)喚醒及遠(yuǎn)程喚醒請求時, ECU 通訊控制器切換至睡眠模式, ECU 功耗降低至適當(dāng)水平。
在睡眠模式下,節(jié)點(diǎn)的網(wǎng)絡(luò)管理報(bào)文和應(yīng)用報(bào)文禁止發(fā)送,并且不能對總線上的報(bào)文進(jìn)行 ACK 應(yīng)答;但可以被總線上的報(bào)文喚醒,在被喚醒后才可以對總線報(bào)文進(jìn)行ACK 應(yīng)答。同時節(jié)點(diǎn)在該模式下,如果檢測到有效的喚醒源,節(jié)點(diǎn)必須被喚醒。
預(yù)睡眠模式
當(dāng)節(jié)點(diǎn)進(jìn)入預(yù)睡眠模式時,將啟動T_WAIT_BUS_SLEEP定時器。
在預(yù)睡眠模式下,總線活動需靜止下來,最終達(dá)到總線上沒有活動,但ECU通訊控制器狀態(tài)應(yīng)處于工作模式。
在該模式下,節(jié)點(diǎn)的網(wǎng)絡(luò)管理報(bào)文和應(yīng)用報(bào)文禁止發(fā)送(為了清空發(fā)送緩存,允許將發(fā)送隊(duì)列中已有的報(bào)文發(fā)完),但需對總線上的報(bào)文進(jìn)行ACK應(yīng)答。
網(wǎng)絡(luò)模式
當(dāng)節(jié)點(diǎn)進(jìn)入網(wǎng)絡(luò)模式時,將啟動 T_NM_TIMEROUT 定時器。在網(wǎng)絡(luò)模式下成功接收或者發(fā)送網(wǎng)絡(luò)管理報(bào)文時,節(jié)點(diǎn)將重新啟動 T_NM_TIMEROUT 定時器。
網(wǎng)絡(luò)模式分為三種內(nèi)部狀態(tài):
重復(fù)報(bào)文狀態(tài)
常規(guī)操作狀態(tài)
準(zhǔn)備睡眠狀態(tài)
重復(fù)報(bào)文狀態(tài)
重復(fù)報(bào)文狀態(tài)確保節(jié)點(diǎn)從睡眠模式或預(yù)睡眠模式到網(wǎng)絡(luò)模式的轉(zhuǎn)換對網(wǎng)絡(luò)上的其他節(jié)點(diǎn)可見。
進(jìn)入重復(fù)報(bào)文狀態(tài)時,節(jié)點(diǎn)將(重新)開始網(wǎng)絡(luò)管理報(bào)文的發(fā)送,并啟動 T_REPEAT_MESSAGE 定時器。應(yīng)用報(bào)文必須在第一幀網(wǎng)絡(luò)管理報(bào)文發(fā)送開始后且小于 T_STARTx_AppFrame 內(nèi)發(fā)送。
節(jié)點(diǎn)的網(wǎng)絡(luò)管理狀態(tài)將保持在重復(fù)報(bào)文狀態(tài)直到 T_REPEAT_MESSAGE 時間截止,一旦該時間超時,網(wǎng)絡(luò)管理狀態(tài)應(yīng)該離開重復(fù)報(bào)文狀態(tài)。
在 重 復(fù) 報(bào) 文 狀 態(tài) 下 , 節(jié) 點(diǎn) 一 旦 接 收 或 發(fā) 送 一 條 網(wǎng) 絡(luò) 管 理 報(bào) 文 , 或 者T_NM_TIMEROUT 超時,則 T_NM_TIMEROUT 立即重置。
重復(fù)報(bào)文狀態(tài)包含兩個子狀態(tài):
NM 快速發(fā)送子狀態(tài)。節(jié)點(diǎn)在進(jìn)入 NM 快速發(fā)送子狀態(tài)時,為了快速喚醒網(wǎng)絡(luò),節(jié)點(diǎn)必須以快速周期T_NM_ImmediateCycleTime 發(fā)送網(wǎng)絡(luò)管理報(bào)文。
發(fā)送的快速網(wǎng)絡(luò)管理報(bào)文數(shù)量由參數(shù) N_ImmediateNM_TIMES 決定,節(jié)點(diǎn)每次成功發(fā)送一條快速周期網(wǎng)絡(luò)管理報(bào)文時,該數(shù)值應(yīng)遞減 1。
NM 正常發(fā)送子狀態(tài)。進(jìn)入NM正常發(fā)送子狀態(tài)后,節(jié)點(diǎn)必須以正常周期T_NM_MessageCycle發(fā)送網(wǎng)絡(luò)管理報(bào)文。
常規(guī)操作狀態(tài)
當(dāng)節(jié)點(diǎn)因發(fā)生本地喚醒事件需要與網(wǎng)絡(luò)上的其他節(jié)點(diǎn)進(jìn)行通訊時,必須保持在常規(guī)操作狀態(tài),并且以正常周期 T_NM_MessageCycle 發(fā)送網(wǎng)絡(luò)管理報(bào)文。在常規(guī)操作狀態(tài)下,節(jié)點(diǎn)一旦接收或發(fā)送一條網(wǎng)絡(luò)管理報(bào)文,或者 T_NM_TIMEROUT 超時,則 T_NM_TIMEROUT 應(yīng)該立即重置。
在常規(guī)操作狀態(tài)下,節(jié)點(diǎn)的網(wǎng)絡(luò)管理報(bào)文和應(yīng)用報(bào)文必須正常發(fā)送。
準(zhǔn)備睡眠狀態(tài)
節(jié)點(diǎn)進(jìn)入準(zhǔn)備睡眠后,必須停止發(fā)送網(wǎng)絡(luò)管理報(bào)文。
在準(zhǔn)備睡眠狀態(tài)下,節(jié)點(diǎn)一旦接收到一條網(wǎng)絡(luò)管理報(bào)文, T_NM_TIMEROUT應(yīng)該立刻重置。T_NM_TIMEROUT超時,節(jié)點(diǎn)的網(wǎng)絡(luò)管理狀態(tài)應(yīng)進(jìn)入預(yù)睡眠模式。
網(wǎng)絡(luò)管理報(bào)文
AUTOSAR 網(wǎng)絡(luò)管理報(bào)文結(jié)構(gòu)如下表所示:
CAN 網(wǎng)絡(luò)管理報(bào)文 ID 范圍從 0x500~0x53F,其中報(bào)文優(yōu)先級定義為(110) 2 = 6 級, FFFA 為網(wǎng)絡(luò)管理 PGN(自定義),00~FF 為 ECU 源地址SA;
網(wǎng)絡(luò)管理報(bào)文數(shù)據(jù)場的字節(jié) 1 用于發(fā)送控制比特向量(Control Bit Vector),字節(jié) 2~7 用戶自定義:
當(dāng)控制器有重復(fù)報(bào)文請求,主動回到重復(fù)報(bào)文狀態(tài),并將重復(fù)報(bào)文請求位置 1;當(dāng)該控制器離開重復(fù)報(bào)文狀態(tài),將重復(fù)報(bào)文請求位清零;控制器由于其他條件(本地喚醒或接收到其他控制器重復(fù)報(bào)文狀態(tài)位置 1 的 NM 報(bào)文)而回到重復(fù)報(bào)文狀態(tài),重復(fù)報(bào)文請求位保持 0。
當(dāng)控制器由于本地喚醒進(jìn)入重復(fù)報(bào)文狀態(tài)時,主動喚醒位置 1,直到重新進(jìn)入預(yù)睡眠模式時清零;當(dāng)控制器由于遠(yuǎn)程 NM 報(bào)文喚醒,主動喚醒位保持 0。
網(wǎng)絡(luò)管理常用參數(shù)
狀態(tài)遷移
狀態(tài)遷移條件
NM_01
網(wǎng)絡(luò)管理節(jié)點(diǎn)的上電后(Battery Power on),節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)管理模塊初始化,初始化完成后進(jìn)入睡眠模式,具備被本地喚醒事件或者遠(yuǎn)程喚醒請求的能力。
NM_02
當(dāng)網(wǎng)絡(luò)管理節(jié)點(diǎn)處于睡眠模式時,如果收到有效的遠(yuǎn)程喚醒請求,那么節(jié)點(diǎn)必須離開睡眠模式并進(jìn)入重復(fù)報(bào)文狀態(tài)的 NM 正常發(fā)送子狀態(tài)。
進(jìn)入 NM 正常發(fā)送子狀態(tài)后,在定時器 T_REPEAT_MESSAGE 超時前,節(jié)點(diǎn)必須以以 T_NM_MessageCycle 為周期發(fā)送網(wǎng)絡(luò)管理報(bào)文。
NM_03
如果節(jié)點(diǎn)在睡眠模式下檢測到本地喚醒請求,那么節(jié)點(diǎn)必須主動喚醒網(wǎng)絡(luò), 進(jìn)入NM 快速發(fā)送子狀態(tài), 并將主動喚醒位設(shè)置為 1。
節(jié)點(diǎn)進(jìn)入 NM 快速發(fā)送子狀態(tài)后,需以 T_NM_ImmediateCycleTime 為周期,發(fā)送數(shù)量為 N_ImmediateNM_TIMES 的網(wǎng)絡(luò)管理報(bào)文。
NM_04
處于 NM 快速發(fā)送子狀態(tài)的節(jié)點(diǎn),在計(jì)數(shù)器 N_ImmediateNM_TIMES 為零時,將進(jìn)入 NM 正常發(fā)送子狀態(tài)。
NM_05
處于重復(fù)發(fā)送狀態(tài)下的節(jié)點(diǎn),如果 T_NM_TIMEROUT 超時,節(jié)點(diǎn)的網(wǎng)絡(luò)管理狀態(tài)不應(yīng)改變,但 T_NM_TIMEROUT 必須重置。
NM_06
處于 NM 正常發(fā)送子狀態(tài)的節(jié)點(diǎn),當(dāng) T_REPEAT_MESSAGE 超時, 主動喚醒模式下,則進(jìn)入常規(guī)操作狀態(tài)。節(jié)點(diǎn)繼續(xù)保持以正常周期 T_NM_MessageCycle發(fā)送網(wǎng)絡(luò)管理報(bào)文和相關(guān)的應(yīng)用報(bào)文。
NM_07
處于常規(guī)操作狀態(tài)的節(jié)點(diǎn),如果節(jié)點(diǎn)自身有重復(fù)報(bào)文請求,節(jié)點(diǎn)將網(wǎng)絡(luò)管理狀態(tài)切換到重復(fù)報(bào)文狀態(tài)的 NM 快速發(fā)送子狀態(tài);如果節(jié)點(diǎn)收到其他節(jié)點(diǎn)重復(fù)報(bào)文請求位置 1 的 NM 報(bào)文,節(jié)點(diǎn)將網(wǎng)絡(luò)管理狀態(tài)切換到重復(fù)報(bào)文狀態(tài)的 NM 正常發(fā)送子狀態(tài)。
NM_08
處于常規(guī)操作狀態(tài)下的節(jié)點(diǎn),如果 T_NM_TIMEROUT 超時,節(jié)點(diǎn)的網(wǎng)絡(luò)管理狀態(tài)不應(yīng)改變,但 T_NM_TIMEROUT 必須重置。
NM_09
處于常規(guī)操作狀態(tài)下的節(jié)點(diǎn),如果本身不需要網(wǎng)絡(luò),節(jié)點(diǎn)馬上將網(wǎng)絡(luò)管理狀態(tài)切換到準(zhǔn)備睡眠狀態(tài),同時停止發(fā)送網(wǎng)絡(luò)管理報(bào)文,保持應(yīng)用報(bào)文的發(fā)送和接受,每次接受到網(wǎng)絡(luò)管理報(bào)文,重置T_NM_TIMEROUT定時器。
NM_10
處于準(zhǔn)備睡眠狀態(tài)的節(jié)點(diǎn),如果檢測到本地喚醒請求,則將網(wǎng)絡(luò)管理狀態(tài)切換到常規(guī)操作狀態(tài)。
NM_11
處于準(zhǔn)備睡眠狀態(tài)的節(jié)點(diǎn),如果節(jié)點(diǎn)自身有重復(fù)報(bào)文請求,節(jié)點(diǎn)將網(wǎng)絡(luò)管理狀態(tài)切換到重復(fù)報(bào)文狀態(tài)的 NM 快速發(fā)送子狀態(tài);如果節(jié)點(diǎn)收到其他節(jié)點(diǎn)重復(fù)報(bào)文請求位置 1 的 NM 報(bào)文,節(jié)點(diǎn)將網(wǎng)絡(luò)管理狀態(tài)切換到重復(fù)報(bào)文狀態(tài)的 NM 正常發(fā)送子狀態(tài)。
NM_12
處于 NM 正常發(fā)送子狀態(tài)下的節(jié)點(diǎn),當(dāng) T_REPEAT_MESSAGE 超時,且自身無網(wǎng)絡(luò)請求,節(jié)點(diǎn)將立即進(jìn)入準(zhǔn)備睡眠狀態(tài),并開啟CANNM_WBS_TIMER定時器。
NM_13處 于 準(zhǔn) 備 睡 眠 狀 態(tài) 的 節(jié) 點(diǎn), 如 果 不 再 收 到 本 地 或 遠(yuǎn) 程 喚 醒 請 求 , 在CANNM_WBS_TIMER超時后,節(jié)點(diǎn)將進(jìn)入預(yù)睡眠模式,進(jìn)入預(yù)睡眠模式后開啟T_WAIT_BUS_SLEEP 定時器.
NM_14
處于網(wǎng)絡(luò)模式的節(jié)點(diǎn),在成功接收或者發(fā)送一幀網(wǎng)絡(luò)管理報(bào)文后,節(jié)點(diǎn)的網(wǎng)絡(luò)處于預(yù)睡眠模式的節(jié)點(diǎn),如果收到遠(yuǎn)程喚醒請求,將進(jìn)入重復(fù)報(bào)文狀態(tài)的 NM 正常發(fā)送子狀態(tài)。
NM_16
處于預(yù)睡眠模式的節(jié)點(diǎn),如果收到本地喚醒請求,將進(jìn)入重復(fù)報(bào)文狀態(tài)的 NM 快速發(fā)送子狀態(tài)。
NM_17
處 于 預(yù) 睡 眠 模 式 的 節(jié) 點(diǎn) , 如 果 不 再 收 到 本 地 或 遠(yuǎn) 程 喚 醒 請 求 ,在T_WAIT_BUS_SLEEP 超時后,節(jié)點(diǎn)將進(jìn)入睡眠模式。
故障處理
節(jié)點(diǎn)的網(wǎng)絡(luò)管理所在的網(wǎng)絡(luò)總線不可用時,必須執(zhí)行如下行為:
如果節(jié)點(diǎn)沒有準(zhǔn)備好睡眠,但總線變得不可用,則不應(yīng)該進(jìn)入睡眠模式。
如果節(jié)點(diǎn)已準(zhǔn)備好睡眠,但總線變得不可用,則應(yīng)該進(jìn)入睡眠模式。
如果總線不可用,但節(jié)點(diǎn)狀態(tài)變?yōu)闇?zhǔn)備睡眠,則應(yīng)該進(jìn)入睡眠模式。
如果總線不可用,但節(jié)點(diǎn)狀態(tài)變?yōu)槲礈?zhǔn)備好睡眠,則不應(yīng)該進(jìn)入睡眠模式。
網(wǎng)絡(luò)管理的故障處理不適用于已經(jīng)處于睡眠模式的節(jié)點(diǎn),因?yàn)樵谒吣J较聼o通信行為,此時總線不可用是難以檢測到的。
審核編輯:湯梓紅
-
接口
+關(guān)注
關(guān)注
33文章
8447瀏覽量
150722 -
CAN
+關(guān)注
關(guān)注
57文章
2694瀏覽量
463150 -
網(wǎng)絡(luò)管理
+關(guān)注
關(guān)注
0文章
118瀏覽量
27637 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
349瀏覽量
21444 -
ecu
+關(guān)注
關(guān)注
14文章
876瀏覽量
54360
原文標(biāo)題:一文搞懂 Autosar 網(wǎng)絡(luò)管理
文章出處:【微信號:談思實(shí)驗(yàn)室,微信公眾號:談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論