關於Autosar中的NM模塊的理解


本篇文章主要介紹AutoSar中關於NM模塊的理解。

閱讀本篇文章希望達到的目的:

1. NM(網絡管理)是用來做什么的;

2. AutoSar中網絡管理的原理;

3.項目實例介紹

 

1. NM(網絡管理)是用來做什么的;
大家知道,不管是傳統的燃油車還是新能源車,車上都有各種各樣的ECU,而所有這些ECU都是需要用電的,而車上的供電單元一般是蓄電池,因此蓄電池的電量是有限的,對於新能源車來說太耗電無疑會給電池的續航里程帶來巨大影響,因此為了盡可能的省電,所以就提出了網絡管理,也就是說網絡管理一個最重要的作用就是為了省電。
那么網絡管理是如何來實現省電的呢?我們知道車上的所有ECU之間會通過CAN通信、Flexray或以太網等進行相互通信連接在一起,那么網絡管理就是通過在各個ECU的網絡上,發送一些命令制定一套規則,來實現各個ECU的協同睡眠和喚醒。
什么是ECU的睡眠和喚醒?為了支持睡眠和喚醒,ECU的芯片必須支持低功耗模式和正常工作模式的切換。低功耗模式(ECU睡眠)指一個ECU斷電或者處於極少數的外圍器件工作的模式;喚醒指的是ECU處於全工作模式。
舉個例子來說,也許你看過特斯拉的車門,它的門把手是和門平齊的,只有你帶着車鑰匙靠近時,它的門把手才會張開,其實這就是在喚醒了車門控制器,也就是說你把車停在那里時,實際上車門控制器是在睡眠狀態,耗電量極地,而你帶着車鑰匙靠近了,表示你要用車了,他就會通過無線感應模塊來喚醒車門,這樣你就可以正常打開車門了,這個時候車門控制器ECU就處於喚醒狀態。
總結下:其實網絡管理就是用來節約能源,有效的實現車上的ECU的協同睡眠和喚醒。

2. AutoSar中網絡管理的原理;
以下,我會以用的比較多的CAN網絡管理為例來進行說明,我會主要圍繞其中最重要的一個狀態機來進行介紹。
首先我們講一講,為了實現網絡管理,我們要考慮些什么因素,也就是有哪些需求。
網絡管理最終要實現的是車上的ECU能夠協同睡眠以及喚醒,也就是說網絡管理最重要的一點是要保證車上的ECU能夠協同喚醒和休眠。那么假如車上的ECU都處於睡眠模式,網絡上都沒有報文,你咋實現喚醒呢,其實,一般不會讓所有的ECU都處於睡眠模式,這個時候可能會有極少的ECU處於工作狀態,比如車上的BCM。也就是說有一些ECU是通過KL15直接喚醒的,而有些是通過CAN報文喚醒。當然或許后面會升級到更加節能的模塊,可以不需要鑰匙信號,這些模塊在睡眠狀態時,耗能非常少,因此可以一直處於可喚醒狀態。
為了滿足這種協同喚醒和睡眠,我們下面來看看Autosar中的NM是如何實現協同的。
如圖所示,狀態機中有三個主狀態,分別是BusSleep、PreSleep、Network三個狀態;其中Network狀態又分為三個子狀態,分別是RepeatMsg、NormalOperate、ReadSleep。下面我來講一下每個狀態它的作用。
BusSpleep狀態:這個狀態就是我們所說的休眠狀態,這個狀態下是不發送網絡管理報文也不收發應用報文,一般該狀態時一個低功耗的狀態,也就是我們上文提到的協同睡眠狀態。當然我們上電初始化時,也會默認進入該狀態。
PreSleep狀態:這個狀態是進入休眠狀態的前一准備狀態,這個狀態一般不發送網絡管理報文幀了,也不發送應用報文了,只是等待其他ECU一起睡眠,為啥要這個狀態呢,其實就是實現‘’協同‘’兩個字,也就是讓等一段時間讓車上所有ECU實現一起睡眠,其實這個一起睡眠還是比較重要的,比如車上某個ECU的工作與其他ECU的工作是關聯的,比如VCU(整車控制器)和INV(電機控制器),有可能VCU不發報文了,會導致INV報故障,因此這種情況是要避免的。
Network狀態:這個狀態是允許ECU進行正常通信的,一般這個狀態下即可以收發網絡管理報文幀也可以收發應用報文(包括診斷報文),意思就是喚醒狀態。接下來我來解釋一下這個狀態下里面的三個子狀態的含義:
Repeat meassage:表示重復發網絡管理報文的狀態。首先說說這個狀態下會發生什么事,一般我們進入網絡(Network)狀態時,首先會進入這個狀態,這個狀態下會快速的發送一些網絡管理報文幀出來,為啥要快速發送一些網絡管理報文呢?其實就是想盡快的告訴車上的其他ECU,我上線了!我要正常通信了,大家請注意啊,大家也和我一塊進行整車通信啊。就是以上這個意思。
Normal Operation:在進入RepeatMsg一段一時間后,如果需要通信,就會跳到正常工作狀態,正常工作狀態會按照正常的周期發送網絡管理報文,以及所有應用報文正常進行通信,可以說這個狀態就是真正的喚醒狀態。
ReadySleep:如果喚醒后,需要休眠,那么我們可能需要做一些准備工作才能允許我們的ECU進入休眠,比如這個時候有一些數據要存儲、比如電機控制器檢測到電機還沒停下來等等情況,因此這個狀態就是用來做一些休眠前的准備工作,我們可以看到,任何從喚醒到休眠的過程,都需要經過這個狀態,也就是說睡眠前有些准備工作是必須要完成的。那么這個狀態下,其實還是能夠進行通信的,只有進入PreSleep狀態,才會把相應的應用報文收發關閉,以及發送NM報文關閉。還有一點要聲明的是,一般網絡管理報文幀的接收不會關閉。
其實,網絡管理中,各個狀態的切換條件是比較重要的,有興趣的可以看着圖進行鑽研一下。

3.項目實例簡要介紹
以下我大概談一下,我做的國內還算比較規范的網絡管理的項目。
客戶的需求是一個標准的AutoSar架構的網絡管理。
在休眠狀態,我們的ECU只有CAN收發器處於工作狀態,也就是說能檢測NM報文,當然這個是通過芯片來實現的。
我們的ECU連接上了KL15信號,那么我們的ECU支持KL15喚醒以及NM報文喚醒,也就是有效喚醒源是這兩種。
下面我以NM報文喚醒為例,大概說一下喚醒的過程。
在睡眠狀態,車上網絡狀態是沒有報文的,一旦車上BCM檢測到要使用網絡時,就是第一時間發出網絡管理報文出來,這個時候我們的ECU也會收到該網絡管理報文,因此會喚醒我們的ECU,首先我們的ECU的收發器收到NM報文后,告訴芯片要喚醒了,這個時候就會給控制器供電,然后程序就會初始化,進入BusSleep狀態,接着會進入RepeatMsg模式,這個時候會迅速發出第一幀NM報文,會快速發出5幀NM報文(如周期10ms),讓其他節點知道我們的ECU醒來了,然后會切換到正常周期的NM報文,如50ms,當然這個時候,系統也在初始化,應用報文也會到一定周期能夠正常收發。處於RepeatMsg狀態一定時間后,會切換到NormalOpr模式,這個時候就會正常通信了。這個模式下NM報文是以一定周期發送的如500ms,告訴所有節點我在正常通信。其實NM報文里面是有一些信息的,比如喚醒原因,用戶數據等等,這些都可以去定義。
下面講一下NM休眠的過程:
處於NormalOpr狀態下,如果ECU不需要網絡了,比如KL15斷開,ECU這個時候就會選擇釋放網絡,釋放網絡就是從Normal狀態切換到ReadySleep狀態,這個時候會進行一些故障存儲、下電前的裝備工作,完成后,等待一定時間就會進入到PreSleep狀態,這個狀態將會把應用報文和TX網絡管理報文也關閉,等待一定時間就會進入BusSleep狀態,進入BusSleep后,會讓控制器進入休眠。

NM網絡管理,雖然狀態機比較簡單,但是其中最大的難題在於具體實施過程中一些細節的把握,同時在理解客戶的需求上,需要下大力氣去鑽研,因為這個東西涉及到整個車上網絡的一個協作。
我大概講以上這些內容,希望路過的你不虛此行,當然有興趣的也可以發我郵箱進行交流 1370334525@qq.com
---------------------
作者:AgingMoon
來源:CSDN
原文:https://blog.csdn.net/AgingMoon/article/details/77826995
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM