车载网络总线管理的目的是使网络中的ECU节点有序地睡眠和唤醒,在没有通信需求的时候睡眠,可以节约电池的能量。
CAN总线上的网络管理,是一种无中心式的网络管理,网络中的每个节点都依赖于自己和别人的网络管理报文(NM PDU)来实现通信的睡眠和唤醒,这个NM PDU是周期性发送的。文章源自线束工程师之家-https://www.suncve.com/can-network-management/
对于每个ECU来说,收到别的ECU发送的NM PDU则意味着当前的网络有通信需求,自己发出NM PDU则是告知别的ECU自己有通信需求。文章源自线束工程师之家-https://www.suncve.com/can-network-management/
如果某个ECU打算进入Bus-Sleep-Mode,它就会停止发送NM PDU,在进入Bus-Sleep-Mode之前会有一段延时,如果在这段延时中没有收到任何NM PDU,则它就会转入Bus-Sleep-Mode状态了。文章源自线束工程师之家-https://www.suncve.com/can-network-management/
文章源自线束工程师之家-https://www.suncve.com/can-network-management/
AUTOSAR中定义的网络管理PDU文章源自线束工程师之家-https://www.suncve.com/can-network-management/
上图定义了NM PDU的格式,byte 0标识ECU的节点地址,byte 1是控制信息。CAN NM为ECU的网络管理定义了三种模式(Mode):文章源自线束工程师之家-https://www.suncve.com/can-network-management/
- Bus-Sleep Mode
- Prepare Bus-Sleep Mode
- Network Mode
最后的Network Mode又分为三个状态(state):文章源自线束工程师之家-https://www.suncve.com/can-network-management/
- Repeat Message State
- Normal Operation State
- Ready Sleep State
CAN总线上的网络管理的核心,就是ECU在这3种模式和3个状态之间的转换的状态机。文章源自线束工程师之家-https://www.suncve.com/can-network-management/
文章源自线束工程师之家-https://www.suncve.com/can-network-management/
基于CAN的网络管理中ECU的NM状态机文章源自线束工程师之家-https://www.suncve.com/can-network-management/
ECU最初处于Bus-Sleep Mode中,当它有了通信需求(比如接收其他ECU的NM报文,或者它的逻辑功能要求自己唤醒,比如车门控制器收到了遥控钥匙的信号),它就会进入Network Mode。
Repeat Message状态是Network Mode的入口状态,到达这个状态之后,ECU会启动一个Repeat Message Timer,在这个Timer定义的时间内,ECU会一直处于Repeat Message状态。当这个timer结束后,如果有通信需求,ECU则进入Normal Operation状态,如果没有通信需求,则进入Ready Sleep 状态。
Normal Operation状态就是ECU正常运行的状态,此时它的应用报文和NM报文都会正常收发。
当ECU没有通信需求,它会瞬间进入Ready Sleep状态,在Ready Sleep中,如果又出现了通信需求,ECU则瞬间再回复到Normal Operation,如果在一个Timeout Timer中一直没有通信需求,ECU就进入Prepare Bus-Sleep Mode,在Prepare Bus-Sleep状态中,也会启动一个Timeout Timer,如果在这段时间内有了通信需求,ECU又会立即回到Repeat Message状态,如果过了这个timer还没有通信需求,则ECU会回到Bus-Sleep Mode中。
综上所述,ECU网络管理的实现的核心就是实现这个状态机,在AUTOSAR中,这些状态之间的跳变就是由AUTOSAR定义的各种接口函数实现的。
来源:汽车ECU网络诊断技术 ,作者:zdybupt