汽车行业的网络管理一般有两种,一种是AutoSar另一种是OSEK,为啥汽车要网络管理,其实是为了降低车辆电池消耗,当车辆不工作时所有总线上的ECU通讯模块或整个ECU处于低功耗状态。网络管理一般用在电池供电的ECU,比如车上CAN上的ECU。为了避免通讯错误,需要网络管理来协调网络上所有ECU同时进入低功耗模式。OSEK和AUTOSAR网络管理本质上一样,只是实现算法不一样,后者比前者算法跟简单。下一篇再写OSEK。补充下汽车上的can网络一般有三种报文,网络管理报文的id是4开头的,就是用来协调各个ecu进入休眠和唤醒用的。诊断报文的id是7开头的,比如按照UDS协议读取某个ecu现在存的故障码之类的。应用报文是携带一些比如车门车窗状态车速油耗等等车辆信息供各个零部件知道车的一个状态。
AutoSar网络管理总结下来就两点:
1) 每个网络节点如果想保持总线通信,就会一直发送周期性的NM(网络管理)消息;如果它不再需要保持总线通信,它就不再发送NM消息。
2) 如果总线通信已经被释放,并且在配置的一段时间内没有发送或者接收到NM消息,则执行到Bus-Sleep模式的状态转移。
AutoSar网络管理总共包含下面5种状态。
1、Bus Sleep Mode : 睡眠模式,该模式下禁止报文的收发。除了网络管理报文可以接收到。ecu一上电就处于该模式。如果ECU接收到NM报文或本地唤醒事件(如车辆上电),则NM状态由Bus Sleep Mode迁移到Repeat Message State;
2、Repeat Message State:唤醒过渡模式,该模式连接了休眠唤醒两种状态,保证了网络最小活动时间,同时提供网络快恢复功能。在该模式下一般ECU是周期比较快比如20毫秒的发10帧网络管理报文后,如果持续接收到了别的ecu发来的网络管理报文或者有本地唤醒源比如车辆上电,则切到Normal Operation State。如果没有则切到Ready Sleep State。
3、Normal Operation State:正常工作模式,该模式下网络处于稳定收发报文状态,能正常收发所有报文。该模式下一般网络管理报文是500ms发一次,如果没收到其他ecu发网络管理报文了或者没有本地唤醒源了比如车辆上电,则切到Ready Sleep State。
4、Ready Sleep State: 网络预睡眠状态,待整车协商完成后,进入睡眠模式。该状态下,ecu不发送网络管理报文了但可以接收到所有类型的报文。可随时恢复到正常工作模式。在该状态下当接收到本地唤醒事件后,NM迁移到Normal Operation State。如果不再接收到网络管理报文且此时没有诊断在执行就会切到Prepare Bus Sleep Mode。
5、Prepare Bus Sleep Mode: 准备睡眠模式,该模式下禁止报文的收发,只接收网络管理报文,具有快速恢复报文收发的能力。如果接收到本地唤醒事件或者接收到NM报文,则NM迁移到Repeat Message State。如果未接收到本地唤醒事件,且未接收到NM报文,则NM会在TIMER_WAIT_BUS_SLEEP超时后进入Bus Sleep Mode
备注: 在Normal Operation State中或者在Ready Sleep State中,当接收到Repeat Message的请求报文后,网络管理的状态会迁移到Repeat Message State;一般是为了快速唤醒别的ECU才会有节点发这种报文。