汽車上的電子裝置隨著汽車電子的發(fā)展日益增多,仍采用傳統(tǒng)的通信模式必然導(dǎo)致汽車電器布線復(fù)雜,維修檢測(cè)困難等問題。而CAN總線的提出為解決此問題提出了可能。CAN(C0ntmller Area Network)總線是20世紀(jì)80年代德國(guó)Bosch公司為實(shí)現(xiàn)現(xiàn)代汽車上眾多電子模塊相互間的通信而提出的一種串行通信協(xié)議,是目前唯一具有國(guó)際統(tǒng)一標(biāo)準(zhǔn)的總線。但由于國(guó)內(nèi)關(guān)于CAN總線的研究起步很晚,至今國(guó)產(chǎn)化的產(chǎn)品不多。因此文獻(xiàn)基于科研教學(xué)及產(chǎn)品開發(fā)的多重目的,研制開發(fā)了基于CAN總線的車身電器控制系統(tǒng)實(shí)驗(yàn)臺(tái)。該實(shí)驗(yàn)臺(tái)以CAN總線為基礎(chǔ),以某汽車車身電器為對(duì)象簡(jiǎn)化了汽車車身電器的控制網(wǎng)絡(luò),減少了線束,實(shí)驗(yàn)也證明了所開發(fā)系統(tǒng)的正確性和CAN總線取代傳統(tǒng)車身線束的可行性。該實(shí)驗(yàn)臺(tái)的成功開發(fā)其現(xiàn)實(shí)意義很重要,但也存在以下不足之處應(yīng)加以改進(jìn):1)試驗(yàn)臺(tái)將車燈控制節(jié)點(diǎn)分為前燈、后燈 2個(gè)節(jié)點(diǎn),這樣在通信中不僅沒有完全利用單片機(jī)的接口,還要考慮前后節(jié)點(diǎn)的優(yōu)先權(quán),把軟件的設(shè)計(jì)復(fù)雜化。2)單片機(jī)引腳電流過小不足以驅(qū)動(dòng)大功率的車燈和車門電機(jī)等功率器件,該試驗(yàn)臺(tái)選用驅(qū)動(dòng)芯片、繼電器和保險(xiǎn)絲來(lái)實(shí)現(xiàn)功能,這樣設(shè)計(jì)接口電路使節(jié)點(diǎn)的總體體積偏大,不便車載。本文主要針對(duì)以上2個(gè)問題提出解決方案,先從總體上對(duì)節(jié)點(diǎn)重新分類設(shè)計(jì),基于AT89S52微處理器和CAN控制器SJAl000重新構(gòu)建硬件環(huán)境,然后以AT89S52為核心,結(jié)合所選器件的運(yùn)行環(huán)境改進(jìn)程序。
1 車身電器控制系統(tǒng)節(jié)點(diǎn)分類及其功能
該控制系統(tǒng)將車身電器分為上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)、開關(guān)控制節(jié)點(diǎn)、車燈控制節(jié)點(diǎn)、車門控制節(jié)點(diǎn)4類。各類節(jié)點(diǎn)所包含的電器設(shè)備及要傳輸?shù)?a target="_blank">信號(hào)如下:1)上位機(jī)轉(zhuǎn)換節(jié)點(diǎn):將CAN協(xié)議信號(hào)轉(zhuǎn)換為RS232協(xié)議信號(hào)輸出,由上位機(jī)的串口接收;2)開關(guān)控制節(jié)點(diǎn):燈具開關(guān)節(jié)點(diǎn)需要的各開關(guān)輸入,通過單片機(jī)將物理的開關(guān)信號(hào)轉(zhuǎn)換為數(shù)據(jù)信號(hào);3)車燈控制節(jié)點(diǎn):接收總線上傳來(lái)的可控?cái)?shù)據(jù),并將數(shù)據(jù)轉(zhuǎn)換后控制車燈各燈具的狀態(tài),控制的車身電器主要是遠(yuǎn)光燈、近光燈、霧燈、轉(zhuǎn)向燈、倒車燈、剎車燈等燈具;4)車門控制節(jié)點(diǎn):控制車門的開關(guān)輸入及玻璃升降電機(jī)的輸出。節(jié)點(diǎn)的分類及功能如圖1所示。
2 系統(tǒng)硬件電路設(shè)計(jì)
硬件通訊電路部分由單片機(jī)AT89S52、CAN控制器SJAl000、CAN收發(fā)器PCA82C250連接組成。任何類型的節(jié)點(diǎn)其硬件設(shè)計(jì)中都由該通訊電路和接口電路組成,CAN控制器及收發(fā)器與單片機(jī)連接電路如圖2所示。為使總線上有信號(hào)時(shí),系統(tǒng)能夠快速響應(yīng),單片機(jī)與SJAl000采用獨(dú)立的晶振。SJAl000的晶振頻率為16 MHz,單片機(jī)的晶振頻率為12 MHz,這樣可使CAN控制器接收或發(fā)送數(shù)據(jù)速度快于單片機(jī)的處理速度,總線傳來(lái)的數(shù)據(jù)或待發(fā)送到總線的數(shù)據(jù)可暫存于SJA1000的緩沖器中,等待單片機(jī)處理或自動(dòng)向總線發(fā)送。
2.1 上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)接口電路
上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)中,接口電路的功能主要是將數(shù)據(jù)轉(zhuǎn)換為符合RS232電平協(xié)議的數(shù)據(jù),可供上位機(jī)串口接收。由于單片機(jī)輸出的數(shù)據(jù)中邏輯電平“1”和“0” 分別用5 V和O V表示,而]RS232電平的邏輯“0”電平范圍為-5~15 V,邏輯“1”的電平范圍是+5~+15 V,因此這里選用MAX232進(jìn)行電平轉(zhuǎn)換,完成上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)接口電路的功能,圖3所示為上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)接口電路。
2.2 開關(guān)控制節(jié)點(diǎn)接口電路
開關(guān)控制節(jié)點(diǎn)中,接口電路的功能主要是將節(jié)點(diǎn)電器中的多路開關(guān)狀態(tài)轉(zhuǎn)換為數(shù)字信號(hào),并且實(shí)現(xiàn)由車載電源12 V到單片機(jī)使用的5 V電源的轉(zhuǎn)換。該接口電路選用的74HC244是一款CMOS型8位總線收發(fā)器,主要用在開關(guān)的輸入時(shí),開關(guān)和SJA1000共用單片機(jī)P0端口時(shí)的切換;電源轉(zhuǎn)換主要通過穩(wěn)壓管LM7805實(shí)現(xiàn)。圖4為開關(guān)控制節(jié)點(diǎn)接口電路。
2.3 車燈控制節(jié)點(diǎn)接口電路
車燈控制節(jié)點(diǎn)中,接口電路的功能主要是實(shí)現(xiàn)通過CAN總線的傳輸數(shù)據(jù)控制車燈功率電器。從單片機(jī)引腳流出的電流很小,無(wú)法直接驅(qū)動(dòng)車燈,若采用驅(qū)動(dòng)電路和繼電器來(lái)完成車燈的驅(qū)動(dòng)作用,必然會(huì)導(dǎo)致車燈控制節(jié)點(diǎn)偏大,不夠?qū)嵱煤兔烙^。該接口電路選用MC33888器件。該器件內(nèi)部集成有4路高端驅(qū)動(dòng)器和8路繼電器或發(fā)光二極管驅(qū)動(dòng)器,是一個(gè)可控制網(wǎng)絡(luò),具有在線診斷、與微控制器通信報(bào)錯(cuò)能力及故障軟化等優(yōu)點(diǎn)。圖5所示為車燈控制節(jié)點(diǎn)接口電路。
2.4 車門控制節(jié)點(diǎn)接口電路
車門控制節(jié)點(diǎn)接口電路的功能和車燈控制節(jié)點(diǎn)接口電路的功能類似,也是將單片機(jī)輸出的小電流信號(hào)轉(zhuǎn)換成可驅(qū)動(dòng)大功率電器的電信號(hào),完成相應(yīng)工作。該電路采用 MC33887器件。該器件功耗低,在等待模式下電流為25 mA,輸出電流超過8 A自動(dòng)短路關(guān)斷。圖6為車門控制節(jié)點(diǎn)接口電路。
3 系統(tǒng)軟件設(shè)計(jì)
任何CAN總線系統(tǒng)的通信協(xié)議都由物理層協(xié)議、數(shù)據(jù)鏈路層協(xié)議和應(yīng)用層協(xié)議組成。SJAl000和PCA82C250的硬件結(jié)構(gòu)保證了協(xié)議的物理層和數(shù)據(jù)鏈路層。對(duì)于應(yīng)用層,在不同的應(yīng)用領(lǐng)域,人們制定了不同的協(xié)議,包括CANopen、DeviceNet及SAE J1939等。應(yīng)用層協(xié)議決定了CAN總線系統(tǒng)的可擴(kuò)展性。將CAN應(yīng)用層合理分配后應(yīng)用于軟件結(jié)構(gòu)中可提高軟件的兼容性。
本設(shè)計(jì)各類節(jié)點(diǎn)可將程序分為主程序和子程序。主程序的目的是監(jiān)控本節(jié)點(diǎn)中各電器的狀態(tài),采用查詢方式編程:子程序分為接收子程序和發(fā)送子程序,采用模塊化編程,將節(jié)點(diǎn)的功能分成各種模塊并形成文件,在編寫各節(jié)點(diǎn)程序時(shí)直接調(diào)用各個(gè)模塊程序函數(shù)即可。這里參考SAE J1939的編碼規(guī)則對(duì)CAN系統(tǒng)的應(yīng)用層進(jìn)行分配,并介紹各節(jié)點(diǎn)的軟件結(jié)構(gòu)。
3.1節(jié)點(diǎn)主程序
上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)主程序的作用是:查詢總線上的數(shù)據(jù),并將依據(jù)CAN協(xié)議的數(shù)據(jù)轉(zhuǎn)換為依據(jù)RS232電平標(biāo)準(zhǔn)的數(shù)據(jù)。圖7為上位機(jī)轉(zhuǎn)換節(jié)點(diǎn)流程:開關(guān)控制節(jié)點(diǎn)主程序用于查詢開關(guān)的閉合或斷開狀態(tài)并將開關(guān)狀態(tài)存儲(chǔ)到單片機(jī)的寄存器中。圖8所示為開關(guān)控制節(jié)點(diǎn)的程序流程,其車燈控制節(jié)點(diǎn)主程序用于查詢CAN總線上的數(shù)據(jù)以控制相應(yīng)的電器。圖9所示為車燈控制節(jié)點(diǎn)的程序流程,其車門控制節(jié)點(diǎn)既要查詢開關(guān)的狀態(tài)存人單片機(jī),又要查詢CAN總線的數(shù)據(jù)控制相應(yīng)的電機(jī),其主程序包含開關(guān)控制節(jié)點(diǎn)和車燈控制節(jié)點(diǎn)主程序的功能。
3.2 節(jié)點(diǎn)子程序
接收子程序的作用是將CAN總線上傳來(lái)的數(shù)據(jù)存儲(chǔ)到單片機(jī)中合適的位置,需要用時(shí),CPU直接從該位置查詢即可。在運(yùn)行接收函數(shù)前,需先檢查CAN控制器 SJAl000的寄存器中是否有傳來(lái)的數(shù)據(jù),如果有則運(yùn)行此程序;如果無(wú),則放棄或繼續(xù)查詢。發(fā)送子程序的作用是將所要發(fā)送的數(shù)據(jù)包裝并發(fā)送到CAN控制器。在主程序中,系統(tǒng)不斷查詢SJAl000的狀態(tài),一旦空閑,CPU將待發(fā)送的數(shù)據(jù)發(fā)送到CAN控制器。
4 結(jié)束語(yǔ)
通過對(duì)基于CAN總線的車身電器控制系統(tǒng)的整體優(yōu)化設(shè)計(jì),得出結(jié)論:對(duì)車身節(jié)點(diǎn)進(jìn)行優(yōu)化后,資源得到合理使用,并增強(qiáng)了節(jié)點(diǎn)的實(shí)用和美觀性,使節(jié)點(diǎn)的接口電路設(shè)計(jì)更加靈活。本方案?jìng)?cè)重于對(duì)實(shí)驗(yàn)臺(tái)實(shí)用性的改進(jìn)。通信過程中存在的干擾、基于時(shí)間觸發(fā)的CAN(即TTCAN)的應(yīng)用問題尚待進(jìn)一步的研究。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44561瀏覽量
635597 -
CAN總線
+關(guān)注
關(guān)注
145文章
1951瀏覽量
130782 -
汽車電子
+關(guān)注
關(guān)注
3026文章
7964瀏覽量
167088
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論