目录
- 一、直接网络管理
- 1. OSEK NM
- 1.1 逻辑环Logical Ring
- 1.2 新的节点如何加入逻辑环
- 1.3 节点状态
- 1.4 地址管理
- 1.5 NM状态流转
- 2. AUTOSAR NM
- 2.1 操作模式
- 2.1.1 网络模式
- 2.1.2 预休眠模式
- 2.1.3 总线休眠模式
- 2.2 网络状态
- 2.3 时间参数
- 2.4 NM PDU的组成
- 2.5 NM的状态流转
一、直接网络管理
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状态
接口调用关系如下