1、什么是AUTOSAR?
官方一點(diǎn):AUTOSAR 就是AUTomotive Open System ARchitecture的簡(jiǎn)稱,中文翻譯就是汽車開放系統(tǒng)架構(gòu)。
直白一點(diǎn):將汽車電子控制單元(ECU)的軟件底層做了一個(gè)標(biāo)準(zhǔn)的封裝。使得大家都能共用一套底層軟件,只需要修改其中的一些參數(shù),就可以匹配不同硬件,也可以匹配不同的應(yīng)用層軟件。如此之后,用戶只需要專心負(fù)責(zé)應(yīng)用層功能開發(fā)即可,底層都交給AutoSAR工程師就行了。
再直白一點(diǎn):“就是一套寫的比較好的底層軟件”。其實(shí)現(xiàn)了硬件驅(qū)動(dòng)的封裝(類似于STM32的庫),實(shí)現(xiàn)了操作系統(tǒng)的功能。用戶只需要開發(fā)操作系統(tǒng)上層的軟件應(yīng)用即可(類似于基于安卓開發(fā)App)。
再再再直白一點(diǎn):各個(gè)廠家在五花八門的硬件上隨意開發(fā),想怎么寫就怎么寫,怎么爽怎么來,導(dǎo)致開發(fā)一時(shí)爽,維護(hù)火葬場(chǎng),如果底層硬件換掉了,上面的代碼基本就要全部推倒重來,而且不同廠家之間的代碼移植性也幾乎沒有,各個(gè)廠家和工程師都很頭大,于是AUTOSAR應(yīng)運(yùn)而生。AUTOSAR將各個(gè)硬件的底層接口做了封裝,以后如果換硬件,只需要配置一下AUTOSAR,告訴它我換硬件了,趕緊給我適配就可以了,上層代碼完全不需要改動(dòng)就可以使用。從開發(fā)的角度來講,提高了代碼的復(fù)用性,降低了代碼的復(fù)雜度,提高了代碼的可維護(hù)性。
2、什么是網(wǎng)絡(luò)管理?
網(wǎng)絡(luò)管理的目的是使網(wǎng)絡(luò)中的ECU節(jié)點(diǎn)有序的睡眠和喚醒。在沒有通信需求的時(shí)候睡眠,在需要通信的時(shí)候喚醒,可以節(jié)約汽車電池的電量。
3、什么是CAN總線?
這個(gè)CSDN和知乎都有很多的介紹,這里就不贅述了。
4、CAN總線的AUTOSAR網(wǎng)絡(luò)管理報(bào)文(以下簡(jiǎn)稱NM報(bào)文)長(zhǎng)啥樣?
首先要明確一點(diǎn),NM報(bào)文就是CAN報(bào)文。NM報(bào)文符合CAN報(bào)文的格式,由幀起始、仲裁場(chǎng)、控制場(chǎng)、數(shù)據(jù)場(chǎng)、CRC場(chǎng)、應(yīng)答場(chǎng)、幀結(jié)尾組成。
一般廠家在設(shè)計(jì)的時(shí)候會(huì)規(guī)定好NM報(bào)文的ID范圍。
舉個(gè)例子:規(guī)定標(biāo)識(shí)符在0x500到0x5FF范圍為NM報(bào)文。當(dāng)在CANoe中抓取到此ID范圍內(nèi)的報(bào)文,那就是NM報(bào)文。
此報(bào)文ID=0x502,那么它就是一幀NM報(bào)文
NM報(bào)文數(shù)據(jù)場(chǎng)
NM報(bào)文的重點(diǎn)在于數(shù)據(jù)場(chǎng)8字節(jié)里的內(nèi)容:
NM報(bào)文數(shù)據(jù)場(chǎng)內(nèi)容格式
Byte0:這里填的是ECU的地址,或者叫ECU的ID;
此報(bào)文的ID=一個(gè)基礎(chǔ)值+ECU的ID,例如廠家規(guī)定基礎(chǔ)值為0x500,那么此報(bào)文的ID=0x500+0x8=0x508;
這里要注意區(qū)分報(bào)文的ID和ECU ID的概念,很容易混淆;
Byte1:
NM報(bào)文數(shù)據(jù)場(chǎng)byte1格式
這里關(guān)注下bit0和bit4:
bit0:當(dāng)此位置1時(shí)強(qiáng)制進(jìn)入RMS(下面會(huì)講到);
bit4:告訴其他節(jié)點(diǎn)自身是怎么被喚醒的。
置0:被動(dòng)喚醒、遠(yuǎn)程喚醒,比如被其他節(jié)點(diǎn)發(fā)送的NM報(bào)文喚醒;
置1:主動(dòng)喚醒、本地喚醒,比如給ECU上電;
byte2-byte7里的user data數(shù)據(jù)由用戶自行定義。
5、CAN NM狀態(tài)介紹
AUTOSAR網(wǎng)絡(luò)管理有三種狀態(tài):
睡眠模式(Bus-Sleep Mode):當(dāng)節(jié)點(diǎn)沒有本地網(wǎng)絡(luò)喚醒以及遠(yuǎn)程喚醒請(qǐng)求時(shí),ECU通訊控制器切換至睡眠模式,ECU功耗降低至適當(dāng)水平;此模式下,NM報(bào)文只收不發(fā),APP報(bào)文不收不發(fā),當(dāng)出現(xiàn)有效喚醒源時(shí)必須要被喚醒;
預(yù)睡眠模式(Prepare Bus-Sleep Mode):這個(gè)狀態(tài)是為了等待總線上的所有節(jié)點(diǎn)能夠在進(jìn)入Bus-Sleep Mode之前有時(shí)間停止節(jié)點(diǎn)的active狀態(tài)(如清空隊(duì)列中為發(fā)送的報(bào)文);此模式下,NM報(bào)文只收不發(fā),APP報(bào)文不收不發(fā),如果緩沖區(qū)有APP報(bào)文那可以繼續(xù)發(fā)完;
網(wǎng)絡(luò)模式(Network Mode):
包含3個(gè)子狀態(tài):
重復(fù)報(bào)文狀態(tài)(Repeat Message State):NM報(bào)文可收可發(fā),APP報(bào)文可收可發(fā);
正常工作狀態(tài)(Normal Operation State):NM報(bào)文可收可發(fā),APP報(bào)文可收可發(fā);
準(zhǔn)備睡眠狀態(tài)(Ready Sleep State):NM報(bào)文只收不發(fā),APP報(bào)文可收可發(fā);
總結(jié)見下圖:
6、定時(shí)器及參數(shù)介紹
第5小節(jié)和第6小節(jié)的內(nèi)容看一遍可能理解不了,學(xué)完下面的狀態(tài)遷移圖,再回過來多看幾遍就能理解了。
7、狀態(tài)機(jī)
現(xiàn)在終于來到AUTOSAR網(wǎng)絡(luò)管理的最難理解也是最容易使人禿頭的狀態(tài)機(jī)了,這里我不打算把每一條狀態(tài)轉(zhuǎn)換的文字描述直接貼上來,跟著我的思路,我們來一個(gè)一個(gè)看吧。
在開始之前,先了解一下各種縮略語:
BSM-睡眠模式 NM-網(wǎng)絡(luò)模式 PBM-預(yù)睡眠模式
RMS-重復(fù)報(bào)文模式 NOS-正常操作狀態(tài) RSS-準(zhǔn)備睡眠模式
01:給ECU上電,ECU自己就會(huì)初始化進(jìn)入睡眠模式。如果沒有喚醒源來喚醒此節(jié)點(diǎn),那就會(huì)一直待在睡眠模式。
02+03:當(dāng)出現(xiàn)本地喚醒(03)或者遠(yuǎn)程喚醒(02)時(shí),進(jìn)入RMS狀態(tài)。這里再解釋下,本地喚醒就是我自己想要主動(dòng)和其他節(jié)點(diǎn)通信;遠(yuǎn)程喚醒是其他節(jié)點(diǎn)想要和我通信。
04:我們現(xiàn)在已經(jīng)走到網(wǎng)絡(luò)模式的重復(fù)報(bào)文子狀態(tài)了。話說為什么叫重復(fù)報(bào)文子狀態(tài)呢,因?yàn)樵谶@個(gè)狀態(tài)里的時(shí)候,ECU需要一直發(fā)送周期報(bào)文,來告訴別人:我在線,性感ECU在線陪聊,你再不來找我我就要開始想念你......
如果是走03(本地喚醒)進(jìn)來的,那么需要先在NM Immediate Transmit State中以很快的周期發(fā)送N幀報(bào)文(例:以20ms的周期連續(xù)發(fā)送5幀報(bào)文),發(fā)完這N幀報(bào)文再進(jìn)入到NM Normal Transmit State中以正常的周期發(fā)送報(bào)文(例:500ms為周期發(fā)送報(bào)文。這個(gè)在上面的表格里有定義)。如果是直接走02進(jìn)來的,那么直接以正常周期發(fā)送NM報(bào)文就可以了。一直發(fā)到T_repeat_message定時(shí)器超時(shí)。
這一步的目的是如果是本地喚醒的話,可能此ECU下面還有很多從屬節(jié)點(diǎn),當(dāng)此ECU喚醒之后,需要同時(shí)喚醒其他兄弟節(jié)點(diǎn)一起通信,所以最開始的N幀報(bào)文周期很短,目的是為了快速、低延遲地喚醒其他節(jié)點(diǎn)。為什么被遠(yuǎn)程喚醒就不需要這一步呢?歡迎大家在評(píng)論區(qū)里一起討論~
06+12:且慢,我們先來計(jì)算一下從BSM到這一步花費(fèi)了多少時(shí)間了。參考上面定時(shí)器的定義,在02或03中,最大喚醒時(shí)間為T_wake_up=200ms;在04中,T_repeat_message=1600ms。總計(jì)1800ms,差不多為2s的時(shí)間,此時(shí)ECU有可能已經(jīng)不需要通信了(2019-11-29補(bǔ)充:ECU持續(xù)處于喚醒狀態(tài)的條件是有持續(xù)的喚醒源,例如一直有NM報(bào)文遠(yuǎn)程喚醒、或一直有本地喚醒源例如上電)。如果還需要繼續(xù)通信,走06,進(jìn)入NOS,繼續(xù)周期發(fā)送NM報(bào)文,可以收發(fā)APP報(bào)文,當(dāng)不再需要通信了,就停止發(fā)送NM報(bào)文,等待T_NM_timeout超時(shí)之后走09;如果直接不需要通信了,直接走12。
10:收到本地喚醒,進(jìn)入NOS。
11:收到NM報(bào)文的byte1字節(jié)的重復(fù)請(qǐng)求位如果置1,強(qiáng)制進(jìn)入RMS。
08+14+05:T_NM_timerout定時(shí)器超時(shí),不改變當(dāng)前狀態(tài)。定時(shí)器需要重置。
13:在RSS狀態(tài),NM報(bào)文不可以發(fā)送。等待T_NM_TIMEOUT定時(shí)器超時(shí)后進(jìn)入PBM。
15+16:PBM狀態(tài)只可以接收NM報(bào)文,其他報(bào)文不發(fā)不。收到遠(yuǎn)程喚醒,走15;收到本地喚醒,走16。
17:如果PBM狀態(tài)收不到任何喚醒源,在T_WAIT_BUS_SLEEP定時(shí)器超時(shí)后進(jìn)入BSM。
以上就是CAN總線AUTOSAR網(wǎng)絡(luò)管理的內(nèi)容分享。
來源:汽車自動(dòng)駕駛技術(shù)
審核編輯:湯梓紅
-
CAN總線
+關(guān)注
關(guān)注
145文章
1963瀏覽量
131457 -
汽車電子
+關(guān)注
關(guān)注
3031文章
8076瀏覽量
168355 -
網(wǎng)絡(luò)管理
+關(guān)注
關(guān)注
0文章
123瀏覽量
27835 -
AUTOSAR
+關(guān)注
關(guān)注
10文章
365瀏覽量
21958 -
ecu
+關(guān)注
關(guān)注
14文章
895瀏覽量
55016
原文標(biāo)題:一文搞懂CAN總線的AUTOSAR網(wǎng)絡(luò)管理
文章出處:【微信號(hào):談思實(shí)驗(yàn)室,微信公眾號(hào):談思實(shí)驗(yàn)室】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
AUTOSAR CAN網(wǎng)絡(luò)管理
AUTOSAR CAN網(wǎng)絡(luò)管理狀態(tài)機(jī)介紹
CAN總線報(bào)文記錄產(chǎn)品簡(jiǎn)介
AUTOSAR信息安全框架和關(guān)鍵技術(shù)相關(guān)資料介紹
《振南電子STM32視頻教程》第十三講:CAN總線
CAN總線協(xié)議教程|CAN報(bào)文分析
AUTOSAR_SWS_CAN網(wǎng)絡(luò)管理規(guī)范標(biāo)準(zhǔn)4.3.1
CAN網(wǎng)絡(luò)管理規(guī)范 AUTOSAR CP中文版
CAN網(wǎng)絡(luò)管理規(guī)范 AUTOSAR CP英文版
AUTOSAR CAN網(wǎng)絡(luò)管理協(xié)議
CAN總線報(bào)文記錄產(chǎn)品簡(jiǎn)介

AUTOSAR CAN網(wǎng)絡(luò)管理報(bào)文的數(shù)據(jù)場(chǎng)格式
AutoSAR中CAN通信網(wǎng)絡(luò)管理的概述

一文解析AUTOSAR CAN網(wǎng)絡(luò)管理

評(píng)論