冯少婵,朱景海,姜 浙,王东生,王鲁姣
(北京汽车研究总院有限公司,北京 101300)
随着社会经济的发展,汽车已经成为人类社会中不可缺少的交通运输工具。而中国已经是世界上汽车保有量最大的国家,且每年仍在快速增加,汽车工业成为国家的支柱产业。随着车身控制技术的发展,人们对于汽车的使用性、便利性的要求也越来越高。
目前,汽车电器件越来越多,对于汽车发电机的功率及蓄电池的容量也提出了更高的要求。众所周知,多数汽车在点火时,需要蓄电池供电起动机打火,所以对于汽车在发动机不工作的状态下,为了保护蓄电池的电量不流失,车身控制模块休眠问题是整车设计时必不可少的考虑因素之一。
某车型在设计开发阶段中的实车动态测试过程中发现车辆正常遥控闭锁后,此车辆偶发以下故障:故障车辆进行设防操作时,能正常设防,中控锁门锁都已经上锁,但是转向灯会闪烁2次 (车辆正常设防时,转向灯常亮;车辆正常解防时,转向灯闪烁2次)。使用CANoe多次监测网络报文,故障车辆偶发未处于设防状态,故此车辆偶发不能进入休眠状态。
1)通过CAN Lock发起设防
当所有车门关闭,从CAN信号的PEPS上锁命令LOCK_CMD==Lock all doors被BCM成功执行,ATWS功能将发起设防过程,BCM进入设防状态。
2)机械钥匙设防
在解防状态下当所有车门 (4门1盖1行李厢)关闭,机械钥匙闭锁 (BCM必须执行闭锁动作),此时可以进入设防状态。
3)二次上锁发起设防
当二次上锁命令 (RELOCK)成功执行,ATWS功能将直接进入设防状态 (仅限于遥控闭锁)。
4)行李厢再闭锁设防
在设防状态下,单独解行李厢锁后,直到行李厢再次关闭,5 s后则重新进入设防状态。并按外灯系统文档遥控信号指示章节中遥控闭锁的灯光功能执行闭锁闪烁。
车辆正常设防时,灯光报警状态为转向灯常亮;车辆正常解防时,灯光报警状态为转向灯闪烁2次。防盗系统框图如图1所示。
当不再有高功率模式的请求应用时 (也就是说,没有任何输入端口被激活,永久性激活的端口输入将被忽略),BCM将进入低功率模式。此外,停发CAN总线数据,所有唤醒信号无效5s后停止发送报文并发送睡眠的请求。
当以下所有条件有效时,BCM能够进入低功率模式:点火钥匙状态为OFF位置 (点火钥匙KL R状态将使BCM处于高功率模式);节点输出被关闭;危险警告灯未被激活;制动灯开关未被激活;位置灯开关和近光灯开关未被激活;近光灯或位置灯没有被外部灯光舒适性功能激活;防盗报警系统处于设防或解防 (强制休眠)状态;BCM不处于正在等待自动重新闭锁的状态;BCAN处于休眠模式;LIN处于休眠模式;对任何可控的负载,没有输出 (如:门锁执行器、尾门锁电机输出);所有软件定时器都停止。
图1 防盗系统框图
满足休眠条件的判断逻辑如图2所示。
从软件逻辑角度分析,BCM须同时满足如下条件才能进入休眠状态:点火钥匙状态OFF;对可控负载无输出;节点输出关闭;BCM不处于正在等待自动重新闭锁的状态;唤醒源信号未被激活;防盗系统处于设防状态;BCAN/LIN处于休眠模式;定时器都停止。
图2 满足休眠条件的判断逻辑图
对CANoe录取的报文进行分析,排查结果报文符合休眠,影响休眠的条件不在报文中。通过多次测试并确定故障现象,发现灯光提醒现象和解锁现象一致。初步怀疑是车辆设防后某种条件触发立即解防。由于锁会在第1次锁动作后屏蔽锁指令,正好可以解释中控锁与门锁没有解锁的现象。
经过多次对故障车进行CANoe报文采集,故障车上保持点火钥匙处于OFF状态、关闭故障车上所有的负载,并且录制的网络报文中显示网络点火钥匙为OFF状态、未有输出信号发送、节点输出关闭、唤醒源信号未被激活、BCM不处于正在等待自动重新闭锁的状态。
防盗系统并未处于设防状态,BCAN处于未休眠的状态。
多次对故障车进行故障复现和报文分析,网络报文上发现当OFF挡后,EMS仍然发送一段时间认证成功EMS5_St_AuthenticatedResult==authentication success的事件信号(CAN信号)延迟发送30 s。
然后排查软件与模型,发现当BCM处于设防后接收到EMS认证成功信号会立即解防,然后在台架上仿真EMS认证成功信号,遥控设防车辆,出现灯光闪烁2次,中控锁闭锁一次,与故障车的现象一致,确认是设防后,立即被EMS认证成功信号解防的。
然后开始梳理BCM休眠模块代码逻辑,针对每一个条件进行Debug,排查每一个可能导致不休眠的条件。经过一个条件的排查,发现当BCM通过遥控闭锁后,车辆需要是设防状态或者重新解锁中控锁,车辆才可以休眠。而此时车辆并不符合休眠条件,所以可以确认问题是条件冲突造成的。
导致不休眠代码:
/*lock check*/
if(lockflag==FALSE)
{
if((g_outCentralLockupSts==SYS_LOCKSRC_KEY)
||(g_outCentralLockupSts==SYS_LOCKSRC_PEPS))
{
lockflag=TRUE;
}}
else
{
if((g_outCentralUnLockCmd==ON)
||(g_outTrunkReleaseCmd==ON))
{
lockflag=FALSE;
}}
/*wake up source*/
/*RKELINCANKL15ACCKEYINPOSLAMPLOWBEAMBRAKETRUNK*/
if(((g_inIgnOnSts==OFF)
&&(g_inIgnAccSts==OFF)
&&(g_BrakeLightSwitchHw==OFF)
&&(g_inLowBeamSWSts==OFF)
&&(g_inRKELockSts==OFF)
&&(g_inRKEUnlockSts==OFF)
&&(g_inRKETrunkSts==OFF)
&&(g_inPositionLampSWSts==OFF)
&&(g_outPositionLampCmd==OFF))
&&(g_inTrunkSts==ON)||(g_inHoodSts==ON)
||(LockFlag==FALSE))))
{
contStartFlag=TRUE;
if(g_inTrunkSts==ON)
{
sleepSrc|=SYS_EIGHTMINUTE_SLEEP_SRC_TRUNK;
……
……
}
从代码可知,当lockFlag为FALSE时才可休眠,而此路径中通过PEPS闭锁的,lockFlag被置为TRUE,然后一直再等待中控锁解锁和后备厢解锁 (此代码在车辆出游解防时的检测睡眠路径)。
无法休眠的状态如图3所示。
图3 无法休眠的状态图
从软件分析,进入休眠的路径有3条:第1条路径,ATWS设防,输入输出无效,近光灯、位置灯开关无效;第2条路径,ATWS设防,近光灯开关或位置灯开关有效;第3条路径,其他都不符合时判断锁状态判断,若是中控锁未经PEPS/钥匙闭锁,其他条件满足,可以休眠。若是中控锁通过PEPS/钥匙闭锁,需要后备厢解锁或者中控解锁才可以休眠或者通过。潜在的默认中控锁通过PEPS/钥匙闭锁后车辆一定处于设防状态,此条件与本次现象不符,才导致车辆无法休眠。而此现象是中控锁PEPS/钥匙闭锁后,但紧接着又被EMS认证信号给解防。不符合车辆休眠条件,所以无法休眠。
点火钥匙OFF挡位状态,收到遥控钥匙/PEPS/左前门机械钥匙闭锁等网络信号后,接收到EMS认证成功信号后不进行认证信号解防处理操作;统一只使用设防状态而不使用锁状态,车辆解防时检测睡眠路径时,不再等待中控锁和尾门锁而使用设防状态进行检测;点火钥匙OFF挡位状态,EMS发送认证成功EMS5_St_AuthenticatedResult==authentication success的事件信号 (CAN信号)延迟发送时间缩短到毫秒级。