汽车电子系统网络管理的简介

本文旨在从业务功能上介绍汽车电子系统中网络管理模块的功能,已达到对于网络管理模块的一个初步管理。

1 网络管理的含义

汽车系统中存在着多种 ECU 控制单元,这些 ECU 控制单元并不是孤立的,而是协同工作。既然各个 ECU 控制单元需要协同工作,那么它们之间就必须能够相互通信。目前各 ECU 之间通信的方式主要有 CAN、 Flexray等车载网络,还包括目前新兴的车载以太网。汽车电子系统通过车载网络对 所有的 ECU 进行配置管理和协调工作的过程称之为网络管理。

2 网络管理的功能

网络管理除了实现普通的业务数据传输之外,网络管理还承担着一项重要工作。不论是传统的机动车,还是目前的混动车以及新兴的电动车,其蓄电池的使用的耐用性都是汽车性能的一个重要瓶颈。网络管理可以通过对于网络上的各个 ECU 的控制,发出一些命令规则,实现各个 ECU 的协同睡眠和唤醒。

通常 ECU 都存在几种工作模式,如唤醒(working)模式、睡眠(sleep)模式、启动(boot)模式。其中 working 模式为正常工作模式,耗能高;sleep模式为待机状态,大部分功能都停止,为低功耗模式;boot 模式为 ECU 刷机模式,通常用于对 ECU 进行升级。

3 网络管理的过程

汽车电子系统的网络管理其实也就是一个状态机的管理。网络管理的状态总体上可以分为 BusSleep、PreSleep、Network 三个状态;其中 Network 状态又分为三个子状态,分别是 RepeatMsg、NormalOperate、ReadSleep。

网络管理最终要实现车上的 ECU 能够协同睡眠和唤醒,也就是说网络管理最重要的一点是保证车上的 ECU 能够协同唤醒和休眠,那么假设车上的 ECU 都处于睡眠模式,网络上都没有报文,则没办法唤醒。所以,一般不会让所有的 ECU 都处于睡眠模式,此时会有极少数的 ECU 处于工作状态,如 BCM,也就是说有一些 ECU 是通过 KL15 直接唤醒的,而有一些是通过 CAN 报文唤醒的。由此可以看出 ECU 的唤醒源可以分为两种:

  • 主动唤醒( Active Wake up):ECU 作为主唤醒节点,当检测到主动唤醒源输入信号时(如KL15)主动唤醒自己,并通过发送NMFRAME 尝试唤醒其他ECU。
  • 被动唤醒( Passive Wake up):ECU 作为从唤醒节点,自己不能主动唤醒自己,只能通过接收到其他 ECU 发来的NM FRAME来唤醒自己。

3.1 状态释义

  • BusSpleep状态:这就是休眠状态,此状态下不发送网络管理报文也不收发应用报文,一般该状态处于低功耗的状态,也就是上文提到的协同睡眠状态。当然上电初始化时,也会默认进入该状态。
  • PreSleep状态:此状态是进入休眠状态前的准备状态,此状态一般不发送网络管理报文帧了,也不发送应用报文了,只是等待其他ECU一起睡眠,其实就是实现‘’协同‘’两个字,也就是让等一段时间让车上所有ECU实现一起睡眠。之所以需要 ECU 协同睡眠,主要是因为各个 ECU 处于协同工作状态,比如VCU(整车控制器)和INV(电机控制器),有可能VCU不发报文了,会导致INV报故障,如此就会出现误报警状态。
  • Network状态:此状态下 ECU 可以进行正常通信,既可以收发网络管理报文帧也可以收发应用报文(包括诊断报文),意思就是唤醒状态。

下面解释一下 Network 状态的三个子状态的含义:

  • Repeat meassage:表示重复发网络管理报文的状态。由于进入网络状态时,首先需要快速发送一些网络管理报文,以尽快告知车上其他 ECU,我处于正常状态了,可以进行通信了。
  • Normal Operation:在进入RepeatMsg一段一时间后,如果需要通信,就会跳到正常工作状态,正常工作状态会按照正常的周期发送网络管理报文,以及所有应用报文正常进行通信,可以说这个状态就是真正的唤醒状态。
  • ReadySleep:从唤醒状态进入休眠时,需要进行一些准备工作,比如有一些数据要存储、比如电机控制器检测到电机还没停下来等等情况,因此此状态就是用来做一些休眠前的准备工作,任何从唤醒到休眠的过程,都需要经过此状态,也就是说睡眠前有些准备工作是必须要完成的。那么此状态下,其实还是能够进行通信的,只有进入PreSleep状态,才会把相应的应用报文收发关闭,以及发送NM报文关闭。还有一点要声明的是,一般网络管理报文帧的接收不会关闭。(因为进入休眠后需要处于可唤醒状态。)

4 实例

4.1 以NM报文唤醒为例,大概说一下唤醒的过程:

  1. 在睡眠状态,车上网络状态是没有报文的,一旦车上BCM检测到要使用网络时,就是第一时间发出网络管理报文出来,这个时候我们的ECU也会收到该网络管理报文,因此会唤醒我们的ECU。
  2. 首先我们的ECU的收发器收到NM报文后,告诉芯片要唤醒了,这个时候就会给控制器供电,然后程序就会初始化,进入BusSleep状态(ECU上电默认会进入此状态)。
  3. 接着进入RepeatMsg模式,这个时候会迅速发出第一帧NM报文,会快速发出5帧NM报文(如周期10ms),让其他节点知道此 ECU 醒来了,然后会切换到正常周期的NM报文,如50ms,当然这个时候,系统也在初始化,应用报文也会到一定周期能够正常收发。
  4. 处于RepeatMsg状态一定时间后,会切换到NormalOpr模式,这个时候就会正常通信了。这个模式下NM报文是以一定周期发送的如500ms,告诉所有节点我在正常通信。其实NM报文里面是有一些信息的,比如唤醒原因,用户数据等等,这些都可以去定义。

4.2 下面讲一下NM休眠的过程:

  1. 处于NormalOpr状态下,如果ECU不需要网络了,比如KL15断开,ECU这个时候就会选择释放网络。
  2. 释放网络就是从Normal状态切换到ReadySleep状态,此时会进行一些故障存储、下电前的装备工作,完成后。
  3. 等待一定时间就会进入到PreSleep状态,这个状态将会把应用报文和TX网络管理报文也关闭。
  4. 等待一定时间就会进入BusSleep状态,进入BusSleep后,会让控制器进入休眠。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
汽车电子基于OSEK的网络管理代码是指在汽车电子控制系统中,使用OSEK(开放式系统和环境)标准进行网络管理的代码。OSEK是一个应用于实时嵌入式系统的标准,提供了一个基于任务的操作系统和一些通信机制,用于管理和协调汽车电子系统中的各个模块和设备。 首先,汽车电子系统中的各个模块和设备需要进行通信和协作,以实现车辆的各种功能,例如引擎控制、制动系统、空调系统等。OSEK提供了一种标准的网络管理方式,通过定义一些数据结构和接口函数来管理这些通信的过程。 在这个基于OSEK的网络管理代码中,首先需要定义和创建不同的任务。每个任务代表一个特定的功能模块,例如引擎控制任务、传感器数据读取任务等。任务之间通过消息队列来进行通信和数据交换。在代码中,需要定义和初始化这些任务,并指定它们的优先级和调度方式,以确保系统的实时性和稳定性。 同时,还需要定义和配置支持通信的硬件接口和总线。例如,CAN总线是汽车电子通信中常用的一种总线。在代码中,需要配置CAN控制器、定义消息帧格式,以及定义消息过滤和接收处理等功能。 此外,在网络管理代码中还需要实现各种通信机制,以确保任务之间的数据传输和同步。例如,需要定义和实现消息队列的操作函数,包括发送消息、接收消息和处理消息等。这些操作函数会被应用于任务的代码中,以实现任务之间的通信。 总而言之,汽车电子基于OSEK的网络管理代码是为了实现汽车电子控制系统中各个模块和设备之间的通信和协调而设计的。通过使用OSEK标准,可以提高系统的可靠性、实时性和稳定性,从而实现更高级的车辆功能。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值