AutoSAR之基礎篇CanNM
前言:首先,問大家幾個問題,你清楚:
為什么要引入網絡管理呢?上電同時啟動,下電同時關閉,它不香嗎?
你知道車上的ECU節點可以分為哪幾種類型嗎?
汽車啟動時,ECU之間怎么保持同步喚醒的呢?
下電時,ECU又是怎樣協同罷工的呢?
汽車熄火后,什么樣的ECU會繼續工作呢?
網絡節點類型
僅本地喚醒節點
僅網絡喚醒節點
本地+網絡喚醒節點
類KL15喚醒節點
NM狀態機
Bus Sleep Mode
Network Mode
Repeat Message State(RMS)
該狀態能夠確保當ECU的狀態機從Bus-Sleep Mode或者Prepare Bus-Sleep mode切換至Network Mode時能夠及時的被網絡上其他ECU節點發現,也就是告訴其他ECU,“大家注意了,我成功上線了,請多多指教!”
當成功進入到RMS狀態時,該節點就會重新發送NM報文并開啟計時器T_REPEAT_MESSAGE,應用報文則需要等待第一幀網絡管理報文發送之后再發送。
當然,第一幀NM報文可以通過配置參數MSG_CYCLE_ OFFSET來延遲發送,降低在同一時間內的總線負載,這個配置參數默認是0 ,一般根據測試結果來做適當的調整。
在計時器T_REPEAT_MESSAGE超時之前,該節點就會一直保持在該狀態,否則將會離開該狀態。
在該狀態下也存在著兩個子狀態:
NM Immediate Transmit State
在該模式下,ECU的目的是快速喚醒整個網絡,同時該節點將會以配置參數T_NM_ImmediateCycleTime的周期發送NM報文,而發送次數則是由配置參數N_ImmediateNM_TIMES來決定,每一次成功發送,該參數就會減1,直至為0,退出該子狀態;
NM Normal Transmit State
在該模式下,ECU節點將會以正常報文周期T_NM_MessageCycle的方式來發送NM報文。
Normal Operation State(NOS)
只要ECU節點自身存在網絡通信的需要,那么ECU就會一直工作在NOS的狀態下。該狀態下NM報文的發送將會以T_NM_MessageCycle的周期來發送報文,每次報文的成功發送或接收或者計時器NM-Timeout超時都會重置該計時器NM-Timeout;
在該狀態下的NM報文以及應用報文都應該正常收發通信。
Ready Sleep State(RSS)
在該模式下,ECU節點應當停止發送NM報文。每次成功接受到來自網絡上的NM報文,計時器T_NM_TIMEROUT 就會重置,一旦T_NM_TIMEROUT 超時,那么就會離開該狀態轉而進入Prepare Bus-Sleep狀態。
Prepare Bus-Sleep Mode
Passive Mode
報文發送與接受狀態
Bus-Sleep階段,只接收NM報文喚醒,不發送任何報文;
Pre-Bus-Sleep階段,同樣僅允許接收NM報文,對于早已在發送Buffer中的APP報文應發送完畢后立刻停止APP報文;
在Network Mode模式下,除了在Ready Sleep階段不允許發送NM報文之外,其余階段APP報文與NM報文正常收發;
狀態機時間參數總結
-
本地喚醒源 :主要指的是基于內部計時器、傳感器、按鈕或者硬線連接或者基于內部狀態的自身請求等。 -
遠程喚醒源 : 主要指的是來自網絡上的NM報文或者其他相關信號,比如點火開關信號等。
NM_01(系統初始化):
當系統KL30啟動或者接收到來自網絡的喚醒源時,則會執行系統初始化,在初始化的過程中,則會執行CanNM_Init來實現NM的初始化。如果喚醒條件不滿足,ECU就會一直停留在Bus-Sleep 階段,直至滿足條件休眠或者被正常喚醒。
NM_02(Bus-Sleep to RMS):
當ECU處于Bus-Sleep階段時,如果接收到有效的NM報文,則會進入到Normal Transmit State。當進入到該階段后,在T_REPEAT_MESSAGE 超時前,ECU將按照T_NM_MessageCycle周期來傳輸報文,同時T_MESSAGE_TIMEOUT也會啟動。
NM_03(Bus-Sleep to RMS):
當ECU在Bus-Sleep階段,存在本地喚醒請求時,ECU應當主動激活網絡,并進入Immediate Transmit State階段,同時將發送的NM報文中的Active Wake up bit置為1。
在該狀態下,應當按照N_ImmediateNM_TIMES的次數發送報文周期為T_NM_ImmediateCycleTime的網絡管理報文。
NM_04:
當N_ImmediateNM_TIMES 等于0之后,NM狀態就會從Immediate Transmit State進入到Normal Transmit State。
NM_05(RMS to RMS):
在RMS階段,如果T_NM_TIMEROUT超時,當前NM狀態不會被改變,但是T_NM_TIMEROUT會被重置。當T_MESSAGE_TIMEOUT超時后,則會調用相應的exception函數通知上層進行處理。
NM_06(RMS to NOS):
當處于RMS階段時,T_REPEAT_MESSAGE超時后,ECU需要繼續保持網絡通信的需要,即通過調用CanNM_NetworkRequest函數進入到NOS階段,而ECU則會繼續按照T_NM_MessageCycle來發送NM報文。
NM_07(NOS to RMS):
在NOS階段,有兩個RMS子狀態可以到達:Immediate Transmit State 與 Normal Transmit State。如果自身節點有repeat message的需要,那么則會進入到Immediate Transmit State。如果接收到的NM中repeat message bit置1,則進入到Normal Transmit State。
NM_08(NOS to NOS):
在NOS階段,如果T_NM_TIMEROUT超時,當前NM狀態不會被改變,但是T_NM_TIMEROUT會被重置。當T_MESSAGE_TIMEOUT超時后,則會調用相應的exception函數通知上層進行處理。
NM_09(NOS to RSS):
當休眠條件滿足時,ECU就會通過CanNm_NetworkRelease函數來實現從NOS至RSS狀態。在RSS狀態下應當停發NM報文。
NM_10(RSS to NOS):
在RSS狀態下,如果存在本地喚醒請求,則可以通過CanNm_NetworkRequest函數來切換至NOS狀態。
NM_11(RSS to RMS):
在RSS狀態下,RMS存在兩種子狀態可供進入:Immediate Transmit State與 Normal Transmit State。當自身節點存在repeat message請求時,則會進入前者;當接受到外部的NM報文中repeat message bit為1時,則進入后者。
NM_12(RMS to RSS):
當ECU處在RMS狀態中的Normal Transmit State狀態下,如果T_REPEAT_MESSAGE超時且滿足休眠條件時,則會進入RSS狀態。
NM_13(RSS to Pre-Bus-Sleep):
在RSS狀態下,如果沒有本地喚醒請求或者遠程喚醒請求,在計時器T_NM_TIMEROUT 超時之后就會進入Pre-Bus-Sleep 階段,同時T_MESSAGE_TIMEOUT置為0,啟動T_WaitBusSleep計時器。
NM_14(Network Mode to Network Mode):
在Network Mode下,當成功接受或者發送NM報文時T_NM_TIMEROUT 就會被重置,重置該定時器的行為就發生在調用函數CanNM_RxIndication或者CanNM_Txconfirmation接口中。
NM_15(Pre-Bus-Sleep to RMS):
在Pre-Bus-Sleep模式下,如果存在遠程喚醒請求,則會進入到RMS階段中的Normal Transimit State。同時啟動T_REPEAT_MESSAGE。
NM_16(Pre-Bus-Sleep to RMS):
在Pre-Bus-Sleep模式下,如果存在本地喚醒請求,即調用函數接口CanNm_NetworkRequest來進入到RMS中的Immediate Transmit階段,應當按照N_ImmediateNM_TIMES的次數發送報文周期為T_NM_ImmediateCycleTime的網絡管理報文。
NM_17(Pre-Bus-Sleep to Bus-Sleep):
在Pre-Bus-Sleep模式下,如果不存在本地喚醒或者遠程喚醒請求,則進入到Bus-Sleep狀態。至于何時關閉電源控制,則可以根據自身節點類型來shutdown。
網絡管理報文結構
NM報文總體結構解析
CBV詳解
0: 代表存在Repeat Message Request ;
1:代表不存在Repeat Message Request ;
0:NM報文中不包含同步局部網絡管理休眠請求;
1:NM報文中包含同步局部網絡管理休眠請求;
0:未被主協調NM節點請求開始同步休眠;
1:已被主協調NM節點請求開始同步休眠;
0:節點沒有喚醒過網絡,屬于被動喚醒;
1:節點喚醒過網絡,屬于主動喚醒;
0: PNC learning被請求
1: PNC learining未被請求
0: NM報文中包含PN 信息;
1:NM報文中未包含PN 信息;
常用函數接口
工程師必備
- 項目客服
- 培訓客服
- 平臺客服
TOP




















