詳解AUTOSAR:AUTOSAR CAN網(wǎng)絡(luò )管理/CAN NM
AUTOSAR CAN網(wǎng)絡(luò )通信中有三種模式和三種狀態(tài),如下圖所示:
3種運行模式:
睡眠模式(Bus-Sleep Mode);
預睡眠模式(Prepare Bus-Sleep Mode);
網(wǎng)絡(luò )模式(Network Mode)。
睡眠模式(Bus-Sleep Mode)
當CAN網(wǎng)絡(luò )中沒(méi)有遠程喚醒或者本地喚醒請求時(shí),ECU應處于睡眠模式(Bus-Sleep Mode),將功耗降低至最低水平,這種模式是ECU啟動(dòng)時(shí)的起始狀態(tài)或者是ECU睡眠時(shí)的最終狀態(tài)。
在該模式下,網(wǎng)絡(luò )管理報文和應用報文都禁止發(fā)送,但是可以被網(wǎng)絡(luò )上的報文喚醒。
CAN收發(fā)器應當支持設定喚醒幀(如果有CAN收發(fā)器的情況下),ECU只會(huì )接受到特定的NM報文才會(huì )正常喚醒,否則就會(huì )一直處于休眠狀態(tài),能夠不受網(wǎng)絡(luò )上應用報文的干擾。
預睡眠模式(Prepare Bus-Sleep Mode)
ECU進(jìn)入預睡眠模式(Prepare Bus-Sleep Mode)后禁止網(wǎng)絡(luò )管理報文的發(fā)送,允許接收網(wǎng)絡(luò )管理報文。應用報文已經(jīng)在buffer中的一般允許繼續發(fā)送,進(jìn)入到預睡眠模式(Prepare Bus-Sleep Mode)計時(shí)器CanNmWaitBusSleepTime就會(huì )啟動(dòng),一旦計時(shí)器CanNmWaitBusSleepTime超時(shí),就會(huì )進(jìn)入到睡眠模式(Bus-Sleep Mode)。
本項目AUTOSAR配置中設定計時(shí)器CanNmWaitBusSleepTime為2秒。
網(wǎng)絡(luò )模式(Network Mode)
當CAN網(wǎng)絡(luò )處于開(kāi)啟或者工作情況下會(huì )進(jìn)入網(wǎng)絡(luò )模式,ECU進(jìn)入網(wǎng)絡(luò )模式(Network Mode)后計時(shí)器CanNmTimeoutTime就會(huì )啟動(dòng),只要成功接收到來(lái)自CAN總線(xiàn)上的網(wǎng)絡(luò )管理報文或者成功發(fā)送至CAN總線(xiàn)網(wǎng)絡(luò )管理報文,都會(huì )將計時(shí)器CanNmTimeoutTime重置。
本項目AUTOSAR配置中設定計時(shí)器CanNmTimeoutTime為2秒,所以0X505網(wǎng)絡(luò )管理報文的發(fā)送周期要在2秒內,超時(shí)會(huì )進(jìn)入預睡眠模式(Prepare Bus-Sleep Mode)。
網(wǎng)絡(luò )模式(Network Mode)包含3種狀態(tài):
報文重復狀態(tài)(Repeat Message State);
常規運行狀態(tài)(Normal Operation State);
準備睡眠狀態(tài)(Ready Sleep State)。
報文重復狀態(tài)(Repeat Message State)
當ECU從其他模式進(jìn)入網(wǎng)絡(luò )模式(Network Mode)時(shí),默認進(jìn)入報文重復狀態(tài)(Repeat Message State)。該階段是CAN網(wǎng)絡(luò )正式開(kāi)始工作前的準備階段,用來(lái)等待CAN網(wǎng)絡(luò )中所有相關(guān)節點(diǎn)進(jìn)行網(wǎng)絡(luò )通信的準備時(shí)間。
該模式下計時(shí)器CanNmRepeatMessageTime規定了重復發(fā)送網(wǎng)關(guān)管理報文的時(shí)間,CanNmImmediateNmTransmissions規定了發(fā)送網(wǎng)絡(luò )管理報文的次數。
在報文重復狀態(tài)(Repeat Message State)ECU使用計時(shí)器CanNmMsgCycleTime周期時(shí)間發(fā)送網(wǎng)絡(luò )管理報文。
本項目AUTOSAR配置中發(fā)送網(wǎng)絡(luò )管理報文的周期是640毫秒,重復次數為5,總時(shí)常3.2秒。
常規運行狀態(tài)(Normal Operation State)
ECU進(jìn)行正常CAN通信時(shí)會(huì )處于常規運行狀態(tài)(Normal Operation State),該階段中,節點(diǎn)要按照計時(shí)器CanNmMsgCycleTime時(shí)間周期發(fā)送網(wǎng)絡(luò )管理報文。每次成功發(fā)送或者接收CAN網(wǎng)絡(luò )報文計時(shí)器CanNmTimeoutTime就會(huì )重置。
在常規運行狀態(tài)(Normal Operation State)下的網(wǎng)絡(luò )管理報文和應用報文都應該正常收、發(fā)通信。
準備睡眠狀態(tài)(Ready Sleep State)
在準備睡眠狀態(tài)(Ready Sleep State)ECU應當停止發(fā)送網(wǎng)絡(luò )管理報文,每次成功接受到來(lái)自CAN網(wǎng)絡(luò )上的網(wǎng)絡(luò )管理報文,計時(shí)器CanNmTimeoutTime就會(huì )重置,一旦CanNmTimeoutTime超時(shí),就會(huì )進(jìn)入預睡眠模式(Prepare Bus-Sleep Mode)。
在A(yíng)UTOSAR中規定了各種模式和狀態(tài)下計時(shí)器的默認時(shí)間:
配置參數在A(yíng)UTOSAR代碼中體現如下所示:
下圖梳理了所有網(wǎng)絡(luò )管理的模式轉換情況,通??刂破鞯臓顟B(tài)轉換如藍色箭頭所示:
*博客內容為網(wǎng)友個(gè)人發(fā)布,僅代表博主個(gè)人觀(guān)點(diǎn),如有侵權請聯(lián)系工作人員刪除。