AutoSAR网络管理状态转换详解

目录

概述:

一、状态迁移详解


概述:

本篇我们一起看下基于CAN通信的网络管理状态机跳转过程详解,跳转过程中会调用到的常用接口。如需了解唤醒方式可看上一篇AutoSAR网络管理的唤醒方式(主动和被动)

一、状态迁移详解

网络管理包括三个模式:Bus-Sleep Mode、Network Mode和Prepare Bus-Sleep Mode.

  • Bus-Sleep Mode(BSM)

状态机处于睡眠状态,一般有两个状况:

  1. ECU在刚被唤醒上电进行初始化,程序还没运行到处理网络管理状态迁移的时候。
  2. 程序运行到下电之前,ECU准备进入休眠的时候。

检查错误帧,如果收到了错误帧则说明进入BSM

  • Network Mode

        网络模式是节点正常运行时处于此模式,包括三个子状态:Repeat Message State、Normal         Operation State和Ready Sleep State。

        

  • Repeat Message State(RMS)

ECU被唤醒后首先且必须经过Repeat Message State,该模式下会启动T_Repeat_Message重复消息定时器,且在进入网络模式时T_NM_Timeout计时器也启动了。

Repeat Message就是重复发送NM报文,在上一篇AutoSAR网络管理的唤醒方式(主动和被动)所提到的主动唤醒和被动唤醒的情况下要重复发送NM报文。

  • 当ECU有主动唤醒需求(网络通信需求)时,ECU醒来且需要整车其它节点快速唤醒配合工作,在该情况下,ECU需要重复快速发送NM报文去唤醒其它节点。

  • 当ECU有被动唤醒需求时,被总线上其它ECU节点的NM报文唤醒后,在该情况下,ECU需要发送几帧NM报文告诉其他节点我已经被唤醒了。

总的来说,在Repeat Message State状态停留的时间比较短,在T_Repeat_Message(根据客户需求定制)在超时后就需要跳转到Normal  Operation State或Ready Sleep State。在Repeat Message State状态下,ECU一旦接收或发送一条NM报文,或者T_NM_Timeout超时,则T_NM_Timeout立即重置

  • Normal Operation State(NOS)

在正常运行状态中,节点要周期发送网络管理报文,发送周期为CanNmMsgCycleTime。节点网络此时处于正常工作状态。

在正常运行状态中,定时器T_NM-Timeout如果超时了要被重启。

从Repeat Message State跳转到Normal Opearation State:

  1.   当ECU主动唤醒进入Repeat Message State且T_Repeat_Message定时器超时,主动请求还未释放时,状态跳转到NOS。
  2.   当ECU被动唤醒进入Repeat Message State且在T_Repeat_Message超时前检测到主动请求,则在定时器超时后状态跳转至NOS。                                                             

 从Ready Sleep State跳转到Normal Opearation State:

  1. 当处于RSS时检测到主动请求,状态跳转至Normal Opearation State 。

从NOS跳转到RMS: 接收到总线上NM报文的Byte1的Bit0置1时,就需要把状态跳转至RMS。

从NOS跳转到RSS:ECU进行网络释放。

注意

  • “主动请求”,当ECU处于休眠状态可被主动请求唤醒;当ECU已经处于唤醒的状态时,也是时刻在检测主动请求的。
  • “网络释放”,就是这个ECU释放主动请求。

  • Ready Sleep State(RSS)

当节点不再需要进行网络通讯时,应用层会调用“CanNm_NetworkRelease()”函数,释放网络,节点进入准备睡眠状态,停发网络管理报文,但要保持应用报文的发送。

从RSS跳转到NOS:  在RSS状态下,如果ECU有主动唤醒请求,可以调用CanNm_NetworkRequest()函数使节点重新回到正常运行状态。

从RSS跳转到RMS: 当节点处于RSS状态时,如果收到总线上Byte1的Bit0置1的NM报文,也会强制重新进入RMS状态。

从RSS跳转到PBSM: 当节点未接收到NM报文时间超过了T_NM_Timeout时间,ECU进入预睡眠模式。

T_NM_Timeout时间=最后一帧应用报文发出的时间 - 最后一帧网络报文发出的时间

  • Prepare Bus-Sleep Mode(PBSM)

总线预睡眠状态,在这个状态下ECU停发应用报文和NM报文,但是接收NM报文且需要对总线上的报文进行ACK应答。进入该状态时,将启动T_Wait_Bus_Sleep定时器,当时间参数到达后超时,进入睡眠状态。

从PBSM跳转到RMS:检测到唤醒源,ECU自身有网络通信请求或收到其它节点的NM报文。

从PBSM跳转到BSM:未检测到唤醒源,T_Wait_Bus_Sleep超时。

WAIT_BUS_SLEEP = 第一帧错误帧的出现时间 - 最后一帧应用报文发出的时间

欢迎大家一起讨论。


  • 29
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值