基于SAE J1939協(xié)議的CAN總線(xiàn)汽車(chē)儀表設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
汽車(chē)儀表是汽車(chē)與駕駛員進(jìn)行信息交流的窗口,是汽車(chē)信息的中心,能夠集中、直觀(guān)、迅速地反映汽車(chē)在行駛過(guò)程中的各種動(dòng)態(tài)指標(biāo),如行駛速度、里程、電系狀況、制動(dòng)、壓力、發(fā)動(dòng)機(jī)轉(zhuǎn)速、冷卻液溫度、油量、各種危險(xiǎn)報(bào)警。隨著科技進(jìn)步,汽車(chē)排放、節(jié)能、安全和舒適性等使用性能不斷提高,汽車(chē)電子控制程度也越來(lái)越高。汽車(chē)電子控制裝置必須迅速、準(zhǔn)確地處理各種信息,并通過(guò)儀表顯示出來(lái),使駕駛員能夠及時(shí)了解并掌握汽車(chē)的運(yùn)行狀態(tài),以妥善處理各種情況。
這里給出一種基于CAN(Controller Area Network)總線(xiàn)的汽車(chē)儀表設(shè)計(jì)方案。該儀表利用CAN總線(xiàn)使其成為車(chē)身網(wǎng)絡(luò)一部分,遵循SAE J1939協(xié)議讀取發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫等信息。儀表還能接收傳感器的車(chē)速、油量、油壓、制動(dòng)氣壓等信號(hào)并顯示,為駕駛員提供實(shí)時(shí)車(chē)輛工況。所設(shè)計(jì)的儀表主要應(yīng)用于重型運(yùn)輸車(chē)等領(lǐng)域,在某重型車(chē)輛工廠(chǎng)進(jìn)行的試驗(yàn)結(jié)果表明,該儀表能夠滿(mǎn)足數(shù)據(jù)可靠性及實(shí)時(shí)性等要求。
1 CAN總線(xiàn)及SAE J1939協(xié)議
1.1 CAN總線(xiàn)及SAE J1939協(xié)議簡(jiǎn)介
CAN總線(xiàn)屬于現(xiàn)場(chǎng)總線(xiàn)的范疇,是德國(guó)Bosch公司在20世紀(jì)80年代初為解決現(xiàn)代汽車(chē)中眾多的控制和測(cè)試儀器之間的數(shù)據(jù)交換而開(kāi)發(fā)的一種有效支持分布式控制或?qū)崟r(shí)控制的串行通信網(wǎng)絡(luò)。CAN總線(xiàn)的通信實(shí)時(shí)性強(qiáng),數(shù)據(jù)傳輸速率可高達(dá)1 Mb/s,通信介質(zhì)可以是雙絞線(xiàn)、同軸電纜或者光導(dǎo)纖維,通過(guò)標(biāo)準(zhǔn)的插接件能夠方便的連接。CAN總線(xiàn)的數(shù)據(jù)通信具有突出的可靠性、實(shí)時(shí)性和靈活性,是目前應(yīng)用最廣泛的一種汽車(chē)總線(xiàn)。
SAE J1939協(xié)議是美國(guó)汽車(chē)工程師協(xié)會(huì)SAE(Societv of Automotive Engineer)發(fā)布的以CAN2.0B作為網(wǎng)絡(luò)核心協(xié)議的車(chē)輛網(wǎng)絡(luò)串行通信和控制協(xié)議。J1939是參照ISO的開(kāi)放式數(shù)據(jù)互聯(lián)模型定義的7層基準(zhǔn)參考模型而制定的。該協(xié)議明確規(guī)定汽車(chē)內(nèi)部ECU的地址配置、命名、通訊方式以及報(bào)文發(fā)送優(yōu)先級(jí)等,并且對(duì)汽車(chē)內(nèi)部各個(gè)具體的ECU通訊作了詳細(xì)的說(shuō)明。它使用多路復(fù)用技術(shù),為汽車(chē)上的各種傳感器、執(zhí)行器和控制器提供建立在CAN總線(xiàn)基礎(chǔ)上的標(biāo)準(zhǔn)化的高速網(wǎng)絡(luò)連接,在車(chē)載電子裝置之間實(shí)現(xiàn)高速數(shù)據(jù)共享,有效地減少了電子線(xiàn)束的數(shù)量,提高了車(chē)輛電子控制系統(tǒng)的靈活性、可靠性、可維修性和標(biāo)準(zhǔn)化程度,更大程度地發(fā)揮了CAN優(yōu)異的性能。
1.2 SAE J1939數(shù)據(jù)幀格式
SAE J1939數(shù)據(jù)幀是以PDU(協(xié)議數(shù)據(jù)單元)為單位,共由優(yōu)先權(quán)(P)、保留位(R)、數(shù)據(jù)頁(yè)(DP)、PDU格式(PF)、PDU細(xì)節(jié)(Ps)、源地址(SA)及數(shù)據(jù)域(Date Field)等7個(gè)域組成。除了數(shù)據(jù)域之外的PDU對(duì)應(yīng)于CAN擴(kuò)展幀的29位標(biāo)識(shí)符。其中PS是1個(gè)8位段,其定義取決于PF值。若PF值小于240,PS是目標(biāo)地址(DA)。若PF值介于240和255之間,則PS為組擴(kuò)展(GE)。
有些CAN數(shù)據(jù)幀不是在PDU中定義,包括SOF、SRR、IDE、RTR、控制域部分、CRC域、ACK域和EOF域。這些域是由CAN定義的,SAE J1939不作修改。
2 CAN總線(xiàn)汽車(chē)儀表設(shè)計(jì)
2.1 儀表整體設(shè)計(jì)
該汽車(chē)儀表系統(tǒng)由數(shù)據(jù)采集、處理以及顯示3個(gè)模塊組成。其中數(shù)據(jù)采集模塊負(fù)責(zé)接收車(chē)輛的各種數(shù)據(jù),并將數(shù)據(jù)預(yù)處理后發(fā)送至微處理器。其中模擬量信號(hào)、脈沖信號(hào)以及開(kāi)關(guān)量信號(hào)等傳感器信號(hào)在各傳感器處采集后,分別經(jīng)過(guò)分壓、濾波整形以及光電隔離后發(fā)送至微處理器。而發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫和故障代碼等CAN總線(xiàn)數(shù)據(jù)通過(guò)發(fā)動(dòng)機(jī)CAN模塊發(fā)送至CAN總線(xiàn)后,通過(guò)CAN收發(fā)器進(jìn)行接收。微處理器接收到需要的數(shù)據(jù)后,根據(jù)預(yù)定的算法對(duì)數(shù)據(jù)進(jìn)行處理,并將處理結(jié)果輸出。顯示模塊包括指針、LCD以及各種信號(hào)燈的顯示。微處理器將發(fā)動(dòng)機(jī)轉(zhuǎn)速、車(chē)速等結(jié)果輸出至電機(jī)驅(qū)動(dòng)器,驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)轉(zhuǎn)動(dòng),從而帶動(dòng)指針顯示;微處理器直接驅(qū)動(dòng)LCD顯示及LED燈的亮滅。汽車(chē)儀表系統(tǒng)結(jié)構(gòu)如圖1所示。
根據(jù)對(duì)汽車(chē)儀表的整體分析,汽車(chē)儀表盤(pán)由3個(gè)分表盤(pán)組成,左分表盤(pán)顯示發(fā)動(dòng)機(jī)轉(zhuǎn)速、油量等數(shù)據(jù),右分表盤(pán)顯示車(chē)速、油壓等數(shù)據(jù),中分表盤(pán)用于放置LCD顯示屏以及各種指示燈。儀表指針全部采用步進(jìn)電機(jī)驅(qū)動(dòng)。儀表接收到的各種數(shù)據(jù)中,從CAN總線(xiàn)獲取發(fā)動(dòng)機(jī)轉(zhuǎn)速、水溫以及電壓,從各種傳感器獲取車(chē)速、油量、氣壓以及油壓。
2.2 系統(tǒng)硬件設(shè)計(jì)
儀表采用Luminarv公司的LM3S2948處理器。這是一款基于A(yíng)RM CortexM3內(nèi)核的微處理器,采用32位RISC,內(nèi)嵌CAN控制器、模數(shù)轉(zhuǎn)換器(ADC)、模擬比較器等功能模塊,減少了外圍電路,降低了系統(tǒng)設(shè)計(jì)成本。LM3S2948處理器內(nèi)置CAN模塊方便了CAN總線(xiàn)數(shù)據(jù)的傳輸,同時(shí)使儀表的通信容易實(shí)現(xiàn),提高了可靠性。其內(nèi)置CAN模塊具有以下特點(diǎn):支持CAN 2.0B協(xié)議并支持符合SAE J1939協(xié)議的擴(kuò)展幀的報(bào)文傳輸:位速率可高達(dá)l Mb/s;具有32個(gè)報(bào)文對(duì)象,每個(gè)對(duì)象都具有自己的標(biāo)識(shí)符屏蔽碼;包含可屏蔽中斷,針對(duì)時(shí)間觸發(fā)的CAN(1TrCAN)應(yīng)用,可選擇禁止自動(dòng)重發(fā)送模式;通過(guò)CANOTx和CANORx引腳與外部CAN PHY無(wú)縫連接;具有可編程的F1F0模式。
LM3S2948微處理器具有運(yùn)算速度快、功耗小、體積小、價(jià)位低等特點(diǎn)。其CAN控制器模塊特性完全滿(mǎn)足CAN總線(xiàn)汽車(chē)儀表的應(yīng)用要求。該處理器具有強(qiáng)大的處理能力,在車(chē)輛的各種工況下都能夠?qū)崟r(shí)反映車(chē)輛信息,同時(shí)該處理器具有很大的可擴(kuò)展空間,有利于后續(xù)開(kāi)發(fā)。
由于LM3S2948內(nèi)置CAN控制器模塊,所以只需外接一個(gè)CAN收發(fā)器即可接收總線(xiàn)數(shù)據(jù)。該儀表選用CTM8251T作為CAN收發(fā)器。CTM8251T是一款通用的帶隔離的CAN收發(fā)器,該器件內(nèi)部集成所有必需的CAN隔離及CAN收發(fā)器。該器件可連接任何一款CAN協(xié)議控制器,實(shí)現(xiàn)CAN節(jié)點(diǎn)的收發(fā)與隔離功能。該器件設(shè)計(jì)體積小,集成度高,可取代傳統(tǒng)的CAN收發(fā)器及其外圍電路,降低了電路的復(fù)雜程度,減少了設(shè)計(jì)成本,如圖2所示。
儀表采用VID6606驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)。每片VID6606可同時(shí)驅(qū)動(dòng)4路步進(jìn)電機(jī)。在其頻率控制端輸入脈沖序列F(SCX),即可控制輸出端使步進(jìn)電機(jī)的輸出軸以微步轉(zhuǎn)動(dòng),每個(gè)微步電機(jī)輸出軸轉(zhuǎn)動(dòng)1/12(°),最大角速度可達(dá)600(°)/s。該電機(jī)驅(qū)動(dòng)器具有以下特點(diǎn):硬件微步驅(qū)動(dòng)、簡(jiǎn)單易用,電機(jī)只需速度F(sex)和方向(CW/CCW)2個(gè)控制端、所有輸入引腳都有干擾過(guò)濾器、寬工作電壓、低電磁干擾輻射。儀表板指針采用VID-29電機(jī)驅(qū)動(dòng),電機(jī)內(nèi)置減速比180/1的齒輪系,能夠?qū)?shù)字信號(hào)直接準(zhǔn)確地轉(zhuǎn)為模擬的顯示輸出。該電機(jī)具有很高的顯示精度,其步距角最小可達(dá)到1/2(°)。圖3所示為VID6606驅(qū)動(dòng)儀表電路。
該儀表利用LCD顯示時(shí)間、燃油消耗量以及產(chǎn)生故障時(shí)故障名稱(chēng),處理器發(fā)送的信號(hào)先經(jīng)74HC245功率放大后,然后送至液晶屏F2000LCD顯示。LCD電路如圖4所示。
2.3 系統(tǒng)軟件設(shè)計(jì)
系統(tǒng)軟件設(shè)計(jì)分為主程序、CAN通信、數(shù)據(jù)采集處理和數(shù)據(jù)顯示等4個(gè)模塊。主程序模塊通過(guò)調(diào)用各個(gè)子模塊程序來(lái)處理數(shù)據(jù)處理:CAN通信模塊負(fù)責(zé)發(fā)送和接收數(shù)據(jù);數(shù)據(jù)采集及處理模塊完成對(duì)各種類(lèi)型數(shù)據(jù)的采集以及計(jì)算;數(shù)據(jù)顯示模塊將車(chē)速、油壓以及信號(hào)燈等信息顯示在儀表上。
圖5為系統(tǒng)主程序流程,該系統(tǒng)主程序流程分為:
1)系統(tǒng)初始化。系統(tǒng)初始化主要包括初始化系統(tǒng)時(shí)鐘、CAN節(jié)點(diǎn)、LCD液晶屏、步進(jìn)電機(jī)等,并使能CAN中斷,設(shè)置CAN屏蔽碼和驗(yàn)收碼。CAN節(jié)點(diǎn)初始化主要是初始化CAN控制器并中斷CAN控制器:
2)讀取傳感器以及CAN總線(xiàn)數(shù)據(jù),并驅(qū)動(dòng)指針以及LCD等顯示,同時(shí)等待CAN接收中斷。
3)CAN接收中斷產(chǎn)生,進(jìn)入接收中斷子程序讀取數(shù)據(jù)。判斷數(shù)據(jù)是否符合數(shù)據(jù)接收條件,如果符合,則接收數(shù)據(jù)。此過(guò)程逐位比較接收到的29位標(biāo)識(shí)符與驗(yàn)收碼、屏蔽碼,只有標(biāo)識(shí)符相應(yīng)位與驗(yàn)收碼相應(yīng)位相同,系統(tǒng)才開(kāi)始接收數(shù)據(jù)。
4)處理器將接收的報(bào)文進(jìn)行解析,提取需要的數(shù)據(jù)并進(jìn)行處理。處理器對(duì)傳感器傳來(lái)的數(shù)據(jù)和CAN總線(xiàn)讀取的數(shù)據(jù)進(jìn)行處理計(jì)算,得到相應(yīng)的指針驅(qū)動(dòng)參數(shù),計(jì)算出指針轉(zhuǎn)角,并根據(jù)初始化的步進(jìn)電機(jī)的參數(shù)計(jì)算出指針轉(zhuǎn)動(dòng)速度。指針轉(zhuǎn)動(dòng)速度與相應(yīng)的參數(shù)變化速度成正比。同時(shí)計(jì)算出車(chē)輛行駛里程并累加到總路程上。
5)處理器將包含車(chē)輛工況的一組脈沖序列發(fā)送至步進(jìn)電機(jī)驅(qū)動(dòng)器,驅(qū)動(dòng)器驅(qū)動(dòng)步進(jìn)電機(jī)以微步方式轉(zhuǎn)動(dòng),指示出相應(yīng)的發(fā)動(dòng)機(jī)轉(zhuǎn)速、車(chē)速、水溫以及油壓等;處理器將包含車(chē)輛總路程等信息的數(shù)據(jù)發(fā)送至LCD控制器,控制器控制LCD顯示相應(yīng)的總路程等:處理器改變相應(yīng)的I/O引腳狀態(tài)直接點(diǎn)亮/關(guān)閉相應(yīng)的指示燈。
2.4 故障顯示
該儀表能夠從CAN總線(xiàn)接收故障代碼并對(duì)故障代碼進(jìn)行解析,與預(yù)先寫(xiě)入的故障碼比對(duì)后找到對(duì)應(yīng)的故障信息并顯示在LCD屏幕上。每一類(lèi)型的數(shù)據(jù)都有特定的數(shù)據(jù)幀ID,系統(tǒng)根據(jù)幀ID判斷故障產(chǎn)生的位置。如果收到的是單幀故障,則系統(tǒng)來(lái)提取總字節(jié)數(shù)和總包數(shù);如果收到的是多幀故障,系統(tǒng)則連續(xù)提取故障診斷報(bào)文至特定的字節(jié),然后根據(jù)故障代碼查找故障類(lèi)型。
3 結(jié)束語(yǔ)
在研究CAN總線(xiàn)和SAE J1939協(xié)議的基礎(chǔ)上,設(shè)計(jì)CAN總線(xiàn)汽車(chē)儀表。該設(shè)計(jì)充分利用LM3S2948以及VID6606的功能,較大程度上降低了系統(tǒng)外圍電路的設(shè)計(jì)以及成本。多次實(shí)車(chē)試驗(yàn)結(jié)果表明,相對(duì)于常規(guī)儀表,該CAN總線(xiàn)儀表具有以下優(yōu)點(diǎn):抗干擾能力強(qiáng),傳輸速率高,能夠保證數(shù)據(jù)有效、快速、穩(wěn)定地傳輸;減少車(chē)身布線(xiàn),硬件方案軟件化實(shí)現(xiàn),簡(jiǎn)化了設(shè)計(jì),降低了成本;及時(shí)、直觀(guān)地查看車(chē)輛故障;CAN總線(xiàn)將整車(chē)構(gòu)成一個(gè)網(wǎng)絡(luò)系統(tǒng),能夠提升系統(tǒng)的靈活性,方便地增加設(shè)備,擴(kuò)大了可開(kāi)發(fā)的空間。