汽車前照燈CAN總線多路傳輸系統(tǒng)的研究與設(shè)計
摘要:為代替?zhèn)鹘y(tǒng)繁雜的汽車線束,汽車CAN總線應(yīng)運而生。以CAN總線為基礎(chǔ),結(jié)合51系列單片機技術(shù),研究開發(fā)了汽車前照燈的CAN總線多路傳輸系統(tǒng)。按照整體結(jié)構(gòu)進行了CAN總線傳輸節(jié)點的軟件設(shè)計,設(shè)計出并口CAN適配卡,通過編寫動態(tài)鏈接庫(DLL),向上層應(yīng)用軟件提供讀/寫函數(shù)接口,實現(xiàn)了上位機與下位機的通信。該設(shè)計使得傳統(tǒng)線束大大簡化,可靠性得到了極大提高,有效節(jié)約了線束安裝空間。
關(guān)鍵詞:前照燈;CAN總線;多路傳輸系統(tǒng);單片機
0 引言
CAN(Controller Area Network)數(shù)據(jù)總線是一種適用于汽車環(huán)境的汽車局域網(wǎng)。它屬于多路傳輸系統(tǒng)中的一種,是由德國博世(Bosch)公司在20世紀80年代初為解決現(xiàn)代汽車中眾多的控制單元與測試儀器之間的數(shù)據(jù)交換而應(yīng)用開發(fā)的一種串行通信協(xié)議。目前,在汽車設(shè)計領(lǐng)域中,CAN幾乎成了一種必須采用的技術(shù)手段,尤其是在歐洲,如奔馳、寶馬、保時捷等都采用CAN總線實現(xiàn)汽車內(nèi)部控制系統(tǒng)與各檢測和執(zhí)行機構(gòu)間的數(shù)據(jù)通信。此外,美國汽車廠也將控制器聯(lián)網(wǎng)系統(tǒng)逐步由 Class2過渡到CAN。CAN國際標準只定義了物理層和數(shù)據(jù)鏈路層,實際應(yīng)用中,一些廠家和公司又定義了相應(yīng)的應(yīng)用層規(guī)范,使CAN的應(yīng)用更加廣泛和可靠。
CAN信號傳輸介質(zhì)為普通雙絞線,通信速率最高可達1 Mbps/40 m,直接傳輸距離可達10 km/5 Kbps。CAN的信號傳輸采用短幀結(jié)構(gòu),每一幀的有效字節(jié)數(shù)為8個,因而傳輸時間短,受干擾的概率低,由于其采用CRC-16的校驗方式,誤碼率僅為 3×10-5。當節(jié)點嚴重錯誤時,具有自動關(guān)閉的功能,以切斷該節(jié)點與總線的聯(lián)系,使通信線上的其他節(jié)點機通信不受影響,具有較強的抗干擾能力??刂破骶植烤W(wǎng)(CAN)屬于現(xiàn)場總線范疇,它是一種有效支持分布式控制或?qū)崟r控制的串行通訊網(wǎng)絡(luò)。
CAN作為汽車環(huán)境中的微控制器通訊,在車載各電子控制裝置ECU之間交換信息,形成汽車電子控制網(wǎng)絡(luò)。比如:發(fā)動機管理系統(tǒng)、變速箱控制器、儀表裝備、電子主干系統(tǒng)中,均嵌入CAN控制裝置。但是CAN總線多路傳輸系統(tǒng)還沒有實際應(yīng)用到汽車前照燈。傳統(tǒng)的汽車系統(tǒng)布線工作量很大,一旦線路發(fā)現(xiàn)故障,診斷工作十分困難,同時由于數(shù)據(jù)傳輸線很長,導(dǎo)致傳輸速度下降,可靠性、實時性差等問題。CAN總線技術(shù)作為最有前途的現(xiàn)場總線之一,依靠其可靠性高,適應(yīng)環(huán)境能力強,糾錯能力突出,性價比高等特點成為解決這一問題的新選擇。正是基于這種研究背景,本文研究并開發(fā)出了基于CAN總線的汽車前照燈多路傳輸系統(tǒng)。
1 CAN控制器SJAl000
1.1 SJAl000的硬件結(jié)構(gòu)和功能
CAN的通信協(xié)議主要由CAN控制器完成。CAN控制器主要由實現(xiàn)CAN總線協(xié)議部分和微控制器接口部分組成。不同型號的CAN總線通信控制器,實現(xiàn) CAN協(xié)議部分電路的結(jié)構(gòu)和功能大都相同,而與微控制器接口部分的結(jié)構(gòu)及方式存在一些差異。SJAl000是一種獨立CAN控制器,是PHILIPS公司首推新一代控制器。支持CAN 2.0B協(xié)議。
SJAl000的主要特性如下:
器件管腳和電器特性均和PCA82C200兼容;時鐘頻率24 MHz;支持CAN協(xié)議2.O標準位速率可達l Mb/s;同時支持11位標識符和29位標識符;擴展的接收緩沖器(增至64 B,PCA82C200只有20個字節(jié));對不同微處理器的接口;可編程的CAN驅(qū)動器輸出。
SJAl000具有兩種工作模式:基本模式和Peli模式。其中基本模式符合CAN協(xié)議2.0A標準,和PCA82C200兼容。設(shè)置時鐘分頻器(CDR:Clock divider Register)的最高位模式選擇位(CDR.7),可在基本模式和Peli模式之間切換。
1.2 CAN收發(fā)器82C250的硬件結(jié)構(gòu)和功能
82C250是CAN控制器與物理總線間的接口,最初主要應(yīng)用于汽車高速控制場合。它向總線提供了差動的發(fā)送能力,向CAN控制器提供了差動的接收能力。
82C250主要特性如下:與ISO/DISll898標準兼容;高速(最高可達1 Mb/s);具有抗汽車環(huán)境下的瞬間干擾,保護總線能力;降低射頻干擾(Radio Frequency Interference,RFI)的斜率(slope)控制;熱防護;防護電池與地之間發(fā)生短路;低電流待機方式;某一個節(jié)點掉電不會影響總線;可有 110個節(jié)點相連接。
2 系統(tǒng)硬件電路圖設(shè)計
2.1 汽車前照燈線路示意圖
汽車前照燈傳統(tǒng)供電線路示意圖和汽車前照燈多路總線傳輸系統(tǒng)示意圖如圖1,圖2所示。
2.2 系統(tǒng)硬件電路原理圖
CAN智能節(jié)點電路圖的設(shè)計是本系統(tǒng)的核心,下面給出詳細的CAN節(jié)點硬件電路設(shè)計。
圖3是汽車汽車前照燈的CAN總線多路傳輸系統(tǒng)的硬件電路原理圖。從圖中可以看出,電路主要由三大塊組成。第一塊是前照燈的開關(guān)電路部分,主要包括微控制器89C51單片機、獨立CAN通信控制器SJAl000,CAN總線收發(fā)器82C250;第二塊是上位機,包括CAN總線適配卡以及數(shù)據(jù)顯示部分;第三塊是前照燈的用電器電路部分,主要包括的也是微控制器89C51單片機、獨立CAN通信控制器SJAl000,CAN總線收發(fā)器82C2 50。需要說明一點的是,本系統(tǒng)用4個發(fā)光二極管來代替具體的汽車前照燈中的近光燈,遠光燈,示寬燈,霧燈。
微處理器89C51負責SJAl000的初始化,通過控制SJAl000實現(xiàn)數(shù)據(jù)的接收和發(fā)送等通信任務(wù)。SJAl000的ADO~AD7連接到89C51的P0口,SJAl000的連接到89C51的P2.O,P2.O為0時,CPU片外存儲器地址可選中SJAl000,CPU通過這些地址可對SJAl000執(zhí)行相應(yīng)的讀/寫操作。SJAl000的,ALE分別與89C51的引腳相連,接89C51的,89C51也可以通過中斷方式訪問SJAl000。
82C250與CAN總線的接口部分采用了一定的安全和抗干擾措施。82C250的CANH和CANL引腳各自通過一個5 Ω的電阻與CAN總線相連,電阻可起到一定的限流作用,保護82C250免受過流的沖擊。CANH和CANL與地之間并聯(lián)了2個30 pF的小電容,可以起到濾除總線上的干擾和一定的防電磁輻射的能力。82C250的Rs腳上接有一個斜率電阻,電阻大小可以根據(jù)總線通信速度適當調(diào)整,一般在16~140 kΩ。
2.3 微處理器的選擇
汽車電子控制系統(tǒng)的實時性是建立在微處理器的高速運算功能上的,因此微處理器的選擇是系統(tǒng)設(shè)計的重要環(huán)節(jié),與一般的電子設(shè)備相比較,汽車電子控制系統(tǒng)的微處理器特點在于經(jīng)常處理大量的輸入和輸出信號,而且要實現(xiàn)高精度和實時控制,因此必須能夠同時進行多種獨立的操作。為了滿足這些要求,微處理器必須具有高速計算、高速實時輸入和輸出以及多種中斷響應(yīng)等特性。由于通用電子計算機電子控制系統(tǒng)的控制功能較為簡單,所以大多數(shù)電子控制單元(ECU)中主要使用8 位微處理器。在選擇微.處理器上,不僅要注重滿足技術(shù)要求,還要綜合考慮成本和實用因素,不應(yīng)片面追求微處理器的高速和高位數(shù)。
本研究是對按鈕開關(guān)的邏輯信號進行處理,對微處理器的控制核心CPU的要求不高,選用AT89C51即可滿足要求。
3 汽車前照燈CAN總線多路傳輸系統(tǒng)的軟件設(shè)計
多路傳輸系統(tǒng)的軟件設(shè)計包括CAN節(jié)點的初始化、CAN報文的發(fā)送和接收、PC機與CAN適配卡的通信。
3.1 初始化
系統(tǒng)節(jié)點初始化包括:自檢、CAN通訊初始化、A/D初始化、各種系統(tǒng)標志初始化以及看門狗初始化等。其中89C51的CAN控制器初始化流程如圖4所示。
3.2 CAN子節(jié)點收發(fā)軟件設(shè)計
子節(jié)點主要功能是實現(xiàn)對按鍵信號進行采集,并響應(yīng)主控節(jié)點命令,通過CAN總線向主控節(jié)點發(fā)送檢測點信息。在軟件設(shè)計上,子節(jié)點采取命令一應(yīng)答方式,即等待命令→分析命令類型→發(fā)回相應(yīng)數(shù)據(jù)。
系統(tǒng)中子節(jié)點在上電復(fù)位后主要工作為:
(1)對系統(tǒng)進行初始化;
(2)向主控節(jié)點發(fā)出加入請求;
(3)主控節(jié)點接受請求,并給該子節(jié)點一個網(wǎng)絡(luò)編號;
(4)等待主控節(jié)點命令;
(5)根據(jù)命令將監(jiān)測點的相關(guān)數(shù)據(jù)通過CAN總線發(fā)送給主控節(jié)點。
因此,子節(jié)點的主要流程如圖5所示。
3.3 主控節(jié)點軟件設(shè)計
主控節(jié)點軟件采用事件驅(qū)動方式,事件信號由各種中斷信號產(chǎn)生;CPU在進入中斷處理程序后,僅僅判斷事件類型,設(shè)置相應(yīng)的事件標志位,并不對事件做任何處理;主控節(jié)點主程序?qū)⒀h(huán)讀取事件標志,并轉(zhuǎn)入相應(yīng)的事件處理程序。
主控節(jié)點具有兩種工作模式。一種是系統(tǒng)中存在上位機,上位機作為命令發(fā)出點,主控節(jié)點處于被動控制模式。此時,主控節(jié)點的工作是通過RS 232接收上位機的命令,分析命令的目的節(jié)點,并將命令通過CAN網(wǎng)絡(luò)發(fā)送給目的節(jié)點;同時,主控節(jié)點檢測CAN網(wǎng)絡(luò)上的節(jié)點數(shù)據(jù),將節(jié)點發(fā)出的數(shù)據(jù)通過RS 232發(fā)送給上位機;重復(fù)以上流程直到工作方式發(fā)生改變。在這種方式下主控節(jié)點的主要工作流程如圖6所示。
當系統(tǒng)中不存在上位機或上位機發(fā)出脫離系統(tǒng)命令后,主控節(jié)點進入主動控制工作模式。在這種狀態(tài)中,命令發(fā)送者為主控節(jié)點,主控節(jié)點可通過定時器事件輪循查詢各節(jié)點工作狀態(tài);響應(yīng)鍵盤事件,并根據(jù)用戶輸入的命令向目標節(jié)點發(fā)出命令或響應(yīng)相應(yīng)子節(jié)點的數(shù)據(jù);通過LED燈顯示子節(jié)點工作狀態(tài)。
兩種工作模式間可以通過上位機發(fā)出命令、用戶通過鍵盤輸入命令以及主控節(jié)點查詢上位機工作狀態(tài)異常(如在被動狀態(tài)中,上位機長時間沒有命令)等幾種方式切換。
3.4 上位機監(jiān)控系統(tǒng)設(shè)計
上位機監(jiān)控系統(tǒng)基于C++設(shè)計,可以實現(xiàn)同時對多路數(shù)據(jù)進行采集、存儲,并設(shè)計了圖形化的監(jiān)控顯示。監(jiān)控系統(tǒng)功能包括:
(1)向主控節(jié)點發(fā)出聯(lián)機或脫機命令,切換節(jié)點工作狀態(tài);
(2)定時發(fā)送節(jié)點查詢命令,查詢子節(jié)點工作狀況,更新系統(tǒng)節(jié)點表;
(3)根據(jù)用戶需要,定時向監(jiān)控節(jié)點發(fā)送讀取命令,取得節(jié)點的監(jiān)控數(shù)據(jù),并保存數(shù)據(jù),形成監(jiān)控數(shù)據(jù)文件;
(4)以圖形化的方式顯示監(jiān)控曲線。
上位機系統(tǒng)中還包含了數(shù)據(jù)分析功能,其中設(shè)計了算法接口;系統(tǒng)用戶可編寫自己的算法庫,系統(tǒng)可調(diào)用用戶算法庫對采集的原始數(shù)據(jù)進行進一步的分析。
4 結(jié)語
由于CAN總線具有極強的抗干擾能力,系統(tǒng)在使用現(xiàn)場數(shù)據(jù)通訊非??煽?,并且通過CAN中繼器可以進一步提高通訊質(zhì)量和距離。隨著CAN總線芯片性能的提高、價格的降低,逐漸應(yīng)用到普通轎車上,也為其在農(nóng)業(yè)機械上的應(yīng)用提供了條件。研究CAN總線在拖拉機等農(nóng)業(yè)機械上的應(yīng)用,對于提高農(nóng)機性能和經(jīng)濟性,促進我國農(nóng)業(yè)機械化發(fā)展,具有重要意義。