CAN网络管理规范
个人理解:管理CAN网络中各NM节点的工作模式(状态);
1.术语定义
👉节点地址:用于==唯一标识网络中每个节点的单字节数字,取值范围是 0x00~0xFF==。
👉状态迁移:==状态指节点的工作模式。在一定状态下,节点执行特定功能==;
👉 NM节点:该类节点要求具有网络管理功能,在满足该节点睡眠与唤醒条件时需要进入或退出==通讯睡眠模式==,睡眠唤醒条件由模块《睡眠与唤醒条件》文件定义。
2.图例说明
3.CAN NM节点状态及状态迁移
3.1NM运行状态
节点上电时,节点进入NM运行状态。在NM运行状态中,包含了网络唤醒、网络睡眠 、主动网络管理、被动网络管理,两组并列的工
作子状态;
3.1.1 唤醒状态(NMWake)
当节点满足控制器唤醒条件时,节点进入网络唤醒状态。在直接网络管理中,节点长期保持在此状态,维持网络管理运行、监控网络节点运行状态、负责节点网络睡眠。
其包括正常运行(NMNormal)、跛行(NMLimpHome)两个子状态和复位(NMReset)过程。
3.1.2睡眠状态(NMBusSleep)
当所有节点满足控制器睡眠条件后,睡眠类型节点进入网络睡眠状态。
在此状态中,网络通讯停止,但 CAN 收发器监测网络活动。
3.1.3主动网络管理(NMActive)
网络节点主动参与逻辑环建立、维持,睡眠指示、睡眠命令等网络管理活动。
3.1.3被动网络管理(NMPassive)
网络节点仅监听网络状态,不参与网络管理活动。
4.运行流程
4.1初始化流程
当节点上电或唤醒后,进入初始化流程。初始化流程包括硬件初始化、复位两部分。
在初始化流程中,需要对芯片硬件进行初始化、清空 NMrxcount 和 NMtxcount、目标地 址进行配置,NMrxcount 进行加 1,同时发送 Alive 报文并将 NMtxcount 进行加 1。
如果接收和发送计数器均未超过阈值,则启动定时器 Ttyp,超时后进入常规运行状态, 否则启动定时器 Terror,超时后进入跛行状态。
当节点唤醒、退出 LimpHome 状态、总线出现严重错误,节点将进入 LimpHome 状态
4.2正常运行状态
当节点初始化完成,且当接收、发送计数器都小于阈值时,节点进入常规运行状态, 常规运行流程可以分为 "常规运行流程" 与 "睡眠流程" 两部分。
在正常运行、预睡眠过程中,接收到 NM 报文后,首先将接收计数器清零,然后判断报文类型。
若为 Limphome 报文则将更新配置标记 Limphome 节点,否则确定逻辑继承者,并再次判断报文类型,
若为 Alive 报文则使网络稳定参数为 0,当前逻辑环处于网络不稳定状态;
若为 Ring 报文,首先取消 Ttyp 和 Tmax 定时器,判断目标地址是否和本地地址一致,若一致则启动 Ttyp,
否则启动 Tmax 定时器,Tmax 超时后判断节点是否被跳过,如果被跳过并且允许睡眠,则发送 ind=1 的 Ring 报文,不允许睡眠则发送 Alive报文。
4.2.1 常规运行流程
4.2.1.1 NM报文接收
在常规运行状态中,如果在 Tmax 超时范围内接收到 NM 报文,节点进入 NM 报文接收流程。
在流程中,节点首先进入接收后定时、跳过判断流程(图 8)。判断完成后,再对报文类型进行判断,
如果为睡眠命令报文,且本节点满足睡眠条件,节点进入睡眠初始化。
如果节点不满足条件,退回到常规运行状态。NM 报文接收流程见图 9 所示。
4.2.1.2 NM报文发送
当节点接收到的 Ring 报文目标地址等于本地地址时,节点启动 Ttyp 定时器。
当 Ttyp超时后,节点进入报文发送流程。当节点处于主动网络管理状态时,
如果节点自身满足睡眠条件,且 NMtxcount<=tx_limit 时,节点发送”Sleep.ind=1”的 Ring 报文,并配置
网络状态。如果 NMtxcount>tx_limit,则节点进入跛行状态。当 Ttyp 超时,发送 NM 报文流程见图 10 所示。
在发送非跛行的 NM 报文时,如果发送报文请求被驱动层拒绝,则定时 Ttx 定时器。
Ttx 超时后节点才能再次发送NM 报文。但不对 NMtxcount 进行操作。如果 Tmax 超时,节点复位,取消 Ttx 定时器。
4.2.1.3 NM报文成功发送
在常规运行状态中,在节点发送了 NM 报文后,当数据链路层返回报文成功发送后,节点进入 NM 成功发送流程。
节点对 NMtxcount 计数器进行清零,并对 Tmax 定时器重新进行定时。
如果发送的报文为”Sleep.ind=1”的 Ring 报文,则判断节点当前是否满足睡眠条件。
如果满足,则将 Sleep.ack 位置“1”,并进入预睡眠状态。否则节点返回常规运行状态。
当 NM 报文成功发送后,其详细流程见图 11 所示。
4.2.1.4 Tmax超时处理
当定时参数 Tmax 超时时,节点复位,再次进入节点初始化。
计数器 NMrxcount+1,发送 Alive 报文后,NMtxcount+1。并判断 NMrxcount、NMtxcount 两个计数器。
当NMrxcount 或 NMtxcount 大于阈值时,节点进入跛行状态。其流程见图 12 所示。
4.2.1.5 NM节点睡眠满足
当节点满足睡眠条件后,判断当前节点是主动状态还是被动状态。
当节点处于被动状态时,节点进入预睡眠状态。
当节点处于主动状态时,节点返回常规运行状态。其流程见图 13 所示。
4.2.1 正常睡眠流程
4.2.1.5 预睡眠
当节点满足睡眠条件后,节点成功发送”Sleep.ind=1”的 Ring 报文,如果Networkstatus.Bussleep = 1 并且 sleep.ack=1,节点将进入预睡眠状态。
在等待其他节点发送”Sleep.ind=1”的 Ring 期间,如果本节点检测到不满足睡眠时,退出预睡眠状态;
当节点收到任意 NM 报文时,首先进入接收后定时、跳过判断流程(图 8);再判断接收到的 NM 报文 sleep.ind 是否为“1”,如果不为“1”,节点退出预睡眠状态。
如果满足条件,再次判断是否为 sleep.ack=1 的睡眠命令报文。如果是,节点进入睡眠初始化,否则节点
仍处于预睡眠状态;当 Ttyp 超时后,节点发送睡眠命令报文;当报文成功发送后,节点停止通讯,并进入睡眠等待状态。其流程见图 14 所示。
4.2.1.5 睡眠等待
接收或发送 ack=1 的说明命令报文后,节点停止网络通讯,进入睡眠等待状态。
在Twbs 超时前,如果接收到 ind=0 的报文或不满足睡眠条件时,节点退出睡眠等待状态,进入复位状态。
当 Twbs 超时后,节点进行总线关闭初始化后,进入睡眠状态。其流程见图 15 所示。
4.3 跛行状态
网络管理定义了两个错误计数器:网络管理接收错误计数器(NMrxcount)和网络管理发送错误计数器(NMtxcount)。
🔰接收错误计数器
用于表示 NM 报文连续接收错误的数目,NMrxcount 的阈值用 rx_limit 表示,当成功接收到 NM 报文后,NMRxcount 计数器清零。
🔰接收错误计数器
用于表示 NM 报文连续发送错误的数目,NMtxcount 的阈值用 tx_limit 表示,当成功发送 NM 报文后,NMTxcount 计数器清零。
🔰跛行状态处理机制
当任何一个错误计数器超过其阈值时,节点进入跛行状态。当总线关闭之后也进入跛行状态。
节点进入跛行状态后,以 TError 周期发送 LimpHome 报文。
4.3.1 跛行常规流程
4.3.1.1 NM 报文接收
当节点处在跛行状态下,如果接收到了网络管理报文 ,节点需要通过NMMerker.limphome(成功发送标志)判断在接收到网络管理报文前是否发送成功过网络管理报文。
如果 NMMerker.limphome=1 后,判断节点是否允许网络睡眠。如果不允许睡眠,节点复位;如果允许睡眠且接收到 Sleep.ack=1 的睡眠命令报文,节点进入睡眠初始化 7,即停止网络通讯,设置定时器 Twbs,进入睡眠等待状态。
如果 NMMerker.limphome == 0 后,判断节点是否允许网络睡眠。如果不允许睡眠,节点进入跛行状态;
如果允许睡眠,且接收到的为 Sleep.ind=0 的 NM 报文,节点也进入跛行状态;如果接收到 Sleep.ind=1 的 NM 报文则再次判断 ack 状态,如果收到 ack =1 的睡眠命令报文,则节点进入睡眠初始化状态 7;
如果收到 ack==0 睡眠命令报文,节点则进入预睡眠状态。其流程见图16 所示。
4.3.1.2 NM 报文发送
当 Terror 定时器超时后,节点尝试允许运用报文发送。并判断节点是否满足睡眠条件,如果满足睡眠条件,发送 Sleep.ind=1 的跛行报文,同时设置 Tmax,并进入预睡眠状态。
如果网络不满足睡眠,则节点重新设置 Terror,并发送 LimpHome。其流程见图17 所示。
4.3.1.3 NM 报文成功发送
在跛行状态下,当节点成功发送跛行报文后,节点标记 NMMerker.limphome=1,标记节点成功发送跛行报文。
其流程见图 18 所示。
4.3.2 跛行睡眠流程
4.3.2.1 预睡眠
①在跛行状态下,在 Tmax 超时前,当节点成功发送 NM 报文时节点进入预睡眠状态。
②如果节点不满足睡眠条件,则启动 Terror,超时后进入跛行状态。
③如果接收到 NM 报文并能够成功发送 NM 报文,则先判断是否允许睡眠,
如果允许并且接收到 Sleep.ack=1 的睡眠命令报文,则进入睡眠初始化 7,否则进行软件复位; 如果接收到 NM 报文但不能成功发送 NM 报文,则先判断是否允许睡眠,如果不允许则进入跛行状态; 否则,如果 Sleep.ind=0 节点也将进入跛行状态; 如果 Sleep.ind=1 并且 Sleep.ack=1,节点将进入睡眠初始化; 如果 Sleep.ind=1 并且Sleep.ack=0,节点则将进入预睡眠状态。
④Tmax 超时后,节点进入睡眠初始化状态。
4.3.2.2 睡眠等待
在跛行状态下,在 Twbs 超时前,如果节点不满足睡眠条件或接收到的 NM 报文 ind=0 的 NM 报文时,节点取消 Twbs 定时器,定时 Terror 定时器,然后退回到跛行状态。否则,节点仍处于睡眠等待状态。直到 Twbs 超时,超时后,节点睡眠。其流程见图20所示。
5.“逻辑环”及“节点跳过判断”机制
6.网络管理报文
附录:
😝 定时器参数、阈值列表
😝 节点列表
注:目前节点为以上 10 个节点,但 DUT 应该能识别基地址内的所有节点。
节点 | 节点名称 | NMCAN ID | 节点地址 |
---|---|---|---|
BCM | 车身控制器 | 0x400 | 0x00 |
IP | 仪表 | 0x401 | 0x01 |
ESCL | 电子转向锁 | 0x402 | 0x02 |
PEPS | 无钥匙启动模块 | 0x403 | 0x03 |
LCM | 灯光控制器 | 0x404 | 0x04 |
TPMS | 胎压检测系统 | 0x405 | 0x05 |
GW | 网关控制器 | 0x406 | 0x06 |
TBox | 车载通信控制器总成 | 0x407 | 0x07 |
PTS | 背门控制器 | 0x408 | 0x08 |
DSM | 座椅控制器 | 0x409 | 0x09 |
EMS | 发动机管理系统 | 0x410 | 0x10 |
😝 节点框图及术语
术语 | 英文 | 中文 | 备注 |
---|---|---|---|
BAT | Battery | 蓄电池供电 | |
OFF | OFF | 电路关闭 | |
ACC | Accessory | ACC 档电源开启 | |
IGN(ON) | IGN | IGN 档电源开启 | |
START | START | 发动机启动, 点火后自动回 到 IGN | |
EPS | Electric Power Steering | 电动助力转向系统 | |
HDC | Hill Descent Control | 陡坡缓降控制系统 | |
ESC | Electronic Stability Control | 电子稳定性控制系统 | |
IACC | Integrated Adapted Cruise Control | 集成式自适应巡航 | |
ACC | Adaptive Cruise Control | 自适应巡航 | |
LDW | Lane departure warning system | 车道偏离辅助系统 | |
FCW | Forward Collision Warning | 前碰撞预警 | |
AEB | Autonomous Emergency Braking | 自动紧急制动 | |
STT | STOP&START | 怠速启停 | |
HU | Head Unit | 车载娱乐信息终端总成 | |
PTS | Power Tail System | 汽车背门控制器 | |
EMS | Engine Management System | 电喷控制器(发动机管理 系统) | |
EPBi | Electronic Parking Brake integration | 电子手刹集成 (EPB+ESP) | |
AFS | Adaptive Front-light System | 自适应前照灯系统 | |
ALS | Auto-Leveling System | 头灯自动高度调节系统 | |
FSCM | Front Seat Climte Module | 前排座椅加热通风模块 | |
PEPS | Passive Entry Passive Start | 无钥匙进入启动 | |
DSM | Driver Seat Module | 主驾座椅模块 | |
LCM | Light Control Module | 灯光控制模块 | |
BSD | Blind Spot Detect | 盲点检测控制器 | |
DVR | Driving Video Recorder | 行车记录仪 | |
AC | Air Conditioner | 空调控制器 | |
AVM | Around View Module | 全景模块 | |
IP | Instrument Panel | 仪表控制器 | |
iBCM | intelligent Body Control Module | 智能车身控制模块 | |
APA | Auto Parking Assist | 自动泊车辅助控制器 | |
LCDAL | Lane Change Decision Aid Left | 左侧并线辅助模块 | |
LAS | Lane Assistant System | 车道辅助系统 |