基于CAN总线技术的发动机起动控制策略研究
2020-06-04周在芳齐善东
张 莹,周在芳,齐善东
(中国重汽集团汽车研究总院,山东 济南 250002)
目前,越来越多的控制器应用在重型卡车上,传统的布线方式已无法满足传输速率的要求。以CAN为底层协议的J1939协议已广泛应用于重型卡车。本文主要介绍一种基于J1939协议的发动机CAN起动控制策略。
1 起动系统的组成
传统的起动系统由蓄电池、起动机、起动继电器和钥匙开关等组成。起动系统的工作原理是:启动钥匙开关,启动继电器在ECU的控制下吸合,由蓄电池提供电能,起动机将电能转化为机械能,带动发动机飞轮齿圈和曲轴转动,从而使发动机进入自行运转状态。起动系统的工作原理如图1所示。
图1 起动系统工作原理
2 基于CAN总线技术的发动机起动控制原理
日前,汽车网络研发不断深入,越来越多的控制器应用在重型卡车上。传统硬线的布线方式,传输数据的速率已远远不能满足,车载网络控制系统由此而生。车载网络控制的应用节省了汽车制造厂的开支,减少了硬线连接,便于汽车线路的维修工作,提高了车用信息的传输速率,同时提高了电控系统的可靠性。
本文介绍一种基于CAN总线技术的发动机起动控制策略。钥匙开关上电后,NANO发启动请求给ECU,ECU收到启动信号后,回复VIN码。NANO校验VIN码,校验成功后,发启动请求给ECU。CAN启动逻辑见图2。
图2 CAN启动逻辑
3 底层程序开发
ECU端负责对NANO发送的CAN消息帧进行解析并执行,包括CAN消息帧的发送和接收。本研究使用CodeWarrior集成开发环境,基于C语言完成CAN消息帧的发送和接收。
3.1 CAN数据接收模块
当NANO对ECU发送启动请求时,发动机ECU需要接收请求,编写ECU的CAN接收模块代码,对CAN报文进行接收。接收设计如下:
#define J1939_PGN_CANst 0x00EA00 //接收启动请求PGN
for(i=0;i<8;i++) //接收启动请求
{
Com_dPGNRQByte[i]=msg->data[i];
}
3.2 CAN数据发送模块
当ECU接收到启动请求后,发送VIN码给NANO验证。发送程序设计如下:
const vuint32_t J1939_idVIN_C=0x18EBFF00;//发送地址
static void J1939CalcVIN1(void) //发送数据赋值
{
J1939_VIN.B[0]=VIN_CA[0];
J1939_VIN.B[1]=VIN_CA[1];
J1939_VIN.B[2]=VIN_CA[2];
J1939_VIN.B[3]=VIN_CA[3];
J1939_VIN.B[4]=VIN_CA[4];
J1939_VIN.B[5]=VIN_CA[5];
J1939_VIN.B[6]=VIN_CA[6];
J1939_VIN.B[7]=VIN_CA[7];
}
J1939VINSend(J1939_idVIN_C,&J1939_VIN.B[0]);//发送VIN码
4 应用层程序开发
应用程序开发在MATLAB软件中进行。MATLAB是一款集算法开发、数据分析及数值计算为一体的可视化商业数学软件,是当今国际科学计算软件的先进代表。主要分为MATLAB和Simulink两部分,其中Simulink是MATLAB最重要的组件之一,为用户提供了图形化的工作环境。Simulink搭建模型如图3所示,本模型可以通过标定StSys_stCondActv_C选择不同的启动方式,硬线启动、CAN启动或者车下启动,操作灵活。
图3 CAN启动模型
5 实车验证结果
5.1 CAN报文的接收发送
实车验证,ECU收到Nano的启动请求如图4所示。
图4 CAN报文接收
ECU发送给Nano的VIN码如图5所示。
5.2 实车启动验证
图5 CAN报文发送
Com_stEngStrtReq为CAN启动信号,StSys_stRly为启动继电器启动信号,T15_st为15电状态。StSys_stCondActv_C为2时,系统的启动方式为CAN启动。实车启动验证详见图6。
6 结论
1)基于CAN总线技术的发动机起动控制策略,结构简单,控制灵活。
图6 实车启动验证
2)采用本文的基于底层收发CAN报文和Simulink模型的CAN启动策略是安全且有效的。