zoukankan      html  css  js  c++  java
  • 基于CAN的autosar网络管理

    车载网络总线管理的目的是使网络中的ECU节点有序地睡眠和唤醒,在没有通信需求的时候睡眠,可以节约电池的能量。

    CAN总线上的网络管理,是一种无中心式的网络管理,网络中的每个节点都依赖于自己和别人的网络管理报文(NM PDU)来实现通信的睡眠和唤醒,这个NM PDU是周期性发送的,对于每个ECU来说,收到别的ECU发送的NM PDU则意味着当前的网络有通信需求,自己发出NM PDU则是告知别的ECU自己有通信需求。如果某个ECU打算进入Bus-Sleep-Mode,它就会通止发送NM PDU,在进入Bus-Sleep-Mode之前会有一段延时,如果在这段延时中没有收到任何NM PDU,则它就会转入Bus-Sleep-Mode状态了。

    AUTOSAR中定义的网络管理PDU

    上图定义了NM PDU的格式,byte 0标识ECU的节点地址,byte 1是控制信息。

    CAN NM为ECU的网络管理定义了三种模式(Mode):

    1. Bus-Sleep Mode
    2. Prepare Bus-Sleep Mode
    3. Network Mode

    最后的Network Mode又分为三个状态(state),

    1. Repeat Message State
    2. Normal Operation State
    3. Ready Sleep State

    CAN总线上的网络管理的核心,就是ECU在这3种模式和3个状态之间的转换的状态机。

    基于CAN的网络管理中ECU的NM状态机

    跟着状态机走一遍,就会对这个过程有比较直观的了解了。

    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定义的各种接口函数实现的。但是真实使用的时候不是这么简单,还有很多机制,暂不深究。

  • 相关阅读:
    1451. Rearrange Words in a Sentence
    1450. Number of Students Doing Homework at a Given Time
    1452. People Whose List of Favorite Companies Is Not a Subset of Another List
    1447. Simplified Fractions
    1446. Consecutive Characters
    1448. Count Good Nodes in Binary Tree
    709. To Lower Case
    211. Add and Search Word
    918. Maximum Sum Circular Subarray
    lua 时间戳和时间互转
  • 原文地址:https://www.cnblogs.com/still-smile/p/12162643.html
Copyright © 2011-2022 走看看