目錄
一、直接網絡管理
1. OSEK NM
直接網絡管理將網絡上ECU節點形成一個邏輯整體,通過邏輯環進行網絡管理的同步。
1.1 邏輯環Logical Ring
網絡上所有節點通過單向傳輸形成邏輯環,通過A->B->C->A的報文傳輸關係,形成一個閉環。
1.2 新的節點如何加入邏輯環
直接網絡管理提供3種報文幀,用於邏輯環的管理。
- Alive Message 表示網絡上新的節點,即將加入邏輯環
- Ring Message 邏輯環傳輸報文
- Limp Message 表示網絡上故障的節點,即將退出邏輯環
1.3 節點狀態
對於其他監控節點:
- Node Present 收到Alive Message 或者Ring Message
- Node Absent 在TimeOut 時間內未收到Alive Message或者Ring Message
對於節點本身:
3. present or note mute 在線且不處於靜默狀態,發送Alive / Ring Message
4. absent or mute 離線或者靜默
1.4 地址管理
ECU節點的地址信息包含在NM PDU中,佔一個Byte。每個ECU節點的地址都是固定的。
OSEK NM採用基地址(BASE ID)+窗口機制(WindowsMask)。當一條消息滿足 ID&WINDOWS_MASK = ID_BASE,則表示這個消息是一個NM幀。
假設一個CAN網絡中存在4個ECU節點。地址分別分配爲1–4。假設基地址是0x700,那麼這四個ECU節點的地址分別爲0x701 0x702 0x703 0x704。總線上這個四個ID的任意報文都是NM幀。
1.5 NM狀態流轉
NM的狀態是分層級表述
狀態 | 描述 |
---|---|
NM Init | NM初始化 |
NM Awake | NM喚醒 |
NM BusSleep | NM 休眠 |
NM Ative | NM通訊啓用 |
NM Passive | NM 通信禁用 |
NM Reset | NM 復位 |
NM Normal | NM 正常運行 |
NM LimpHome | NM 節點故障 |
不同的狀態之間的流轉圖如下。
2. AUTOSAR NM
2.1 操作模式
AUTOSAR NM包含三種操作模式,分別表示節點在當前在網絡的狀態
- 網絡模式 Network Mode
- 預休眠模式 Prepare Bus-Sleep Mode
- 總線休眠模式 Bus-Sleep Mode
2.1.1 網絡模式
網絡模式包含三種狀態。
- 重複報文狀態(Repeat Message State)
- 普通操作狀態 (Normal Operation State)
- 準備休眠狀態 (Ready Sleep State)
Repeat Message State: 用於通知網絡上其他節點,該節點從Bus-Sleep Mode 或者 Prepare Bus-Sleep Mode 進入NetWork Mode.
Normal Operation State: 用於保證當節點請求網絡時網絡處於激活狀態
2.1.2 預休眠模式
預休眠模式是網絡模式到總線休眠模式的過渡狀態,進入預休眠模式時,總線上不在響應新的發送報文請求,僅僅將緩存區中的報文發送出去。對於進入預休眠模式的ECU節點來說,ComM會進入靜默模式Slient Communication。
同時,在預休眠模式下,不需要對Trcv進行動作。
2.1.3 總線休眠模式
Bus-Sleep Mode的目的是減少ECU節點的功耗,Trcv需要被切換到睡眠模式。在這個狀態下,不是代表ECU已經下電,NM的狀態實際上只能影響ComM的狀態,
2.2 網絡狀態
網絡狀態包括requested 和released兩個條件狀態,當Nm狀態處於requested時,表示ECU需要向總線請求通訊。反之,Nm狀態處於released。
當ECU已經處於released 時,但是還是在通訊時,說明總線上還有其他節點處於requested狀態。
2.3 時間參數
CanNm一共有四個重要的時間參數,關乎到各個狀態之間的流轉時間。
- CanNmTimeOutTime
- CanNmRepeatMessageTime
- CanNmWaitBusSleepTime
- CanNmRemoteSleepIndTime
2.4 NM PDU的組成
2.5 NM的狀態流轉
- 上電啓機時,默認狀態是Bus-Sleep Mode.通過調用接口CanNm_NetWorkRequest接口進入Network Mode。
- 開啓TimeOut Timer 和 Repeat Message Timer之後,通過接口Nm_NetworkMode進入Network Mode
- Repeat Message Timer溢出後,進入Normal Operation State
- 在Normal Operation State 通過接口 CanNm_NetworkRelease進入Ready Sleep State
- 在Ready Sleep State 時,當Nm-Timeout Timer溢出,Nm進入Prepare Bus-Sleep Mode
- 在Prepare Bus-Sleep Mode時,Wait Bus-Sleep Timer溢出時,Nm進入Bus-Sleep Mode,總線進入No Communication狀態
接口調用關係如下