1. 程式人生 > >基於CAN的網路管理

基於CAN的網路管理

基於CAN的網路管理(network management) - 張丁的文章 - 知乎
https://zhuanlan.zhihu.com/p/[email protected]TOC
車載網路匯流排管理的目的是使網路中的ECU節點有序地睡眠和喚醒,在沒有通訊需求的時候睡眠,可以節約電池的能量。

CAN總線上的網路管理,是一種無中心式的網路管理,網路中的每個節點都依賴於自己和別人的網路管理報文(NM PDU)來實現通訊的睡眠和喚醒,這個NM PDU是週期性傳送的,對於每個ECU來說,收到別的ECU傳送的NM PDU則意味著當前的網路有通訊需求,自己發出NM PDU則是告知別的ECU自己有通訊需求。如果某個ECU打算進入Bus-Sleep-Mode,它就會通止傳送NM PDU,在進入Bus-Sleep-Mode之前會有一段延時,如果在這段延時中沒有收到任何NM PDU,則它就會轉入Bus-Sleep-Mode狀態了。

AUTOSAR中定義的網路管理PDU
上圖定義了NM PDU的格式,byte 0標識ECU的節點地址,byte 1是控制資訊。

CAN NM為ECU的網路管理定義了三種模式(Mode):

Bus-Sleep Mode
Prepare Bus-Sleep Mode
Network Mode
最後的Network Mode又分為三個狀態(state),

Repeat Message State
Normal Operation State
Ready Sleep State
CAN總線上的網路管理的核心,就是ECU在這3種模式和3個狀態之間的轉換的狀態機。

基於CAN的網路管理中ECU的NM狀態機
跟著狀態機走一遍,就會對這個過程有比較直觀的瞭解了。

ECU最初處於Bus-Sleep Mode中,當它有了通訊需求(比如接收其他ECU的NM報文,或者它的邏輯功能要求自己喚醒,比如車門控制器收到了遙控鑰匙的訊號),它就會進入Network Mode,Repeat Message狀態是Network Mode的入口狀態,到達這個狀態之後,ECU會啟動一個Repeat Message Timer,在這個Timer定義的時間內,ECU會一直處於Repeat Message狀態。當這個timer結束後,如果有通訊需求,ECU則進入Normal Operation狀態,如果沒有通訊需求,則進入Ready Sleep 狀態。Normal Operation狀態就是ECU正常執行的狀態,此時它的應用報文和NM報文都會正常收發。當ECU沒有通訊需求,它會瞬間進入Ready Sleep狀態,在Ready Sleep中,如果又出現了通訊需求,ECU則瞬間再回復到Normal Operation,如果在一個Timeout Timer中一直沒有通訊需求,ECU就進入Prepare Bus-Sleep Mode,在Prepare Bus-Sleep狀態中,也會啟動一個Timeout Timer,如果在這段時間內有了通訊需求,ECU又會立即回到Repeat Message狀態,如果過了這個timer還沒有通訊需求,則ECU會回到Bus-Sleep Mode中。

綜上所述,ECU網路管理的實現的核心就是實現這個狀態機,在AUTOSAR中,這些狀態之間的跳變就是由AUTOSAR定義的各種介面函式實現的。

釋出於 2018-09-24