《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 其他 > 設(shè)計(jì)應(yīng)用 > 基于CAN總線技術(shù)的汽車(chē)儀表軟件實(shí)現(xiàn)方案
基于CAN總線技術(shù)的汽車(chē)儀表軟件實(shí)現(xiàn)方案
EEworld
EEworld
摘要: 隨著汽車(chē)上的電子裝置越來(lái)越多,汽車(chē)網(wǎng)絡(luò)應(yīng)運(yùn)而生,控制器局域網(wǎng)(CAN,ControllerAreaNetwork)開(kāi)始大量...
Abstract:
Key words :
</a>總線" title="總線">總線" title="總線">總線" title="總線">總線" title="CAN總線" title="CAN總線">CAN總線">CAN總線 汽車(chē)儀表" title="汽車(chē)儀表">汽車(chē)儀表 軟件" title="軟件">軟件
引言

  隨著汽車(chē)上的電子裝置越來(lái)越多,汽車(chē)網(wǎng)絡(luò)應(yīng)運(yùn)而生,控制器局域網(wǎng)(CAN,Controller Area Network)開(kāi)始大量應(yīng)用與汽車(chē)之上。如何利用汽車(chē)網(wǎng)絡(luò)中的信息,以便于司機(jī)與乘客了解車(chē)輛信息,是一項(xiàng)需要展開(kāi)的研究。本研究從CAN總線獲取汽車(chē)儀表板所需的數(shù)據(jù),并在液晶顯示屏上動(dòng)態(tài)顯示,這一系列任務(wù)在硬件支持的情況下全部由高級(jí)語(yǔ)言編程實(shí)現(xiàn)。

1、CAN總線技術(shù)

  目前存在多種汽車(chē)網(wǎng)絡(luò)協(xié)議,CAN總線技術(shù)屬于現(xiàn)場(chǎng)總線范疇,CAN是控制局域網(wǎng)絡(luò)(Control Area Network)的簡(jiǎn)稱,最早由德國(guó)BOSCH公司推出,用于汽車(chē)內(nèi)部測(cè)量與執(zhí)行部件之間的數(shù)據(jù)通信,其縱向規(guī)范現(xiàn)已被ISO國(guó)際標(biāo)準(zhǔn)組織制訂為國(guó)際標(biāo)準(zhǔn),由于得到了Philip、Siemence、Motorola、Intel、Fusitu等公司的支持,它已成為國(guó)際上應(yīng)用最廣泛的現(xiàn)場(chǎng)總線。它有效支持分布式控制及實(shí)時(shí)控制,并采用了帶優(yōu)先級(jí)的CSMA/CD協(xié)議對(duì)總線進(jìn)行仲裁。因此,CAN總線允許多站點(diǎn)同時(shí)發(fā)送,這樣,既保證了信息處理的實(shí)時(shí)性,又使得CAN總線網(wǎng)絡(luò)可以構(gòu)成多主結(jié)構(gòu)的系統(tǒng),保證了系統(tǒng)的可靠性。另外,CAN采用短幀結(jié)構(gòu),且每幀信息都有校驗(yàn)及其他檢錯(cuò)措施,保證了數(shù)據(jù)的實(shí)時(shí)性、低傳輸出錯(cuò)率。其傳輸介質(zhì)可以使用雙絞線、同軸電纜或光纖。

2、汽車(chē)儀表的發(fā)展及趨勢(shì)

  按汽車(chē)儀表在工作原理上取得的重大技術(shù)創(chuàng)新來(lái)分,可以劃分為4個(gè)階段,或稱為經(jīng)過(guò)4代。第1代汽車(chē)儀表是基于機(jī)械作用力而工作的機(jī)械式儀表,人們習(xí)慣稱這類儀表為機(jī)械機(jī)心表;第2代汽車(chē)儀表的工作原理基于電測(cè)原理,即通過(guò)各類傳感器將被測(cè)的非電量變換成電信號(hào)加以測(cè)量,通常稱這類儀表為電氣式儀表;第3代為模擬電路電子式;第4代為步進(jìn)電動(dòng)機(jī)式全數(shù)字汽車(chē)儀表。

  隨著計(jì)算機(jī)技術(shù)、電子技術(shù)、網(wǎng)絡(luò)技術(shù)以及液晶現(xiàn)實(shí)技術(shù)的發(fā)展,汽車(chē)儀表的發(fā)展趨勢(shì)將更加體現(xiàn)這些高新技術(shù)的結(jié)合。如儀表的功能由軟件和硬件共同來(lái)完成儀表的功能由軟件和硬件共同實(shí)現(xiàn),而且主要是通過(guò)軟件實(shí)現(xiàn)。這對(duì)于量大且對(duì)成本極為敏感的汽車(chē)儀表有特殊意義,因?yàn)檐浖拈_(kāi)發(fā)費(fèi)用分?jǐn)偟矫總€(gè)儀表上是非常少的。與僅由電子線路硬件組成的汽車(chē)儀表相比,帶有ECU的汽車(chē)儀表,其功能的實(shí)現(xiàn)手段更加靈活多樣。產(chǎn)品的“柔性”更好,即在推出新款產(chǎn)品時(shí),能最大限度地利用以前產(chǎn)品的硬、軟件設(shè)計(jì)成果僅做少量修改便可,這在產(chǎn)品更新?lián)Q代很快的今天和未來(lái)特別重要。

3、基于CAN總線的汽車(chē)儀表設(shè)計(jì)方案

  3.1 設(shè)計(jì)思想

  本文利用車(chē)輛網(wǎng)絡(luò)的優(yōu)勢(shì),從CAN總線上采集汽車(chē)儀表面板所需要的數(shù)據(jù),如車(chē)速、水溫、燃油、里程等,經(jīng)處理器處理后進(jìn)行各種實(shí)時(shí)控制和顯示。不是像傳統(tǒng)的儀表面板那樣,本設(shè)計(jì)用液晶顯示屏動(dòng)態(tài)顯示所采集并用軟件處理的數(shù)據(jù)。這樣可以隨時(shí)根據(jù)需要,由軟件實(shí)現(xiàn)儀表面板的擴(kuò)充。整體網(wǎng)絡(luò)具有自診斷功能,降低系統(tǒng)的故障率,同時(shí)使用CAN總線方式使得整體系統(tǒng)工作更加及時(shí)、準(zhǔn)確,提高了安全性、可靠性,更具有智能化和人性化。

  由于本設(shè)計(jì)只是實(shí)驗(yàn)性研究以及各汽車(chē)總線數(shù)據(jù)編碼的多樣性,本設(shè)計(jì)自行開(kāi)發(fā)了簡(jiǎn)單的ECU,用于采集車(chē)速、燃油、水溫、里程等數(shù)據(jù)。然后由CAN總線通過(guò)CAN-PC接口卡接入PC機(jī),再由軟件編程來(lái)完成從CAN總線采集到的數(shù)據(jù)動(dòng)態(tài)顯示。這里用Visual Basic編程。系統(tǒng)共享娛樂(lè)系統(tǒng)、導(dǎo)航系統(tǒng)所用的計(jì)算機(jī)。作為實(shí)驗(yàn)性研究,可由筆記本電腦代替PC機(jī)。然后進(jìn)行各項(xiàng)實(shí)驗(yàn)驗(yàn)證,如抗干擾、準(zhǔn)確度、工作穩(wěn)定性、振動(dòng)的影響、溫度的影響等。

  3.2 系統(tǒng)硬件結(jié)構(gòu)及所用器件

  該測(cè)試系統(tǒng)由液晶顯示器、PC-CAN接口卡、單片機(jī)、CAN控制器(SJA1000)、CAN總線發(fā)送/接收驅(qū)動(dòng)器(PCA82C250)、和各數(shù)據(jù)采集系統(tǒng)組成。

  專用液晶顯示屏用來(lái)顯示轉(zhuǎn)速、機(jī)油壓力、水溫、燃油消耗等;PC機(jī)用來(lái)處理CAN總線上的數(shù)據(jù)并通過(guò)軟件顯示于顯示屏上;PC-CAN接口卡完成PC機(jī)與CAN之間的通信;自行設(shè)計(jì)的ECU完成從各傳感器采集數(shù)據(jù),通過(guò)CAN收發(fā)器連于CAN總線上。其中的PC-CAN接口卡通過(guò)RS232接口或UAB與PC機(jī)相連,PC-CAN接口卡再通過(guò)總線與自行設(shè)計(jì)的ECU相連。在實(shí)際中PC-CAN接口卡與車(chē)輛CAN總線相連,可采集大量數(shù)據(jù)信息,從而隨時(shí)可通過(guò)軟件編程把這些信息在顯示屏上動(dòng)態(tài)顯示出來(lái)。

  3.3 系統(tǒng)的硬件設(shè)計(jì)

  PC-CAN接口卡選用CAN232智能CAN接口卡,它適合CAN-bus的小流量數(shù)據(jù)傳輸應(yīng)用,最高可達(dá)500幀/秒的數(shù)據(jù)傳輸速率,提供廣泛和強(qiáng)大的軟件支持。支持在VC++、C++Builder、Delphi和VB等開(kāi)發(fā)環(huán)境下進(jìn)行設(shè)計(jì)。該接口卡為用戶提供了編程需要的三個(gè)文件:CAN232dll.DLL,CAN232dll.LIB,ExportHead.H。

  CAN協(xié)議控制器選用SJA1000,它是Philips公司生產(chǎn)的適合汽車(chē)環(huán)境的獨(dú)立CAN控制器,支持CAN2.0B協(xié)議。CAN發(fā)送/接收驅(qū)動(dòng)器選用Philip公司的PCA82C250,它是CAN控制器和物理傳輸線路之間的接口,它可以用高達(dá)1Mbits/s的位速率在兩條有差動(dòng)電壓的總線電纜上傳輸數(shù)據(jù)。

  3.4 系統(tǒng)軟件設(shè)計(jì)

  CAN2.0的分層結(jié)構(gòu)是按ISO/OSI模型對(duì)CAN結(jié)構(gòu)的描述。數(shù)據(jù)鏈路層又分為邏輯鏈路層(LLC,Logical Link Control)和媒體訪問(wèn)控制(MAC,Medium Access Control)兩個(gè)層。LLC層完成下列功能:為數(shù)據(jù)發(fā)送以及以及遠(yuǎn)層數(shù)據(jù)請(qǐng)求傳送服務(wù);判斷是否接受接收到的數(shù)據(jù);提供恢復(fù)管理和超載處理。

  MAC層主要定義了傳輸協(xié)議,包括信息幀格式、仲裁方式、應(yīng)答信號(hào)、錯(cuò)誤檢測(cè)、錯(cuò)誤信令和故障限制等。

  物理層實(shí)現(xiàn)節(jié)點(diǎn)間的物理信號(hào)的傳送,主要定義網(wǎng)絡(luò)的電氣特性。CAN網(wǎng)絡(luò)中可以采用多種不同的物理層協(xié)議。

  本研究用VC編程語(yǔ)言實(shí)現(xiàn)汽車(chē)儀表數(shù)據(jù)的顯示。PC—CAN接口卡自帶三個(gè)文件CAN232dll.DLL,CAN232dll.LIB,ExportHead.H,其中ExportHead.H描述了動(dòng)態(tài)鏈接庫(kù)CAN232dll.DLL所定義的外部函數(shù)。如下所示:

  void OpenSerialPort(int nPort,unsigned int Baud);

  void CAN232Send(unsigned char*sdata,size_t  Len);

  void CAN232Setting(unsigned char*sdata,size_t Len);

  char CAN232Receive(unsigned char*CANReceive);

  將接口卡所帶的三個(gè)文件拷貝在VC目錄下,在VC菜單的PROJECT->SETTING中的LINK項(xiàng)下,填入CAN232dll.LIB。然后在程序的頭文件中加入“#include ExportHead.H”。

4、結(jié)論

  本研究只有一個(gè)CAN節(jié)點(diǎn),所以顯示器所顯示的數(shù)據(jù)只有轉(zhuǎn)速、機(jī)油壓力、水溫、燃油消耗,但是在實(shí)際的汽車(chē)網(wǎng)絡(luò)中,通過(guò)編程我們可以動(dòng)態(tài)獲得CAN總線上的所有信息,并能夠以友好的人機(jī)界面顯示,使車(chē)輛信息對(duì)駕駛員或乘客透明化。所以基于CAN總線的汽車(chē)儀表軟件實(shí)現(xiàn)是汽車(chē)儀表設(shè)計(jì)的一個(gè)新的嘗試。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。