1 概述
AUTOSAR NM 是AUTOSAR軟件架構默認的一種網絡管理策略。AUTOSAR NM是一種分布式直接網絡管理,每個節點根據網絡管理幀的狀態獨立的控制自己的網絡狀態。
2 策略描述
該策略是基於網絡上周期性廣播的網絡管理幀。
在網絡喚醒狀態下,當一個節點A需要保持網絡喚醒時,節點A會周期性地發送網絡管理幀。假如網絡中有一個節點B准備好睡眠,節點B停止發送自己的網絡管理幀。一旦節點B接收到其他節點的網絡管理幀,節點B會推遲進入睡眠狀態。如果連續一段時間都沒有接收到任何網絡管理幀,則網絡上的所有節點進入睡眠狀態。
在網絡睡眠狀態下,當一個節點A需要網絡通信時,節點A可以通過發送網絡管理幀喚醒網絡。
3 網絡管理模式
AUTOSAR NM有三種網絡管理模式:
睡眠模式(Bus-Sleep Mode)
網絡模式(Network Mode)
預睡眠模式(Prepare Bus-Sleep Mode)
其中網絡模式有三個狀態:
幀重復狀態(Repeat Message State)
正常運行狀態(Normal Operation State)
准備睡眠狀態(Ready Sleep State)

每個模式下幀的發送情況如下:任何狀態下都可以接收網絡管理幀,只有在網絡模式下才能接收應用幀

3.1 睡眠模式(Bus-Sleep Mode)
為了降低汽車的功耗,當網絡上沒有信息交互時,網絡將進入睡眠模式。該模式下,所有節點不發幀(網絡管理幀和應用幀)。ECU會將CAN收發器設置成睡眠模式,並激活相應的喚醒機制。
ECU 上電后默認進入睡眠模式。
在睡眠模式下,有如下兩個條件使得網絡進入網絡模式:
接收到其他節點的網絡管理幀(Passive Wake-up)
主動請求喚醒網絡(Active wake up)
3.2 網絡模式(Network Mode)
網絡模式下,ECU處於信息交互階段,可以正常的收發應用幀。ECU上的CAN收發器處於正常工作狀態。
網絡模式包含三個狀態:
幀重復狀態(Repeat Message State)
正常運行狀態(Normal Operation State)
准備睡眠狀態(Ready Sleep State)
當網絡從其他模式轉移到網絡模式時,默認進入幀重復狀態。 當ECU進入網絡模式后, NM模塊要啟動一個網絡管理超時定時器(T_NM_TIMEROUT)。每次成功接收或發送網絡管理幀時刷新該定時器。
從睡眠模式進入網絡模式后,要在T_WakeUp時間內發出網絡管理幀。
3.2.1 幀重復狀態(Repeat Message State)
當ECU從睡眠或預睡眠進入到網絡模式后,幀重發狀態保證了自己可以被其他節點發現。此外,也使得網絡上的節點在一定時間(T_REPEAT_MESSAGE)內保持激活狀態。該狀態可用於檢測網絡上存在的節點。
在該狀態下,ECU要周期性地向外發送網絡管理幀。根據進入該狀態的條件不同,發送網絡管理幀的周期也不同。
快速模式:當進入幀重復狀態的條件是網絡請求(自身條件滿足)或者重發請求(自身請求重發)。也可以叫做主動進入幀重復狀態。這時,ECU要立即發出規定數量(N_ImmediateNM_TIMES.)的網絡管理幀,並且發出第一幀的時間越快越好。發送周期按照T_NM_ImmediateCycleTime。發完這些規定數量的幀后,發送周期換成T_NM_MessageCycle。並且,如果進入條件是自身請求重發時,發送的網絡管理幀要置為重復幀標志位。如下圖:

常速模式:當進入幀重復狀態的條件是接收到網絡管理幀或者幀重復請求位(Repeat Message Request Bit Indication)。也可以叫做被動進入幀重復狀態。這時,ECU以正常的周期T_NM_MessageCycle發送網絡管理幀。如下圖:

進入Repeat Massage State后必須在T_START_NM_TX時間內發出第一幀網絡管理幀。第一個網絡管理幀成功發出后,應用幀要在T_STARTx_AppFrame時間內發出。
在此狀態下,每次發生T_NM_TIMEROUT超時,都要重置這個時間。
ECU會在T_REPEAT_MESSAGE時間內保持為Repeat Massage State。過了這個時間后,ECU要離開重復幀狀態。離開此狀態后,如果有請求網絡,則進入正常運行狀態(Normal Operation State);如果有釋放網絡,則進入准備睡眠狀態(Ready Sleep State)。離開后,要清除幀重復請求位(Repeat Message Request Bit Indication)。
3.2.2 正常運行狀態
正常運行狀態是為了確保在ECU需要網絡時,網絡一直保持喚醒狀態。
在該狀態下,ECU會一直以T_NM_MessageCycle為周期發送網絡管理幀。同時,當發生T_NM_TIMEROUT定時器超時后,重置該定時器。
在正常運行狀態下,當ECU主動釋放網絡后,轉移到准備睡眠狀態。
在正常運行狀態下,當ECU接收到重復幀標志位(Repeat Message Request Bit Indication)或者自身請求進入重復幀狀態后,轉移到重復幀狀態。
3.2.3 准備睡眠狀態
准備睡眠狀態下,還有其他節點會發網絡管理幀保持網絡喚醒,此時ECU處於等待進入預睡眠模式的階段。
在此狀態下,ECU停止發送網絡管理幀。當發生T_NM_TIMEROUT定時器超時后(即其他節點沒有再發送網絡管理幀),ECU進入到預睡眠狀態。
在此狀態下,如果自身請求網絡,ECU進入正常運行狀態;如果接收到重復幀標志位(Repeat Message Request Bit Indication)或者自身請求進入重復幀狀態后,轉移到重復幀狀態。
3.3 預睡眠模式
預睡眠模式是為了使網絡上的所有節點在進入睡眠模式前有足夠的時間停止自身的網絡活動。在該模式下,所有節點停止發送網絡管理幀和應用幀,總線靜默。從網絡模式進入該模式時,會啟動一個睡眠等待時間(T_WAIT_BUS_SLEEP),當這個時間到后,網絡就進入睡眠模式。
在預睡眠模式下,如果ECU接收到網絡管理幀或者自身請求網絡,ECU會回到網絡模式,默認狀態是重復幀狀態。
3.4 網絡請求與釋放
網絡請求: 當ECU需要總線通信時,它會調用CanNm_NetworkRequest請求網絡;
網絡釋放: 當ECU不需要總線通信時,它會調用CanNm_NetworkRelease釋放網絡。
觸發這兩個動作的條件由客戶需求決定。
4 網絡管理幀
一般情況下,網絡管理幀長度為8個字節。這8個字節的內容如下:

其中,byte0的內容是節點ID;byte1的內容是網絡控制信息;byte2~byte7是用戶數據。
4.1 節點ID
節點ID一般是網絡管理幀ID的低8位。

4.2 網絡控制信息

bit0: 默認值是0, 當ECU是主動請求進入重復幀狀態時,要把這一位置為1,直到離開重復幀狀態。
bit4: 當ECU是主動請求網絡而進入重復幀狀態時,該位為1;當ECU是接收到其他節點的網絡管理幀而進入重復幀狀態時,該位為0。
網絡管理幀的長度和內容都是可以配置的。
