徐碩繁,戴飛,吉爽
(長(zhǎng)春理工大學(xué)光電信息學(xué)院, 吉林長(zhǎng)春 130000)
隨著汽車電子工業(yè)的高速發(fā)展,汽車越來越向著電氣化、智能化控制方向發(fā)展,帶來了用戶對(duì)于汽車的電子電器越來越苛刻的控制要求。傳統(tǒng)的電子電器架構(gòu)已經(jīng)嚴(yán)重制約了其發(fā)展,需要引入網(wǎng)絡(luò)化控制[1]。CAN總線技術(shù)廣泛應(yīng)用在工業(yè)領(lǐng)域,其高可靠性和強(qiáng)實(shí)時(shí)性[2]給汽車智能電氣化帶來了可能,在汽車控制系統(tǒng)中,CAN總線已經(jīng)從動(dòng)力總成控制系統(tǒng)中逐步延伸到汽車車身控制系統(tǒng)中,為汽車車身控制帶來了方便。
CAN(Controller Area Network)即控制器局域網(wǎng)[3],是德國(guó)著名的Bosch 公司為了解決現(xiàn)代車輛中眾多ECU之間的數(shù)據(jù)交換問題提出的一種現(xiàn)場(chǎng)總線結(jié)構(gòu)的通信方式。該總線通信的最高速率可達(dá)1 Mb/s,總線通信的長(zhǎng)度大約為40 m[4]。以多主控制方式工作,整個(gè)總線系統(tǒng)相連的各個(gè)單元沒有類似于“地址”的信息即系統(tǒng)具有柔軟性。與常用的通信總線相比(IIC、SPI總線等),CAN總線的通信方式具有突出的實(shí)時(shí)性、可靠性和柔軟性,是目前使用最廣泛的一種汽車網(wǎng)絡(luò)通信[5]。
其主要特征為:
(1)多主控;
(2)固定格式發(fā)送消息;
(3)網(wǎng)絡(luò)節(jié)點(diǎn)設(shè)置靈活,延遲時(shí)間必須保證;
(4)通信速度設(shè)置靈活,同一網(wǎng)絡(luò)速度必須一致;
(5)每條消息都有優(yōu)先級(jí);
(6)錯(cuò)誤檢測(cè)功能、錯(cuò)誤恢復(fù)功能和錯(cuò)誤通知功能;
(7)只要總線處于空閑,根據(jù)報(bào)文優(yōu)先級(jí)自動(dòng)重新傳輸。
MCS08DZ60微控制器[6]Freescale公司HCS08系列8位單片機(jī)中的一種,其內(nèi)部結(jié)構(gòu)主要由單片機(jī)基本部分和CAN功能塊部分組成?;窘Y(jié)構(gòu)包括:中央處理器單元HCS08(CPU)、1個(gè)24通道12位分辨率ADC、2個(gè)異步串行通信口SCI并支持LIN2.0和SAE J2602協(xié)議、2個(gè)同步串行通信口SPI和IIC、8通道輸入捕捉/輸出比較定時(shí)器、53個(gè)通用獨(dú)立數(shù)字I/O口和1個(gè)專用輸入I/O(其中24個(gè)具有外部中斷及喚醒功能),在片內(nèi)還擁有60 kB的Flash、4 kB的RAM和2 kB的EEPROM。其中CAN功能塊包括兩個(gè)兼容CAN2.0A/B協(xié)議的MSCAN控制器組成。這些豐富的內(nèi)部資源和外部接口資源可以滿足ECU對(duì)各種數(shù)據(jù)的處理、CAN網(wǎng)絡(luò)數(shù)據(jù)的發(fā)送和接收。芯片集成了兩個(gè)MSCAN12模塊,能夠?qū)崿F(xiàn)高低速CAN網(wǎng)絡(luò)的網(wǎng)關(guān)節(jié)點(diǎn)功能。
MSCAN控制器是Motorola Scaleable CAN的縮寫[7],而HCS08系列MCU上的CAN控制器是通過MSCAN12模塊實(shí)現(xiàn)的,其結(jié)構(gòu)如圖1所示,它遵循CAN2.0A/B協(xié)議,支持標(biāo)準(zhǔn)和擴(kuò)展數(shù)據(jù)幀;并且集成了除收發(fā)器外CAN總線控制器的所有功能,此外它還采用了5個(gè)先進(jìn)先出(FIFO)的緩沖器機(jī)制改善了實(shí)時(shí)性能,簡(jiǎn)化了應(yīng)用軟件的設(shè)計(jì)。其中還支持睡眠、關(guān)機(jī)和MSCAN使能3種低功耗模式。CAN報(bào)文在發(fā)送時(shí),MCU首先將要發(fā)送的數(shù)據(jù)發(fā)送到數(shù)據(jù)緩沖區(qū)中,然后通過軟件設(shè)置相關(guān)寄存器使其發(fā)出發(fā)送報(bào)文命令,數(shù)據(jù)通過固定格式組裝成報(bào)文后通過發(fā)送引擎送到TxCAN,再經(jīng)過外部的CAN收發(fā)器將數(shù)據(jù)送到CAN總線上。報(bào)文接收時(shí),接收引擎通過外部CAN收發(fā)器將CAN總線上的數(shù)據(jù)流引入RxCAN,經(jīng)過解碼、錯(cuò)誤和校驗(yàn)檢查,再經(jīng)由報(bào)文過濾器過濾后將數(shù)據(jù)送到接收緩沖區(qū),并通過中斷或標(biāo)志通知CPU讀取數(shù)據(jù)。
圖1 MSCAN12 內(nèi)部結(jié)構(gòu)圖
該車燈控制系統(tǒng)主要有左前車燈系統(tǒng)、左后車燈系統(tǒng)、右前車燈系統(tǒng)、右后車燈系統(tǒng)4個(gè)部分通過CAN總線連接組成。
考慮到整車網(wǎng)絡(luò)的實(shí)時(shí)性和簡(jiǎn)化網(wǎng)絡(luò)的連接,將這4個(gè)ECU單元連接到同一個(gè)CAN網(wǎng)絡(luò)控制系統(tǒng)中,對(duì)于響應(yīng)的實(shí)時(shí)性要求必須一致。由于車燈控制系統(tǒng)對(duì)實(shí)時(shí)性要求不高的特點(diǎn),設(shè)計(jì)該車燈控制系統(tǒng)網(wǎng)絡(luò)為傳輸速率為125 kb/s的低速CAN網(wǎng)??刂凭W(wǎng)絡(luò)拓?fù)鋱D如圖2所示。
圖2 車燈控制系統(tǒng)網(wǎng)絡(luò)結(jié)構(gòu)圖
每個(gè)ECU單元的基本CAN節(jié)點(diǎn)電路主要包括:帶有CAN控制器的微控制器MCU和用于數(shù)據(jù)收發(fā)的CAN收發(fā)器TJA1050。設(shè)計(jì)中使用的是Freescale 8位微控制器MC9S08DZ60,它帶有MSCAN的控制器,主要負(fù)責(zé)CAN的初始化和數(shù)據(jù)處理。CAN收發(fā)器的種類很多,主要有Philips的82C250、NXP的TJA1050以及Motorola的MC33388、33889、MC33989和MC33997等,這些CAN收發(fā)器之間很多都是可兼容的。此例中采用的是NXP的TJA1050 CAN收發(fā)器,它是一種CAN高速收發(fā)器[8]。CAN節(jié)點(diǎn)結(jié)構(gòu)框圖與部分實(shí)際電路圖如圖3所示。
圖3 CAN基本節(jié)點(diǎn)的結(jié)構(gòu)框圖及部分實(shí)際電路圖
每個(gè)ECU單元的基本車燈驅(qū)動(dòng)電路主要包括:微控制器MCU和用于驅(qū)動(dòng)車燈的ULQ2003以及控制車燈通斷電的繼電器。通過微控制器的I/O口結(jié)合ULQ2003來控制繼電器的通斷,從而實(shí)現(xiàn)車燈的控制。圖4為車燈驅(qū)動(dòng)控制電路圖。
圖4 車燈驅(qū)動(dòng)控制電路設(shè)計(jì)圖
CAN模塊軟件設(shè)計(jì)部分主要實(shí)現(xiàn)的功能是各節(jié)點(diǎn)的數(shù)據(jù)收發(fā)。根據(jù)圖2所示網(wǎng)絡(luò)結(jié)構(gòu)分布,對(duì)于實(shí)時(shí)性要求不高的車燈控制電路采用低速CAN網(wǎng)絡(luò),所設(shè)波特率為125 kb/s。CAN初始化程序如下所示:
void //初始化CAN;
init_can(void)
{
// 進(jìn)入初始化模式;
CAN0CTL0=1;
//設(shè)置CANE=1,初始化模式確認(rèn);
CAN0CTL1=0xc1;
//SJW=0; 分頻因子為4;
CAN0BTR0=0x03;
//SAMP=1;波特率=8/(4*16)=125k
CAN0BTR1=0xd8;
CAN0IDAC=0x10;
}
為了減少網(wǎng)絡(luò)資源的占用率、提高網(wǎng)絡(luò)通信實(shí)時(shí)性性能,在高低速的CAN網(wǎng)絡(luò)之間除了必要的通信外,其余各自網(wǎng)絡(luò)的報(bào)文是相互獨(dú)立傳輸?shù)?,這就需要使用MSCAN中的標(biāo)識(shí)符驗(yàn)收過濾器進(jìn)行報(bào)文的過濾,通過對(duì)于過濾器寄存器的設(shè)置實(shí)現(xiàn)這一功能。以下是CAN寄存器的驗(yàn)收寄存器與屏蔽寄存器的設(shè)置:
CAN0CIDAR0=0x51; //CAN0驗(yàn)收寄存器設(shè)置
CAN0CIDAR1=0x00;
CAN0CIDAR2=0x51;
CAN0CIDAR3=0x00;
CAN0CIDMR0=0xdf; //CAN0屏蔽寄存器設(shè)置
CAN0CIDMR1=0xff;
CAN0CIDMR2=0xdf;
CAN0CIDMR3=0xff;
以左車燈ECU作為整個(gè)車燈控制系統(tǒng)的外部I/O輸入檢測(cè)節(jié)點(diǎn),根據(jù)檢測(cè)的I/O數(shù)據(jù)做出相應(yīng)的動(dòng)作以及發(fā)送相應(yīng)的報(bào)文。當(dāng)駕駛?cè)藛T打開圖5所示真值表的任意一個(gè)燈的開關(guān)時(shí),左前車燈ECU會(huì)有兩種執(zhí)行狀態(tài):第一種直接I/O輸出,且一直輸出高電平該車燈常亮,直到該車燈開關(guān)關(guān)閉時(shí),I/O輸出低電平該車燈常滅;第二種通過CAN總線發(fā)送固定的報(bào)文,其他幾個(gè)車燈ECU接收到報(bào)文后,通過解析報(bào)文,再通過相應(yīng)的I/O輸出高電平該車燈常亮。如圖5所示為整個(gè)車燈系統(tǒng)常亮車燈的控制狀態(tài)圖及真值表。
圖5 車燈系統(tǒng)常量車燈控制狀態(tài)圖
當(dāng)駕駛?cè)藛T打開圖6所示真值表的任意一個(gè)燈的開關(guān)時(shí),左前車燈ECU執(zhí)行會(huì)有兩種狀態(tài):第一種直接IO輸出,且一直以固定頻率輸出高低電平,該車燈以固定頻率閃爍,直到該車燈關(guān)閉時(shí),IO輸出低電平;第二種通過CAN總線發(fā)送固定的報(bào)文,其他幾個(gè)車燈ECU接收到報(bào)文后,通過解析報(bào)文,再通過相應(yīng)的IO輸出固定頻率高低電平。圖6所示為整個(gè)車燈系統(tǒng)閃爍車燈的控制狀態(tài)圖及真值表。
圖6 車燈系統(tǒng)閃爍車燈控制狀態(tài)圖
通過RTC定時(shí)器產(chǎn)生一個(gè)100 ms的時(shí)間基準(zhǔn),實(shí)現(xiàn)控制燈光的閃爍以及CAN報(bào)文發(fā)送的測(cè)試。
此系統(tǒng)通過一些本地的按鈕模擬車身的車燈控制開關(guān)。
測(cè)試的具體過程是:給車燈控制系統(tǒng)上電,打開電源開關(guān)。當(dāng)把按鈕打到近光檔時(shí),近光燈點(diǎn)亮,繼續(xù)把按鈕打到遠(yuǎn)光燈時(shí),近光燈、遠(yuǎn)光燈同時(shí)點(diǎn)亮;當(dāng)按下剎車燈的開關(guān)時(shí),剎車燈點(diǎn)亮;當(dāng)按下倒車燈的開關(guān)時(shí),倒車燈點(diǎn)亮;當(dāng)把按鈕打到左轉(zhuǎn)檔時(shí),左轉(zhuǎn)指示燈會(huì)出現(xiàn)周期性(閃爍頻率10 Hz)的閃爍,把按鈕打到右轉(zhuǎn)檔時(shí),右轉(zhuǎn)指示燈會(huì)出現(xiàn)周期性(閃爍頻率10 Hz)的閃爍,把按鈕打到中間檔時(shí),左轉(zhuǎn)燈和右轉(zhuǎn)燈全部熄滅;當(dāng)按下警示燈開關(guān)時(shí),左轉(zhuǎn)向燈、右轉(zhuǎn)向燈同時(shí)周期性(閃爍頻率10 Hz)的閃爍,并且車身上的4個(gè)門燈全部打開。
為了監(jiān)測(cè)車燈控制系統(tǒng)的CAN網(wǎng)絡(luò)之間通信的準(zhǔn)確性和實(shí)時(shí)性,給出了一個(gè)典型的CAN報(bào)文監(jiān)測(cè)測(cè)試實(shí)例。通過這次測(cè)試,可以看到CAN報(bào)文在CAN網(wǎng)絡(luò)之間傳輸。
測(cè)試的具體過程是:首先在本地上位機(jī)的CANOE軟件中將仿真環(huán)境搭建好[9];其次將CANOE工具接入該網(wǎng)絡(luò)中。給整個(gè)系統(tǒng)上電,最后通過按鈕控制車燈節(jié)點(diǎn)的實(shí)際動(dòng)作,并通過上位機(jī)觀察CAN報(bào)文。測(cè)試結(jié)果界面如圖7所示。
圖7 CAN報(bào)文顯示及其控制結(jié)果顯示
文中給出了一個(gè)基于低速CAN網(wǎng)絡(luò)的汽車車燈控制的網(wǎng)絡(luò)設(shè)計(jì)方案,介紹了Freescale的8位單片機(jī)MC9S08DZ60在該CAN網(wǎng)絡(luò)中作為控制節(jié)點(diǎn)的軟硬件設(shè)計(jì),以及上位機(jī)對(duì)其報(bào)文進(jìn)行監(jiān)測(cè)顯示的結(jié)果。用此芯片設(shè)計(jì)的車燈控制電路具有結(jié)構(gòu)簡(jiǎn)單、易于升級(jí)、成本低廉但功能強(qiáng)大的特點(diǎn)。該網(wǎng)絡(luò)方案已經(jīng)在某車型的車身上試驗(yàn)成功,控制網(wǎng)絡(luò)及電路運(yùn)行穩(wěn)定,證明方案可行。采用CAN網(wǎng)絡(luò)來控制汽車車燈電器具有結(jié)構(gòu)簡(jiǎn)單、實(shí)時(shí)性好、可靠性高的優(yōu)點(diǎn),是現(xiàn)代汽車電器控制的發(fā)展趨勢(shì)。
參考文獻(xiàn):
[1]路園.OSEK網(wǎng)絡(luò)管理在汽車CAN系統(tǒng)中的研究[D].合肥:合肥工業(yè)大學(xué),2011.
[2]袁昊昀.車載CAN網(wǎng)絡(luò)管理策略研究[D].上海:同濟(jì)大學(xué),2008.
[3]饒運(yùn)濤,鄒繼軍,鄭勇蕓.現(xiàn)場(chǎng)總線CAN原理與應(yīng)用技術(shù)[M].北京:北京航空航天大學(xué)出版社,2003.
[4]翟躍.電動(dòng)汽車網(wǎng)絡(luò)管理系統(tǒng)的研究與實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2010.
[5]陳綱.基于CAN總線的OSEK/VDX直接網(wǎng)絡(luò)管理的研究與實(shí)現(xiàn)[D].南京:東南大學(xué),2015.
[6]MC9S08DZ60 Device User Guide[Z/OL].http:www.nxp.com.
[7]楊國(guó)田,白焰.Motorola68HC12系列微控制器原理、應(yīng)用與開發(fā)技術(shù)[M].北京:中國(guó)電力出版社,2003.
[8]黃忠能.基于OSEK標(biāo)準(zhǔn)的車載網(wǎng)絡(luò)管理系統(tǒng)的研究與應(yīng)用[D].太原:太原科技大學(xué),2009.
[9]湯志強(qiáng).汽車CAN網(wǎng)絡(luò)中OSEK網(wǎng)絡(luò)管理系統(tǒng)設(shè)計(jì)與優(yōu)化[D].合肥:合肥工業(yè)大學(xué),2014.