最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

AUTOSAR CANNM相關(guān)的一些資料參考和淺談

2023-03-01 20:50 作者:lmshahaBili  | 我要投稿

分享一下AUTOSAR NM相關(guān)的一些知識。來源于網(wǎng)平時的筆記和CSDN等的技術(shù)資料參考。若有錯漏,歡迎指出。

先來看CANNM的狀態(tài)機是如何實現(xiàn)的。

參考資料:?來源CSDN

一、CANNM狀態(tài)機:

1、首先我們先看一下CanNM的狀態(tài)機及各個狀態(tài)下報文發(fā)送的情況(一個汽車的ECU在CANNM處于不同狀態(tài)時,對于CAN應(yīng)用報文和CANNM報文有著不同的發(fā)送要求。比如:在Bus-Sleep-Mode狀態(tài),應(yīng)用報文和網(wǎng)管報文都不往can總線上發(fā)送。在Read Sleep State狀態(tài),應(yīng)用報文要往can總線上發(fā)送,但CANNM報文不往can總線上發(fā))


2、CANNM各個狀態(tài)跳轉(zhuǎn)條件


理解CANNM狀態(tài)機的跳轉(zhuǎn),需要再理解一下ECU的休眠喚醒機制。在一輛汽車整車上,某個ECU的休眠喚醒定義一般是這樣的(比如ECU 1):

休眠:ECU1不向CAN總線外發(fā)出報文

喚醒:ECU1向CAN總線外發(fā)出報文

我在開發(fā)過程中,經(jīng)常遇到有同事認為休眠是指ECU沒電、喚醒是指ECU有電。雖然這樣理解很多情況下也沒有問題,但實際上對于整車來說,一個ECU醒沒醒,是通過CAN報文來看的,你向外發(fā)出CAN報文,就認為你醒著,你停發(fā)CAN報文,就認為你休眠了。如:當CANNM狀態(tài)處于Prepare Bus-Sleep Mode 的時候,是不發(fā)CANNM報文和應(yīng)用報文的,有些企業(yè)的需求認為此時ECU已處于休眠狀態(tài),當處于此狀態(tài)時有別的喚醒源喚醒ECU時,需要ECU認為此時更換了喚醒源,但ECU此時并未下電。

只不過正常情況下,為了減小功耗,只要ECU沒有外發(fā)CAN報文的需求就要立即下電,ECU有外發(fā)CAN報文的需求就要立即上電。)

好了,那么什么時候ECU要醒來,什么時候ECU要休眠呢?其實情況不多,就兩種:被動喚醒和、主動喚醒。而當被動喚醒和主動喚醒都釋放的時候,就需要休眠。被動喚醒和主動喚醒解釋如下:

①被動喚醒(自己沒有主動工作需求,是由于別的節(jié)點有主動工作需求,自己才被迫喚醒):ECU節(jié)點接收到其他節(jié)點的網(wǎng)管報文。

②主動喚醒(自己有主動工作需求,會通過網(wǎng)管報文喚醒別的節(jié)點):ECU節(jié)點有主動工作需求。如OBC節(jié)點檢測到充電的插槍動作。

接下來理解CANNM的狀態(tài)機就好理解了:

(當進入Repeat Message State、Normal Opearation State、Ready Sleep State時,都成CANNM處于Network Mode)

①Bus-Sleep Mode:

就是CANNM狀態(tài)機處于睡眠狀態(tài)。CANNM狀態(tài)機處于這個狀態(tài)一般有兩個情況:

一:ECU被喚醒剛上電初始化,程序還沒跑到處理網(wǎng)管狀態(tài)跳轉(zhuǎn)的時候(無論是主動喚醒還是被動喚醒)

二:是ECU準備進入休眠的時候,即程序跑到即將下電前。

Repeat Message State

從上面的狀態(tài)機可以看出,ECU被喚醒后,必須先經(jīng)過Repeat Message State。//實測發(fā)現(xiàn)其實只要超過一定時間(足以進入SLEEP后),重新再激活時,必然會進入repeat狀態(tài);但是如果再未退出Network大狀態(tài)時,即readysleep下一直在外發(fā)APP報文時接收到NM,則只會內(nèi)部重置Tout計時器,并不會重新進入RMS

Repeat Message是指重復發(fā)送CANNM報文,那么為什么在這各狀態(tài)下要重復發(fā)NM報文呢?正如前面所說,ECU有主動喚醒和被動喚醒。如ECU1:

當ECU1有主動喚醒需求時,ECU1是第一個醒來的,它需要整車其他節(jié)點快速起來配合工作。因此,ECU1需要重復快發(fā)CANNM報文,使得其他ECU節(jié)點快速喚醒。

當ECU1有被動喚醒需求時,ECU1被總線其他節(jié)點的NM報文喚醒后,ECU1在該狀態(tài)下需要發(fā)送幾幀CANNM報文,作用就類似于告訴別人:我起來啦!

可以看出主動喚醒和被動喚醒時,Repeat Message State發(fā)出的CANNM報文的作用是不一樣的。因此在該狀態(tài)下,主動喚醒和被動喚醒發(fā)出的NM報文的周期也不一樣。一般來說,主動喚醒需要向外快發(fā)NM報文,如20ms一幀,連續(xù)快發(fā)5幀(如20ms一幀),連續(xù)快發(fā)5幀。被動喚醒則按正常周期發(fā)送NM報文(如500ms一幀。這里的正常是指發(fā)出的NM報文周期與CANNM處于Normal狀態(tài)時發(fā)出的NM周期一致)。

? ? ? ?一般來說,Repeat Message State狀態(tài)的停留時間較短,如某車企需求為1.5s,1.5s過后,就要跳到Normal Opearation State或Ready Sleep State。


注意:“主動請求”,當ECU處于休眠狀態(tài)可被主動請求喚醒,當ECU已經(jīng)處于喚醒的狀態(tài)時,也是時刻在檢測主動請求的。

/*所謂主動請求就是主動開網(wǎng)full comm,應(yīng)該此時對應(yīng)的COMM也是FULL COM,最高級狀態(tài)。而被動喚醒對應(yīng)的是低一級的COM READY SLEEP。APP報文方面它們都是一樣的,但是NM狀態(tài)并不一樣。*/

Normal Opearation State:?

????????進入Normal Opearation State:

1、從Repeat Message State跳轉(zhuǎn)至Normal Opearation State條件:

①當ECU主動喚醒且當Repeat Message State的時間參數(shù)滿足后,主動請求還未釋放時,狀態(tài)跳轉(zhuǎn)至Normal Opearation State

或②當ECU被動喚醒且在Repeat Message State檢測到主動請求,則當Repeat Message State的時間參數(shù)滿足后,狀態(tài)跳轉(zhuǎn)至Normal Opearation State

2、從Ready Sleep State跳轉(zhuǎn)至Normal Opearation State條件:

①處于Ready Sleep State時檢測到主動請求,狀態(tài)跳轉(zhuǎn)至Normal Opearation State

所謂Normal Opearation State,即正常工作模式,從上面所說的跳轉(zhuǎn)條件可以看出,即只有存在主動請求時,才會跳轉(zhuǎn)到Normal狀態(tài)。而處于該狀態(tài)時會持續(xù)發(fā)出NM報文,至于原因也很好理解,如上篇文章所說的同起同睡機制:當ECU有主動請求一直喚醒時,必須要使其他的ECU節(jié)點也保持喚醒,因此有主動請求的ECU必須持續(xù)發(fā)出CANNM報文喚醒使得其他節(jié)點不睡下去。

? 退出Normal Opearation State:


1、從Normal Opearation State跳轉(zhuǎn)至Repeat Message State條件:

根據(jù)Autosar的CAN網(wǎng)絡(luò)管理標準,當CANNM處于Normal Opearation State或Ready Sleep State時接收到總線上CANNM報文的Byte1的Bit0置1時,需要把狀態(tài)跳轉(zhuǎn)至Repeat Message State。這個功能的作用實際上是用來檢測總線上還有哪些ECU節(jié)點在線,因為如前面所說,處于Repeat Message State時需要發(fā)出CANNM報文。

2、從Normal Opearation State跳轉(zhuǎn)至Ready Sleep State條件:釋放主動請求。

④Ready Sleep State:

當處于Ready Sleep State時,即準備休眠狀態(tài),從字面意思也能理解,本ECU此時肯定沒有主動喚醒請求,因此不向外發(fā)出CANNM報文。但若此時別的ECU有主動喚醒請求(總線持續(xù)存在其他ECU的CANNM報文),由于同起同睡機制,我們此時不能進入休眠狀態(tài),必須保持喚醒,并向外發(fā)出應(yīng)用報文,持續(xù)停留在Ready Sleep State狀態(tài)。

在該狀態(tài),有個時間參數(shù)為NM-Timeout Timer(如NM-Timeout Timer = 2000ms),當接收到NM報文時,程序會將該計數(shù)器清0,若但該時間參數(shù)到達時仍未接收到CANNM報文,則認為總線上所有ECU都已經(jīng)沒有主動請求,所有ECU需要進入休眠狀態(tài)。(另外需要注意的是,該時間參數(shù)只要CANNM進入Network Mode就會開始計時,接收或發(fā)送一幀CANNM報文時該時間參數(shù)就會清0)

進入Ready Sleep State:

1、從Repeat Message State跳轉(zhuǎn)至Ready Sleep State條件:

當ECU是被動喚醒且Repeat Message State的時間參數(shù)已到達后,CANNM狀態(tài)從Repeat Message State跳轉(zhuǎn)至Ready Sleep State。

2、從Normal Opearation State跳轉(zhuǎn)至Ready Sleep State條件:

本ECU釋放主動請求。

退出Ready Sleep State:

1、從Ready Sleep State跳轉(zhuǎn)至Repeat Message State條件:

(跳轉(zhuǎn)條件與Normal Operation State跳到Repeat Message State一樣)根據(jù)Autosar的CAN網(wǎng)絡(luò)管理標準,當CANNM處于Normal Opearation State或Ready Sleep State時接收到總線上CANNM報文的Byte1的Bit0置1時,需要把狀態(tài)跳轉(zhuǎn)至Repeat Message State。這個功能的作用實際上是用來檢測總線上還有哪些ECU節(jié)點在線,因為如前面所說,處于Repeat Message State時需要發(fā)出CANNM報文。

2、從Ready Sleep State跳轉(zhuǎn)至Normal Operation State條件:

檢測到主動請求

3、從Ready Sleep State跳轉(zhuǎn)至Prepare Bus-Sleep Mode條件:

未接收到網(wǎng)管報文時間超過NM-Timeout Timer時間。此時認為總線上所有ECU都已經(jīng)沒有主動請求,所有ECU需要進入休眠狀態(tài)

⑤Prepare Bus-Sleep Mode:

即預休眠狀態(tài),在該狀態(tài)下ECU停發(fā)應(yīng)用報文和網(wǎng)管報文。此時的時間參數(shù)為Wait BusSleep Timer(如Wait BusSleep Timer = 5000ms),當該時間參數(shù)到達后,則CANNM進入休眠狀態(tài)。

進入Normal Opearation State條件:

?見上面------“從Ready Sleep State跳轉(zhuǎn)至Prepare Bus-Sleep Mode條件”

????????退出Normal Opearation State條件://這里應(yīng)該是Prepare BUSSLEEP,網(wǎng)上資料有誤


1、從Prepare Bus-Sleep Mode跳轉(zhuǎn)至Repeat Message State條件:

檢測到喚醒源,主動喚醒或被動喚醒

2、從Prepare Bus-Sleep Mode跳轉(zhuǎn)至Bus-Sleep Mode條件:

Wait BusSleep Timer已到達(在該過程中未檢測到喚醒源)。


//實際設(shè)計ECU底層軟件時,需要注意NMvarient以及NODE的節(jié)點類型。

需要注意的是,COMM的狀態(tài)機是一個“Highest”狀態(tài),當User申請FULL時,假如Varient == passive,那么依然無法主動進入FULL。當為Light類型時,其FULL->Readysleep的切換過程由固定Timer決定,這些小細節(jié)在設(shè)計底層基礎(chǔ)軟件架構(gòu)的時候需要注意鑒別。



AUTOSAR CANNM相關(guān)的一些資料參考和淺談的評論 (共 條)

分享到微博請遵守國家法律
桂林市| 游戏| 云林县| 临邑县| 余庆县| 巨鹿县| 泰兴市| 仙桃市| 冀州市| 伊吾县| 广昌县| 长岭县| 太谷县| 华容县| 印江| 吉水县| 绍兴县| 兴安盟| 黄骅市| 平罗县| 江源县| 天门市| 临夏市| 绥芬河市| 通州区| 阳江市| 离岛区| 塘沽区| 南陵县| 大兴区| 遂平县| 聂拉木县| 西贡区| 阿坝县| 洛隆县| 汉寿县| 南溪县| 溆浦县| 茶陵县| 葫芦岛市| 丹巴县|