在电动汽车VCU软件开发中,要开发故障诊断模块,故障诊断类型中CAN报文通讯丢失的判定是非常重要的一个,当检测到某个控制器CAN报文通讯丢失,即接收不到该控制器的有效CAN信号,需要根据通讯丢失的判断作出相应的故障处理,以保证整车行车安全。本文通过ABS通讯丢失Simulink模块的搭建,介绍Simulink中搭建CAN通讯丢失的方法。
目录
一、CAN通讯丢失诊断开始判定条件
CAN通讯故障判定会根据该控制器的唤醒方式不同开始进行通讯丢失判定的时间不同,钥匙ON挡唤醒的控制器,从接收到ON挡信号开始,进行通讯丢失判断,VCU唤醒信号唤醒的控制器,VCU发出唤醒信号后开始进行通讯丢失判定。ABS为ON挡唤醒控制器,当钥匙拧到ON挡后,控制器就供电启动发送报文,一般为了防止在控制器唤醒启动过程中误判通信故障,一般对此条件进行延迟判定,比如接收到ON挡唤醒信号后3s开始进行ABS CAN通讯丢失故障判定。
二、CAN通讯丢失模块架构
1、输入信号
ABS1_Error:ABS1报文丢失错误
ABS2_Error:ABS2报文丢失错误
2、输出信号
ABS_CANTimeOut_Flt:判定为ABS通讯丢失故障
3、通讯故障判定触发条件
VDIAG_KeyONTimeoutChk_Flg:故障诊断模块钥匙触发通讯丢失判断标识位,其中使能触发标识在库浏览器中搜索Enable,并添加至通讯丢失判定条件模块内即可
4、通讯故障判定原理
ABS共有2帧报文发出,在对ABS CAN报文进行解包,并勾选output error后,会输出两个ABS错误标识,ABS1_Error、ABS2_Error(CAN解包模块相关介绍在之前发布的《实例讲解Simulink应用层开发CAN报文解包及CAN信号设置方法》有详细介绍,如要了解可以查看),当ABS1 或ABS2 CAN信号丢失超过规定阈值则报ABS通讯丢失故障
三、CAN通讯丢失判定策略及模型搭建
1、CAN通讯丢失判定策略
10个周期内丢失报文超过4帧判定为报文丢失,10个周期内报文未丢失解除通讯丢失故障
2、报文脉冲模块
为了检测连续10个周期内丢失报文帧数,首先需要根据该报文周期输出报文脉冲,即经过一个周期输出一次脉冲信号1,Cycle_Count_Flg=1
3、通讯丢失模块搭建
1)单个报文周期内通讯丢失判定模块
当脉冲信号为1时,说明经过一个报文周期,此时如果接收到的CAN_Error_Flg等于1说明该报文此周期存在丢失,输出信号为1,如果此时接收到的CAN_Error_Flg等于0,说明该报文此周期不存在丢失,输出信号为0,作为后边计数模块的输入信号。其中S-R模块为锁存器模块
2)通讯丢失次数计数模块
当Flg=1时,如果i≥10则将i赋值为0,如果i<10,则以数组形式输出数组中第i个数值,i初始值为0,输出数组值范围为Array[0]-Array[9]共10个值
3)通讯丢失个数计数及通讯丢失故障判定模块
a、对Flg进行计数,即计算当前共累计通过了多少个报文周期,当累计≥10个报文周期时,输出1
b、输出数组中的数字代表之前10个报文周期通讯丢失的状态,对数组Array求和即得到从计数开始不大于10个周期内报文丢失的帧数,当从计数开始不大于10个周期内报文丢失帧数≥4时,判定为CAN通讯丢失,输出1;当从计数开始不大于10个周期内报文丢失帧数≤0时,判定为CAN通讯丢失恢复正常
c、在累计报文周期判定≥10为真时,即通过了10个周期,且之前10个周期报文丢失帧数≥4,即判定为ABS1报文CAN通讯丢失
4)报文通讯丢失判定模块如下图所示,ABS2采用同样的判定方式,复制该模块运用至ABS2即可
5)完整的CAN通讯丢失触发及判定模型
四、CAN通讯丢失模块仿真测试验证
1、报文脉冲模块仿真测试
1)将报文周期设置为20ms,并添加Scope观测输出的Cycle_Count_Flg
2)在菜单栏建模-模型设置进行配置参数设置,仿真时间设置为1s,求解器类型为定步长,离散(无连续状态),固定步长为0.01s
3)选择菜单栏调仿真-运行,模型运行完成后,打开Scope结果
4)仿真结果,每20ms输出的Cycle_Count_Flg值置1一次
2、CAN通讯丢失模块仿真测试
1)将CAN通讯丢失模块单独新建一个模型文件
2)设置模型配置参数
3)添加Signal Editor及Scope模块(Signal Editor模块设置方法见之前发布的《实例讲解Simulink开关信号滤波处理、信号解析及仿真测试验证方法》)
4)设置测试输入数据
5)选择仿真-运行,运行模型
6)查看仿真结果,可以看出仿真结果判定的CAN通讯丢失结果符合预期
五、总结
本文通过ABS通讯丢失故障触发、判定条件Simulink模型的搭建和仿真的讲解,介绍了一种控制器CAN通讯丢失故障判定的方法和建模方法,希望能给相关技术人员带来一定参考和帮助。
标签:仿真,10,Simulink,通讯,报文,实例,判定,丢失,模块 From: https://blog.csdn.net/qq_43011586/article/details/142080772