APP下载

电动汽车CAN通讯故障监控

2019-08-21崔海贝

客车技术与研究 2019年4期
关键词:总线计数整车

崔海贝

(山东沂星电动汽车有限公司,山东临沂 276000)

CAN总线所采用的载波监控、多主掌控、冲突避免的通讯模式[1],使其在多节点通讯上具有很高的通讯效率。此外其差分特性所带来的高容错率,使其能在电磁干扰等恶劣环境下良好地工作。基于上述优点,CAN总线在电动汽车上得到了广泛应用[2]。由于车辆各控制单元信息的获取以及指令的发送都需要基于CAN通讯,因此一旦发生通讯故障,轻则车辆部分功能受限,重则车辆失控。本文以某电动汽车为例,选取整车控制器作为CAN网络内的监控单元,对CAN通讯的帧接收监控以及节点心跳监控方法进行阐述;通过对比分析,提出一种适用于电动汽车的综合性监控方案,以提高电动汽车CAN通讯故障监控的可靠性。

1 监控方法概述

1.1 监控单元选择

随着科技的进步,各种功能的车载电器设备越来越多,大部分设备之间都需要进行数据交互,这就导致车辆上通讯节点增多。若这些节点共用同一路CAN总线,将造成总线拥堵,因此在CAN总线设计时往往需要根据通讯结构、节点功能以及实时性要求,将其划分为多路CAN总线[3]。在众多节点中,整车控制器(VCU)作为汽车的核心控制单元,除了需要通过CAN总线从其他节点获取各种信息以作控制策略判断外,还需要通过CAN总线向各执行单元发送指令以控制车辆的行驶以及上下电等。因此整车控制器(VCU)往往同时位于多路CAN总线中,并作为CAN总线网络的网关,负责各路总线上的数据交互[4]。图1为某款电动汽车的CAN总线拓扑结构,其中整车控制器作为网关同时位于动力CAN与车身CAN两路总线中。

图1 CAN拓扑结构

基于整车控制器的上述特性,选择它作为监控单元可以对各路CAN总线节点进行全面监控[5],同时还能在监控到通讯故障时进行及时响应。

1.2 帧接收监控方法

该方法对帧的接收进行计时[6]。由于各数据帧均为周期性发送,因此若在规定时间内未接收到某一帧,则说明该帧出现丢帧故障或者发出该帧的节点出现故障。由于帧的数量较多,而处理器的定时器资源有限,故这里采用为各帧单独设置计数变量且共用同一定时周期的计时方法。即在周期性执行的故障诊断任务中,对各帧的计数变量值进行累加,若接收到了某一帧,则将该帧的计数变量值清零,这样该帧的计数变量值与任务周期之积即为该帧的计时时间;若某一帧的计数变量值超过了预设的故障阀值,则说明在规定时间内未接收到该帧。

1)接收处理。当整车控制器接收到某一帧报文后,会离开当前任务进入接收中断,在接收中断中对该帧的计数变量值进行清零处理。现以表1中的4帧为例对该监控方法进行阐述。

表1 CAN节点及其数据帧

首先对帧ID进行判断,若帧ID为A,则说明该帧数据为驱动控制器(MCU)发送至整车控制器的电机转速,对该帧进行数据解析及更新,并将帧A的计数变量值清零;若不为A,则继续判断帧ID是否为B。注意帧C与帧D非整车控制器所需数据,故收到这两帧时,只需要对这两帧的计数变量值清零,而不需要对其进行解析。若还有其他帧,处理方法同上。

2)故障诊断。在周期性执行的故障诊断任务中依次对各帧的接收时间进行诊断,诊断流程如图2所示,主要有:

①对各节点对应的计数变量值进行累加。

②对A帧的计数变量值进行判断,若其大于等于预设的二级故障阀值,则将A帧故障等级置为二级;若其大于等于预设的一级阀值,则将A帧故障等级置为一级;若其小于预设的一级阀值,则说明此时A帧未超时,将A帧故障等级置为零级。

③对帧B的诊断流程同帧A,但需要将故障阀值更换为帧B的故障阀值。若还有其他帧,诊断以及处理方法同上。

图2 帧接收故障诊断流程

1.3 节点心跳监控方法

该方法需要各节点自身创建一个周期性的心跳任务[7],在该任务里对自身心跳值进行自增,然后将心跳值发送至CAN总线上。整车控制器会对各节点的心跳值进监控,若某节点心跳值在规定的时间范围内未发生变化,则说明该节点出现故障导致心跳值停止更新。

1)接收处理。整车控制器接收到某一帧报文后,会离开当前任务进入接收中断对接收到的帧进行判断,若为心跳帧,则对其相应的节点心跳值进行更新。现以表2中的4帧为例对该监控方法进行阐述。

表2 CAN节点及其数据帧

首先对帧ID进行判断,若帧ID为A,说明该帧数据为驱动控制器(MCU)发送至整车控制器的电机转速,非心跳帧,故只对该帧进行数据解析及更新;若帧ID为B,说明该帧为MCU发送至整车控制器的心跳值,故对该心跳帧进行数据解析并更新MCU心跳值;若帧ID为C,说明该帧数据为BMS发送至仪表的单体电压,由于该帧非心跳帧且整车控制器不需要采集该数据,故将该帧进行过滤,不对其进行处理。若还有其他帧,处理方法同上。

2)故障诊断。在周期性执行的故障诊断任务中依次对各节点的心跳值进行诊断,诊断流程如图3所示,主要有:

①首先判断A节点当前的心跳值与其在上一次故障诊断任务中的心跳值是否相等,若相等,说明从上次故障诊断任务到本次故障诊断任务之间的这段时间内A节点的心跳值未发生变化,则将A节点计数变量值加1。

②若不相等,说明这段时间内接收到了A节点发出的新心跳值,则可判断出A节点仍然在线且正常工作,将A节点的计数变量值减1。

③若节点心跳一直正常,计数变量值将不断自减,为保证计数变量值始终大于等于零,需要对计数变量进行处理,即当判断出计数变量值为负值时,对其清零。

④处理完节点计数变量后,还需要对其进行诊断。若其值大于等于二级阀值,则将节点A的通讯故障等级置为二级;若其值大于等于一级阀值,则将通讯故障等级置为一级;若其值小于一级阀值,则说明当前未监控到A节点通讯异常,将故障等级置为零级。

⑤若还有其他节点,可按上述方法继续进行诊断。但各节点心跳周期可能有所不同,因此故障阀值要进行相应的变更。

图3 节点心跳故障诊断流程

2 监控方案设计

2.1 两种监控方法对比分析

两种监控方法的出发点不一样,故监控效果也有所不同:

1)节点心跳监控方法以节点作为监控对象,通过节点发出的心跳帧来监控节点是否掉线,但无法监控到除心跳帧以外的丢帧故障。而帧接收监控方法则是以节点发出的帧作为监控对象,除了节点故障外,还能监控丢帧故障。因此帧接收监控更加细致,有利于整车控制器根据故障帧对车辆行驶的重要程度,作出不同的故障处理策略。

2)节点心跳监控需要为每个节点增加一帧心跳帧,增加了总线的负载率[8-9];而帧接收监控在原有的通讯基础上即可实施,不需要增加额外的帧。

3)在故障诊断中,帧接收监控只需要对帧的计数变量值进行判断,而节点心跳监控除了对计数变量值进行判断,还需要对心跳是否发生变化进行判断,所以在流程上帧接收监控更为简单。

4)车辆CAN总线上节点数量远少于帧的数量,因此节点心跳监控比帧接收监控更节省处理器资源。

5)帧接收只对接收进行监控,而不对帧内部的数据做诊断,因而无法诊断出某些节点故障,如节点程序运行出现问题时,虽然节点能发送数据,但发送的数据为空值或无变化的值。节点心跳监控则可诊断出该种类型的故障。

2.2 一种新的监控方案设计

作为监控单元的整车控制器若是出现故障,则会导致车辆失控,因此还需要对整车控制器进行监控。由于整车控制器出现故障时,只能人为进行干预,因此这里采用仪表作为整车控制器的监控单元,仪表一旦监控到整车控制器出现故障,则通过蜂鸣报警的方式通知驾驶员采取紧急措施。由于仪表不在动力CAN总线上,因此其无法对整车控制器在动力CAN总线上发出的控制指令进行帧监控,且仪表本身无法控制车辆行驶,即使监控到了帧故障,也无法做进一步的处理,因此其只需监控整车控制器是否正常工作即可,故这里采用节点心跳监控方法来对整车控制器进行监控。综合考虑节点心跳监控以及帧接收监控这两种方法的优缺点,现制定出新的监控方案,其结构如图4所示。

图4 监控结构

1)整车控制器只对影响车辆安全行驶的关键帧进行帧接收监控,以节约处理器资源。一旦发现帧故障,整车控制器将根据故障等级进行如降功率、延时断电等相应的处理。同时将该帧的故障码通过CAN总线发送至仪表。仪表进行蜂鸣报警,提醒驾驶员采取安全措施,并显示故障码,便于维修人员排查故障。

2)整车控制器对无关键帧的节点进行节点心跳监控。当监控到节点故障时,整车控制器向仪表发送该节点对应的故障码,仪表点亮故障灯并对接收到的故障码进行显示[10-12]。

3)整车控制器向仪表发送自身心跳,仪表对其进行心跳监控。当监控到整车控制器心跳停止时,仪表进行蜂鸣报警,提醒驾驶员进行紧急制动。

上述方案既能减小帧监控所带来的的资源占用,又能将监控覆盖到包括作为监控单元的整车控制器在内的所有节点。且当通讯故障发生时,还可通过仪表对其进行显示与报警,提醒驾驶员采取应急措施,帮助维修人员快速对故障进行定位。

3 结束语

本文以电动汽车为例,分别对CAN通讯节点监控方法以及帧监控方法进行了阐述,并对这两种方法进行了对比分析,提出了一个适用于电动汽车的综合性监控方案,使电动汽车CAN通讯故障监控更加全面可靠,能否为车辆的行驶提供安全保障还有待实际应用检验。

猜你喜欢

总线计数整车
基于滑门MPV的整车宽度优化
基于六自由度解耦分析的整车悬置设计
人机工程学在整车设计生产过程中的应用
基于启停控制系统的整车安全性策略
关于CAN总线的地铁屏蔽门控制思路论述
古代的计数方法
古代的人们是如何计数的?
Q&A热线
PCI9030及其PCI总线接口电路设计