基于CAN總線的汽車組合儀表盤的設(shè)計
1. 概述
控制器局域網(wǎng)(Controller Area Network, 簡稱CAN) 是一種支持分布式和實時控制的串行通信網(wǎng)絡(luò),其主要特點(diǎn)是采用多主方式工作, 基于報文ID 并采用非破壞總線仲裁技術(shù)進(jìn)行優(yōu)先權(quán)仲裁,串行通信,事件觸發(fā)型,大大減少線束的數(shù)量。CAN總線協(xié)議最初是由德國BOSCH公司于20世紀(jì)80年代提出并用于汽車的,1993年形成國際標(biāo)準(zhǔn)ISO 11898-1。由于其高性能、高可靠性及獨(dú)特的設(shè)計,CAN越來越受到人們的重視,已經(jīng)廣泛應(yīng)用于汽車電子控制,目前已經(jīng)成為整車網(wǎng)絡(luò)中的主要通信方式。
在為某公司開發(fā)的汽車儀表盤控制系統(tǒng)中,由于整車網(wǎng)絡(luò)信息化的需要,希望采用總線方式,將儀表盤掛接在通信網(wǎng)絡(luò)上,通過需求分析,本系統(tǒng)采用NEC的專用汽車儀表控制器UPD780822芯片,UPD780822是NEC公司的專門為汽車儀表開發(fā)的一款8位微控制器。它具有以下一些主要特點(diǎn):4通道大電流輸出的步進(jìn)電機(jī)控制器,并可用于驅(qū)動十字交叉線圈;支持34×4 LCD驅(qū)動,可以顯示總里程、小計里程,還可顯示檔位及時鐘等信號;同UPD780822有一個CAN通道,支持CAN2.0A及CAN2.0B;還可以在出錯時自動重發(fā),響應(yīng)遠(yuǎn)程幀自動傳送;支持多報文,16個報文緩沖,可以彈性配置接收濾波;擁有8通道10位 A/D、3個串行口以及低電壓保護(hù)等功能。以上這些特點(diǎn)在汽車儀表中都有實際的運(yùn)用。系統(tǒng)框圖如圖1所示:
圖1
CAN 總線收發(fā)器選用英飛凌公司的TLE7259G,是英飛凌公司專門為車載網(wǎng)絡(luò)設(shè)計的CAN總線收發(fā)器,該器件具有極低電磁輻射,高抵抗共模干擾的差動接受電路,斷電時不影響總線狀態(tài), 針對汽車環(huán)境的總線插件保護(hù), 過熱保護(hù),對地及電源短路保護(hù)功能。
2.車載CAN總線儀表系統(tǒng)需求分析和設(shè)計
基于CAN總線的車用儀表系統(tǒng)主要要求完成以下兩項功能:(1)通過CAN總線接受各類汽車實時數(shù)據(jù),如車速數(shù)據(jù)、發(fā)動機(jī)轉(zhuǎn)速數(shù)據(jù)、冷卻水水溫、燃油液位、各類報警燈狀態(tài)等;
(2)將CAN總線接收的數(shù)據(jù),進(jìn)行處理,及時驅(qū)動步進(jìn)電機(jī),點(diǎn)亮或關(guān)閉相關(guān)LED燈,驅(qū)動LCD顯示里程數(shù)據(jù)等。UPD780822集成的CAN控制器支持4種幀,①數(shù)據(jù)幀;②遠(yuǎn)程幀;③錯誤幀;④超載幀。本文只用到了①和②幀格式,其中①用于接收來自節(jié)點(diǎn)的信息,②用于請求某個節(jié)點(diǎn)發(fā)送數(shù)據(jù),其示意圖如圖2所示
圖2
基于CAN總線的車用儀表系統(tǒng)的拓?fù)浣Y(jié)構(gòu)如圖3所示,儀表盤所需要的數(shù)據(jù)來自多個節(jié)點(diǎn),在車載CAN網(wǎng)絡(luò)中分為高速CAN和低速CAN,由于汽車儀表顯示系統(tǒng)的實時性不是很高,因而將儀表盤的節(jié)點(diǎn)放在低速CAN網(wǎng)絡(luò)中,它同高速CAN網(wǎng)絡(luò)的通信通過高低速CAN網(wǎng)關(guān)來實現(xiàn)。
圖3
對于節(jié)點(diǎn)消息設(shè)計在本應(yīng)用中,通信協(xié)議是由OEM廠商提供,所以本CAN通信主要是根據(jù)協(xié)議進(jìn)行消息報文的分配,UPD780822支持16路接收緩沖和2路發(fā)送緩沖,每路的數(shù)據(jù)最多可達(dá)8位,報文的分配如圖所示:
3.軟件設(shè)計
本系統(tǒng)的軟件全部采用C語言來實現(xiàn),UPD780822擁有2K內(nèi)部RAM,90KB的Flash,開發(fā)環(huán)境是NEC集成的IDE,它包括PM Plus 編譯器,QB780822仿真環(huán)境,QB780822支持軟件和硬件仿真,我們采用硬件在線仿真,仿真器是NEC的IEQUB78082.。
3.1 程序流程圖如下
3.2 CAN接收程序
為了便于程序的移植和修改,本接收程序定義了一個結(jié)構(gòu),部分代碼如下:
unsigned char InputCAN( unsigned char msg_num )
{unsigned char p;p=0;RUN = 0x01; /*開始接收*/
if(Receive_message[1].DSTAT.DN==1){p |= 1;
Buf_Speed=((int)Receive_message[1].DATA[0]<<8)|Receive_message[1].DATA[1];//接收車速數(shù)據(jù)Buf_Speed
Receive_message[1].DSTAT.DN=0;Receive_message[1].DSTAT.MUC=0;}
RUN = 0x01; /*開始接收*/
if(Receive_message[2].DSTAT.DN==1){p|=2;
Buf_Rpm=((int)Receive_message[2].DATA[0]<<8)|Receive_message[2].DATA[1];//接收轉(zhuǎn)速數(shù)據(jù)Buf_Rpm
Receive_message[2].DSTAT.DN=0;Receive_message[2].DSTAT.MUC=0;}
RUN = 0x01; /*開始接收*/
if(Receive_message[3].DSTAT.DN==1){p |= 4;
Buf_Fuel=((int)Receive_message[3].DATA[0]<<8)|Receive_message[3].DATA[1];//燃油數(shù)據(jù)Buf_Fuel
Receive_message[3].DSTAT.DN=0;Receive_message[3].DSTAT.MUC=0;}
RUN = 0x01; /*開始接收*/
if(Receive_message[4].DSTAT.DN==1){p |= 8;
Buf_Winker=((int)Receive_message[4].DATA[0]<<8)|Receive_message[4].DATA[1];//水溫數(shù)據(jù)Buf_Water
Receive_message[4].DSTAT.DN=0;Receive_message[4].DSTAT.MUC=0;}
RUN = 0x01; /*開始接收*/
if(Receive_message[5].DSTAT.DN==1){p |= 16;
Buf_Winker=((int)Receive_message[5].DATA[0]<<8)|Receive_message[5].DATA[1];//接收報警燈和指示信號Buf_Winker
Receive_message[5].DSTAT.DN=0;Receive_message[5].DSTAT.MUC=0;}
RUN = 0x01; /*開始接收*/
if(Receive_message[6].DSTAT.DN==1){p |= 32;
Buf_CanData=((int)Receive_message[6].DATA[0]<<|Receive_message[6].DATA[1];//接收其他數(shù)據(jù)Buf_CanData
Receive_message[6].DSTAT.DN=0;Receive_message[6].DSTAT.MUC=0;}
RUN = 0x01;/*開始接收*/
return p;//1:車速信號,2:轉(zhuǎn)速數(shù)據(jù);4:燃油數(shù)據(jù) 8:水溫數(shù)據(jù) 16:報警燈指示數(shù)據(jù) 32:其他數(shù)據(jù) 其他:接收數(shù)據(jù)無效
}
4.結(jié)束語
由于本儀表系統(tǒng)中采用了CAN 總線, 大大減少了儀表板與車載其它電子設(shè)備間通信用電纜的數(shù)量和接插件的數(shù)量和種類,提高了系統(tǒng)的魯棒性,同時系統(tǒng)通過充分利用車載網(wǎng)絡(luò)的優(yōu)勢,實現(xiàn)數(shù)據(jù)共享,降低了系統(tǒng)成本,提供汽車儀表的控制精度,本CAN通信軟件已經(jīng)通過驗證,可以滿足汽車儀表的通信要求,鑒于CAN 的應(yīng)用優(yōu)勢和發(fā)展前景,并考慮到它在國外尚未定型,在國內(nèi)也有很多應(yīng)用空白,我國汽車業(yè)可以在引進(jìn)、消化、吸收的基礎(chǔ)上,配合CAN的推廣工作抓緊制定符合國情的CAN技術(shù)標(biāo)準(zhǔn),形成自主產(chǎn)權(quán)的汽車控制網(wǎng)絡(luò)系統(tǒng)。