网络管理的定义和类型
有两种常见的网络管理类型:OSEK网络管理和AUTOSAR网络管理。Osek网络管理具体又分为直接网络管理和间接网络管理。Autosar网络管理只有直接网络管理。
直接网络管理:简单来说就是通过网管报文实现网络管理
间接网络管理:简单来说就是通过应用报文实现网络管理(间接网络管理没有网管报文)
OSEK网络管理可以参考万字长文。详细讲解OSEK直接网络管理,并对比Autosar网管。 - 知乎
由于AUTOSAR网络管理目前是主流,本文主要对此进行描述。AUTOSAR CAN 网络管理是一种独立于硬件的协议,只能在 CAN 上使用。 其主要目的是协调网络的正常工作和总线休眠模式之间的过渡。除了以上核心功能之外,还提供了可配置的功能,例如,实施一项服务以检测所有现有节点,或者检测所有其他节点是否已准备好休眠。
AUTOSAR网络管理基于分布式策略,每个节点根据发送或收到的网络管理报文实施网络行为。这句话结合后面状态机切换可以有更好的理解。
网络管理相关概念
在开始下面的内容之前,我们先来了解几个概念。
ECU唤醒类型
这里将ECU唤醒分为以下三类:
1.Ignition wake up 点火唤醒,例如KL15
- ECU通过点火电压被唤醒
- KL30电源连接(支持低功耗(low power) 模式)
- 通过点火钥匙连接电源
2.Bus wake up 总线唤醒
- ECU通过总线活动被唤醒
- KL30电源连接且ECU处于低功耗(low power) 模式
- 收发器通过KL30供电
标准总线唤醒
- 通过任何报文使从低功耗模式(low power mode)到功耗模式(power mode)
- CAN收发器支持标准唤醒
例如,TJA1043在本地唤醒和总线唤醒时通过INH调整电压,数据参数见:
选择性总线唤醒
- 通过网络管理报文使从低功耗模式(low power mode)到功耗模式(power mode)
- CAN收发器支持选择性唤醒配置(通过SPI)
例如,TJA1145在以下情况下调整电压:1.本地唤醒 2.标准唤醒模式 3.选择性唤醒 4.局部网络数据选择性唤醒,数据参数见:
3.Local wake up 本地唤醒,例如传感器状态信号作为唤醒信号
- ECU通过本地传感器状态被唤醒
- KL30电源连接且ECU处于低电源(low power) 模式
- 传感器通过KL30供电
网络管理节点的类型
主动节点(Active node)
- 通过点火或者传感器唤醒
- 有主节点ECU网络请求
- 被主节点释放网络
- 通过发送节点特定的网络管理报文保持网络唤醒
- 网络管理停留在Ready Sleep,直到所有节点释放网络
- 节点对网络保持唤醒有控制权
- 可以通过发送网络管理报文唤醒网络
被动节点(Passive node)
- 被网络管理报文或/和局部网络数据唤醒
- 通过唤醒事件(CAN wake-up)在被动节点开始网络管理
- 网络管理停留在Ready Sleep,直到所有节点释放网络
- 节点不发送网络管理报文
- 节点对网络保持唤醒没有控制权
局部网络管理(Partial Network Management)
局部网络管理根据不同的功能在整个网络内划分出多个虚拟的局部网络(cluster),一个节点可以同时属于多个局部网络。
各局部网络响应专用的唤醒帧 (wake-up frame, WUF),可以在一个功能激活的时候,仅使该组内的节点被唤醒并进行通信,而其他的节点仍然可以保持睡眠状态。从而实现在各局部网络间单独的休眠唤醒功能,互不影响。例如车主在车辆下电休眠后通过PEPS解锁车辆,此时仅需PEPS唤醒BCM即可,其它节点仍可保持休眠状态。
网络管理状态机
上面是AUTOSAR原文里的状态机,将状态跳转的条件和API的服务结合在一起,看起来非常复杂难懂。找到一篇拆解的比较好的文章,珠玉在前,这里就不再重复写了,推荐给大家:
我用一晚上时间给女朋友讲懂CAN总线的AUTOSAR网络管理 - 知乎 (zhihu.com)
文章里面有些比较好的总结摘出来方便查阅:
网络管理模式状态下报文的收发情况
定时器和参数
BSM-睡眠模式;NM-网络模式;PBM-预睡眠模式;RMS-重复报文模式;NOS-正常操作状态;RSS-准备睡眠模式
网络管理报文的格式
这里有几点需要注意:
1.Byte0:Source NODE_ID,每一个 ECU 都会被分配一个唯一的NODE_ID ,来告知接收节点该 NM PDU 是由哪个节点发出的。
网络管理报文ID=基础地址ID+Source NODE_ID,例如厂家规定基础地址ID为0x500,那么此网络管理报文ID=0x500+0x8=0x508;
注意网络管理报文ID≠NODE_ ID!!!
2.Byte1:控制比特向量
Byte1 | Name | Value |
bit 0 | Repeat Message Request | 0:不请求重复发送状态 1:请求重复发送状态 |
bit 1 | PN Shutdown Request Bit | 0:网络管理报文中不包含同步局部网络管理休眠请求; 1:网络管理报文中包含同步局部网络管理休眠请求 |
bit 2 | Reserved | 0 |
bit 3 | NM Coordinator Sleep Ready Bit | 0:主协调NM节点未请求开始同步休眠; 1:主协调NM节点请求开始同步休眠; |
bit 4 | Active Wakeup Bit | 0 :节点不唤醒网络(被动唤醒) 1 :节点唤醒网络(主动唤醒) |
bit 5 | Partial Network Learning Bit | 0:没有请求局部网络学习; 1:表示请求局部网络学习。 |
bit 6 | Partial Network Information Bit | 0 :网络管理 PDU 不包含局部网络管理请求信息 1 :网络管理 PDU 包含局部网络管理请求信息 |
bit 7 | Reserved | 0 |
3. byte2-byte7里的user data数据由用户自行定义, 主要用于局部网络管理和自定义功能参数。