Autosar Nm机制

先从状态机说起:

 

AUTOSAR网络管理状态:

  • 睡眠模式(Bus-Sleep Mode):当节点没有本地网络唤醒以及远程唤醒请求时,ECU通讯控制器切换至睡眠模式,ECU功耗降低至适当水平;此模式下,NM报文只收不发,APP报文不收不发,当出现有效唤醒源时必须要被唤醒

  • 预睡眠模式(Prepare Bus-Sleep Mode):这个状态是为了等待总线上的所有节点能够在进入Bus-Sleep Mode之前有时间停止节点的active状态(如清空队列中为发送的报文);此模式下,NM报文只收不发,APP报文不收不发,如果缓冲区有APP报文那可以继续发完;等待T_WAIT_BUS_SLEEP超时后进入睡眠模式。

  • 网络模式(Network Mode):

    包含3个子状态:

    • 重复报文状态(Repeat Message State):NM报文可收可发,APP报文可收可发

      • NM PDU 快速发送状态:以N_immediateNMCircleTime快速发送N_immediateNM_times次NM PUD

      • NM PDU 正常发送状态:以T_NM_MessageCircleTime正常周期发送NM PUD,最多T_REPEAT_MESSAGE时长

    • 正常工作状态(Normal Operation State):NM报文可收可发,APP报文可收可发;

    • 准备睡眠状态(Ready Sleep State):NM报文只收不发,APP报文可收可发;

      状态迁移条件:

    • 01:给ECU上电,ECU自己就会初始化进入睡眠模式。如果没有唤醒源来唤醒此节点,那就会一直待在睡眠模式。

    • 02:远程唤醒,远程唤醒是其他节点想要和我通信。

    • 03:当出现本地唤醒,这里再解释下,本地唤醒就是我自己想要主动和其他节点通信

    • 04:快速发送次数N_immediateNM_times完成

    • 05: T_NM_timerout定时器超时,不改变当前状态。定时器需要重置。

    • 06: 本地唤醒条件满足且T_repeat_message超时

    • 07: 收到RepeatMessageRequest bit =1的NM PDU

    • 08: T_NM_timerout定时器超时,不改变当前状态。定时器需要重置。

    • 09:本地唤醒条件不满足且T_NM_timeout超时

    • 10:收到本地唤醒请求

    • 11:收到NM报文的byte1字节的重复请求位如果置1,强制进入RMS

    • 12:本地唤醒条件不满足,且T_repeat_message超时

    • 13:T_NM_TIMEOUT超时

    • 14: T_NM_timerout定时器超时,不改变当前状态。定时器需要重置。

    • 15:收到远程唤醒请求

    • 16:收到本地唤醒请求

    • 17:T_WAIT_BUS_SLEEP超时

 

Nm报文格式:  

Byte0:这里填的是ECU的地址,或者叫ECU的ID或偏移地址;

此报文的ID=一个基础值+Offset,例如主机厂规定的NM Base Address为0x500,那么此报文的ID=0x500+0x9=0x509;

如HUT NM ID为0x509,Offset = 9;

Byte1

 

这里关注下bit0和bit4:

bit0:当此位置1时强制进入RMS;

bit4:告诉其他节点自身是怎么被唤醒的;

置0:被动唤醒、远程唤醒,比如被其他节点发送的NM报文唤醒;

置1:主动唤醒、本地唤醒,比如给ECU上电;

byte2-byte7里的user data数据由用户自行定义。

 

  • 4
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值