先回答標(biāo)題問題:“對(duì)我自己而言,沒有”。有時(shí)我自己會(huì)有這樣的感受,Autosar的某些規(guī)范即使看了很多遍,工程上也碰到了些問題,但是每次再去讀,發(fā)現(xiàn):依然有些東西是不清晰的。本文就CanNM的網(wǎng)絡(luò)狀態(tài)機(jī),再和大家摳幾個(gè)細(xì)節(jié),希望對(duì)你有用!
1、CanNmPnHandleMultipleNetworkRequests 作用
如果項(xiàng)目中,網(wǎng)絡(luò)管理不用PN(Partial Network)功能,可能不太會(huì)關(guān)注CanNmPnHandleMultipleNetworkRequests。先看一下Autosar規(guī)范給出的解釋:Specifies if CanNm performs an additional transition from Network Mode to Repeat Message State (true) or not (false).
也就是說,該參數(shù)使能與否決定著節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài)是否可以切換到RMS(Repeat Message State)。從哪種狀態(tài)切換到RMS狀態(tài)呢?
由上圖可以看出,使用CanNmPnHandleMultipleNetworkRequests參數(shù)時(shí),均與CanNm_NetworkRequest()接口的調(diào)用相關(guān),主要有兩個(gè)地方會(huì)判斷該參數(shù)的使能情況。
位置 1
如果節(jié)點(diǎn)的網(wǎng)絡(luò)狀態(tài)在RSS(Ready Sleep State),調(diào)用CanNm_NetworkRequest()接口請(qǐng)求網(wǎng)絡(luò)時(shí),能否進(jìn)入NOS(Normal Operation State)取決于CanNmPnHandleMultipleNetworkRequests的使能情況:
CanNmPnHandleMultipleNetworkRequests = FALSE,節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài)由RSS切換到NOS;
CanNmPnHandleMultipleNetworkRequests = TRUE,節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài)由RSS切換到RMS。
為什么CanNmPnHandleMultipleNetworkRequests = TRUE,網(wǎng)絡(luò)狀態(tài)需要切換到RMS狀態(tài)呢?先看Autosar規(guī)范給的解釋:
CanNmPnHandleMultipleNetworkRequests 的使能,我們需要先意識(shí)到一個(gè)前提:
PN的使能,即:CanNmPnEnabled == true。使用PN功能,意味著每個(gè)節(jié)點(diǎn)會(huì)關(guān)聯(lián)對(duì)應(yīng)的PNC,只有接收到的PNC和節(jié)點(diǎn)相關(guān),節(jié)點(diǎn)網(wǎng)絡(luò)才能喚醒。如下圖,假設(shè)某CAN BUS上有ECU1、ECU2、ECU3三個(gè)節(jié)點(diǎn),ECU1關(guān)聯(lián)PNC 16和PNC17,ECU2關(guān)聯(lián)PNC 16,ECU3關(guān)聯(lián)PNC 17。
假設(shè):
t0時(shí)刻,只有ECU1和ECU2在通信,即:NM Msg只包含PNC16,且ECU1進(jìn)入RSS狀態(tài),ECU2在NOS狀態(tài),ECU3未有喚醒(處于BSM);
t1時(shí)刻,由于ECU1上層主動(dòng)請(qǐng)求網(wǎng)絡(luò),ECU1需要喚醒ECU3參與通信,主動(dòng)調(diào)用CanNm_NetworkRequest()接口請(qǐng)求網(wǎng)絡(luò)(比如:對(duì)應(yīng)的PNC17的VFC置位),同時(shí)發(fā)送的NM Msg中包含PNC 17。ECU3收到包含PNC17的NM Msg以后,網(wǎng)絡(luò)狀態(tài)由BSM進(jìn)入RMS狀態(tài),為了保證三個(gè)節(jié)點(diǎn)在同一網(wǎng)絡(luò)狀態(tài),因此,ECU1需要從RSS狀態(tài)切換到RMS狀態(tài),同時(shí),ECU1發(fā)送的NM Msg中,Repeat Message Request Bit = 1,將ECU2由NOS狀態(tài)也拉回RMS狀態(tài),以此確保三個(gè)節(jié)點(diǎn)在相同的網(wǎng)絡(luò)狀態(tài)。不理解RMR Bit作用,可以參考前文勘誤篇(一):Autosar網(wǎng)絡(luò)管理:RepeatMessageRequestBit作用,你清楚嗎?;
t2時(shí)刻,Repeat Message Timer超時(shí),三者脫離RMS狀態(tài),ECU1、ECU2、ECU3進(jìn)入NOS狀態(tài)。上述過程如下所示:
位置 2
此處說明,只要在NM(Network Mode)模式下調(diào)用
CanNm_NetworkRequest()接口,且CanNmPnHandleMultipleNetworkRequests ==TRUE,網(wǎng)絡(luò)狀態(tài)需要切換到RMS狀態(tài),且重啟Repeat Message Timer。分析同上,此處不再贅述。舉例說明PNC請(qǐng)求與Channel NM Status關(guān)系:
t0時(shí)刻,PNC #n保持請(qǐng)求(PNC #n = 1),假設(shè)PNC #n映射的Channel網(wǎng)絡(luò)狀態(tài)為NOS;
t1時(shí)刻,PnResetTime(2.95s)內(nèi)收到PNC #n = 0(或者沒有收到),PNC #n釋放;
t2時(shí)刻,PNC#n再次請(qǐng)求,PNC #n映射的Channel網(wǎng)絡(luò)狀態(tài)由NOS進(jìn)入RMS;
t3時(shí)刻,PNC#n保持請(qǐng)求,Channel由RMS進(jìn)入NOS狀態(tài);
t4時(shí)刻,2.95s時(shí)間內(nèi)沒有PNC#n請(qǐng)求,PNC#n釋放,Channel保持NOS狀態(tài);
t5時(shí)刻,PNC#n再次請(qǐng)求,同t2時(shí)刻。
2、網(wǎng)絡(luò)啟動(dòng),第一幀是否應(yīng)該是網(wǎng)絡(luò)管理報(bào)文?
從網(wǎng)絡(luò)狀態(tài)機(jī)可以看出,CanNm_PassiveStartup()、CanNm_RxIndication()、CanNm_NetworkRequest()接口的調(diào)用均可將節(jié)點(diǎn)網(wǎng)絡(luò)狀態(tài)切換到RMS。
CanNm_NetworkRequest():調(diào)用此接口,說明節(jié)點(diǎn)需要主動(dòng)喚醒網(wǎng)絡(luò),如果此節(jié)點(diǎn)由BSM、PBSM模式進(jìn)入RMS狀態(tài),
第一幀報(bào)文需要是網(wǎng)絡(luò)管理報(bào)文,快速將網(wǎng)段內(nèi)其他節(jié)點(diǎn)喚醒;
CanNm_PassiveStartup()、CanNm_RxIndication():調(diào)用這兩個(gè)接口,個(gè)人理解:
第一幀報(bào)文沒有必要是網(wǎng)絡(luò)管理報(bào)文,因?yàn)榭偩€上已經(jīng)有網(wǎng)絡(luò)管理報(bào)文在發(fā)送,說明有主動(dòng)網(wǎng)絡(luò)節(jié)點(diǎn)發(fā)送了網(wǎng)絡(luò)管理報(bào)文,承擔(dān)著快速喚醒網(wǎng)絡(luò)的“重任”,所以接收節(jié)點(diǎn)無需保證第一幀報(bào)文是網(wǎng)絡(luò)管理報(bào)文,接收節(jié)點(diǎn)需要做的是把應(yīng)用報(bào)文快速發(fā)出,保證功能的快速使能。
3、CanNmMsgCycleOffset的使用場(chǎng)景
網(wǎng)絡(luò)喚醒時(shí),各主動(dòng)網(wǎng)絡(luò)節(jié)點(diǎn)均發(fā)送各自的NM Msg,會(huì)增加總線負(fù)載,為了降低網(wǎng)絡(luò)喚醒時(shí)的總線負(fù)載,會(huì)為每個(gè)主動(dòng)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置一個(gè)Offset值,比如:CanNmMsgCycleOffset。CanNmMsgCycleOffset的使能需要注意:使能快發(fā)模式時(shí),CanNmMsgCycleOffset不適用,需要注意的其他條件,Autosar也給出了其他解釋,如下所示:
CASE 1:
CASE 2:
注意:
C
anNmMsgCycleOffset是發(fā)出第一幀網(wǎng)絡(luò)管理報(bào)文時(shí)的偏移值,即滿足NM Msg發(fā)送時(shí),第一次發(fā)送NM Msg時(shí)的偏移。
審核編輯:劉清
-
RMS
+關(guān)注
關(guān)注
2文章
139瀏覽量
35867 -
狀態(tài)機(jī)
+關(guān)注
關(guān)注
2文章
492瀏覽量
27615 -
Nos
+關(guān)注
關(guān)注
0文章
3瀏覽量
7332
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論