張 瑩,周在芳,齊善東
(中國重汽集團汽車研究總院,山東 濟南 250002)
目前,越來越多的控制器應用在重型卡車上,傳統的布線方式已無法滿足傳輸速率的要求。以CAN為底層協議的J1939協議已廣泛應用于重型卡車。本文主要介紹一種基于J1939協議的發動機CAN起動控制策略。
傳統的起動系統由蓄電池、起動機、起動繼電器和鑰匙開關等組成。起動系統的工作原理是:啟動鑰匙開關,啟動繼電器在ECU的控制下吸合,由蓄電池提供電能,起動機將電能轉化為機械能,帶動發動機飛輪齒圈和曲軸轉動,從而使發動機進入自行運轉狀態。起動系統的工作原理如圖1所示。

圖1 起動系統工作原理
日前,汽車網絡研發不斷深入,越來越多的控制器應用在重型卡車上。傳統硬線的布線方式,傳輸數據的速率已遠遠不能滿足,車載網絡控制系統由此而生。車載網絡控制的應用節省了汽車制造廠的開支,減少了硬線連接,便于汽車線路的維修工作,提高了車用信息的傳輸速率,同時提高了電控系統的可靠性。
本文介紹一種基于CAN總線技術的發動機起動控制策略。鑰匙開關上電后,NANO發啟動請求給ECU,ECU收到啟動信號后,回復VIN碼。NANO校驗VIN碼,校驗成功后,發啟動請求給ECU。CAN啟動邏輯見圖2。

圖2 CAN啟動邏輯
ECU端負責對NANO發送的CAN消息幀進行解析并執行,包括CAN消息幀的發送和接收。本研究使用CodeWarrior集成開發環境,基于C語言完成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];
}
當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碼
應用程序開發在MATLAB軟件中進行。MATLAB是一款集算法開發、數據分析及數值計算為一體的可視化商業數學軟件,是當今國際科學計算軟件的先進代表。主要分為MATLAB和Simulink兩部分,其中Simulink是MATLAB最重要的組件之一,為用戶提供了圖形化的工作環境。Simulink搭建模型如圖3所示,本模型可以通過標定StSys_stCondActv_C選擇不同的啟動方式,硬線啟動、CAN啟動或者車下啟動,操作靈活。

圖3 CAN啟動模型
實車驗證,ECU收到Nano的啟動請求如圖4所示。

圖4 CAN報文接收
ECU發送給Nano的VIN碼如圖5所示。

圖5 CAN報文發送
Com_stEngStrtReq為CAN啟動信號,StSys_stRly為啟動繼電器啟動信號,T15_st為15電狀態。StSys_stCondActv_C為2時,系統的啟動方式為CAN啟動。實車啟動驗證詳見圖6。
1)基于CAN總線技術的發動機起動控制策略,結構簡單,控制靈活。

圖6 實車啟動驗證
2)采用本文的基于底層收發CAN報文和Simulink模型的CAN啟動策略是安全且有效的。