电子说
AUTOSAR CAN网络通信中有三种模式和三种状态,如下图所示:
3种运行模式:
睡眠模式(Bus-Sleep Mode);
预睡眠模式(Prepare Bus-Sleep Mode);
网络模式(Network Mode)。
睡眠模式(Bus-Sleep Mode)
当CAN网络中没有远程唤醒或者本地唤醒请求时,ECU应处于睡眠模式(Bus-Sleep Mode),将功耗降低至最低水平,这种模式是ECU启动时的起始状态或者是ECU睡眠时的最终状态。
在该模式下,网络管理报文和应用报文都禁止发送,但是可以被网络上的报文唤醒。
CAN收发器应当支持设定唤醒帧(如果有CAN收发器的情况下),ECU只会接受到特定的NM报文才会正常唤醒,否则就会一直处于休眠状态,能够不受网络上应用报文的干扰。
预睡眠模式(Prepare Bus-Sleep Mode)
ECU进入预睡眠模式(Prepare Bus-Sleep Mode)后禁止网络管理报文的发送,允许接收网络管理报文。应用报文已经在buffer中的一般允许继续发送,进入到预睡眠模式(Prepare Bus-Sleep Mode)计时器CanNmWaitBusSleepTime就会启动,一旦计时器CanNmWaitBusSleepTime超时,就会进入到睡眠模式(Bus-Sleep Mode)。
本项目AUTOSAR配置中设定计时器CanNmWaitBusSleepTime为2秒。
网络模式(Network Mode)
当CAN网络处于开启或者工作情况下会进入网络模式,ECU进入网络模式(Network Mode)后计时器CanNmTimeoutTime就会启动,只要成功接收到来自CAN总线上的网络管理报文或者成功发送至CAN总线网络管理报文,都会将计时器CanNmTimeoutTime重置。
本项目AUTOSAR配置中设定计时器CanNmTimeoutTime为2秒,所以0X505网络管理报文的发送周期要在2秒内,超时会进入预睡眠模式(Prepare Bus-Sleep Mode)。
网络模式(Network Mode)包含3种状态:
报文重复状态(Repeat Message State);
常规运行状态(Normal Operation State);
准备睡眠状态(Ready Sleep State)。
报文重复状态(Repeat Message State)
当ECU从其他模式进入网络模式(Network Mode)时,默认进入报文重复状态(Repeat Message State)。该阶段是CAN网络正式开始工作前的准备阶段,用来等待CAN网络中所有相关节点进行网络通信的准备时间。
该模式下计时器CanNmRepeatMessageTime规定了重复发送网关管理报文的时间,CanNmImmediateNmTransmissions规定了发送网络管理报文的次数。
在报文重复状态(Repeat Message State)ECU使用计时器CanNmMsgCycleTime周期时间发送网络管理报文。
本项目AUTOSAR配置中发送网络管理报文的周期是640毫秒,重复次数为5,总时常3.2秒。
常规运行状态(Normal Operation State)
ECU进行正常CAN通信时会处于常规运行状态(Normal Operation State),该阶段中,节点要按照计时器CanNmMsgCycleTime时间周期发送网络管理报文。每次成功发送或者接收CAN网络报文计时器CanNmTimeoutTime就会重置。
在常规运行状态(Normal Operation State)下的网络管理报文和应用报文都应该正常收、发通信。
准备睡眠状态(Ready Sleep State)
在准备睡眠状态(Ready Sleep State)ECU应当停止发送网络管理报文,每次成功接受到来自CAN网络上的网络管理报文,计时器CanNmTimeoutTime就会重置,一旦CanNmTimeoutTime超时,就会进入预睡眠模式(Prepare Bus-Sleep Mode)。
在AUTOSAR中规定了各种模式和状态下计时器的默认时间:
配置参数在AUTOSAR代码中体现如下所示:
下图梳理了所有网络管理的模式转换情况,通常控制器的状态转换如蓝色箭头所示:
审核编辑:刘清
全部0条评论
快来发表一下你的评论吧 !