【车载开发系列】CAN网络管理功能扩展篇
【车载开发系列】CAN网络管理功能扩展篇
- 【车载开发系列】CAN网络管理功能扩展篇
- 一. 什么是PN功能
- 二. 为什么要PN功能
- 三. AutoSar配置
- 四. PN功能的应用举例
- 五. CAN网络报文定义
- 1)Active WakeUp Bit
- 2)Repeat Message Request Bit
- 六. 网络管理状态于消息报文发送
- 七. 网络管理参数定义
一. 什么是PN功能
PN即Partial Networking,意指部分网络或局部网络。PN允许在不需要那么多ECU工作的时候,关闭一批ECU的网络通信。其他ECU可以继续在同一总线通道(比如动力CAN)上通信。在网络中可以将ECU分成若干个小组(包含的ECU处于相同或不同的通道上),每个ECU组成一个PNC(Partial Network Cluster),也就是部分网络集群,PNC小组成员的特点是,同睡同醒。
总结起来PN (Partial Network)就是“局部网络”,通过一些规则将车辆网络进一步划分为不同的“局域网”,通过PN网络管理处理其各种状态。
二. 为什么要PN功能
为什么需要PN(Partial Network)功能,实质还是为了节能。没有PN功能时,一个网段内的所有ECU同醒同睡。有时,在一个网段内,可能只需要某些ECU正常工作即可,不相关的ECU没必要唤醒(费电)。所以增加PN功能是节能的一个优选项。
三. AutoSar配置
在Autosar中,PN功能的开启需要多个模块配置PN参数选项,先说CanNM模块。在CanNM模块,首先需要配置CanNmPnEnabled参数,即CanNmPnEnabled = TRUE。
(1)如果参数CanNmPnEnabled = FALSE,CanNM收到NM PDUs直接进行后续动作,即通知NM模块等,此时PN功能忽略(无效)。只要收到有效范围的网络管理报文(一般会规定网络管理报文是一个范围,比如:0x500~0x57F),网络即可唤醒;
(2)参数CanNmPnEnabled = TRUE,也不能说PN功能开始生效。此时需要进一步判断参数CanNmAllNmMessagesKeepAwake和PNI(Partial Network Information Bit)信息。
四. PN功能的应用举例
含有PN功能的网段,同样A工况下,ECU2和ECU4保持正常工作状态,ECU1、ECU3休眠。这样休眠中的ECU就不太耗电了。
所以说相对不含PN功能的网段,含PN功能的网段将更节能。
PN正是通过对于网络的再次细分,在不同的场景下使不同的ECU处于工作状态,而无关的ECU仍处于低功耗状态,以达到进一步减少电量消耗的目的。
五. CAN网络报文定义
通常使用8个字节的数据分配给网络管理报文PDU,包含Source Node ID,CBV (Control Bit Vector)和User Data,其中User Data为用户自定义的内容,使用PN的情况下将全部或者部分User Data用于定义一组PN。
CBV包含了NM模块的一些控制信息,使用PN时需要使用Partial Network Information Bit。
1)Active WakeUp Bit
它就是主动唤醒标志位,存在于控制状态位CBV当中的Bit4中。
当节点从总线休眠模式或者总线预睡眠模式主动唤醒进入重复报文状态的时候,需要将这个设置位为1,直到停止发送网络管理报文。
2)Repeat Message Request Bit
它就是重复报文状态请求位。存在于控制状态位CBV当中的Bit0中。
在正常运行状态,当接收的网络管理报文中重复报文状态请求位为1的时候,节点进入重复报文状态。
在准备睡眠状态,当接收的网络管理报文中重复报文状态请求位为1的时候,节点进入重复报文状态
六. 网络管理状态于消息报文发送
NM State | Send App messages | Send NM messages |
---|---|---|
Bus-Sleep-Mode总线休眠模式 | × | × |
Repeat Message State重复报文状态 | √ | √ |
Normal Opearation State正常运行状态 | √ | √ |
Read Sleep State准备休眠状态 | √ | × |
Prepear Bus-Sleep Mode总线预睡眠模式 | × | × |
七. 网络管理参数定义
参数 parameter | 描述信息 | 参考值 | 冗余范围 |
---|---|---|---|
T-NM-Timeout | 节点进入网络模式开始此定时器,当定时器超时,进入总线预休眠模式 | 2000ms | 正负10% |
T-RepeatMessage | 重复报文状态持续时间 | 1600ms | 正负10% |
T-WaitBusSleep | 等待总线休眠时间,保证所有节点能停止总线活动 | 正负10% | |
T-StartNM-Message | 网络管理节点从总线睡眠模式或准备睡眠状态进入网络模式开始发送第一帧网络管理报文的时间 | 10ms | - |
T-StartAPP-Message | 成功发送第一帧网络管理报文后,发送应用报文的间隔时间,该时间在定义中为最大值 | 20ms | - |
T-NMImmediateCycle | 如果节点主动请求唤醒网络,节点会进入快速发送机制,此时节点处于重复网络管理报文状态,网络管理报文将会按周期发送N-ImmediateNM-Times次 | 20ms | 正负10% |
N-ImmediateNM-Times | 定义在重复报文状态下,网络管理报文按照T-NMImmediateCycle为周期发送的次数 | 25次 | - |
T-NM-MessageCycle | 节点每两帧网络管理报文之间的时间间隔。节点将会在网络模式除准备睡眠状态下按此周期发送 | 500ms | 正负10% |
T-WakeUp | 节点从睡眠状态进入网络模式发送第一帧网络管理报文的时间,一般为重复报文状态,它是最大值 | 100ms | - |
T-PN-Reset | 局域网络管理中,被请求的局域网络处于其他网段,当源网段停止请求该局域网络时,集合器(网关)请求的复位时间 | 1500ms | 正负10% |