胡偉寧
【摘 要】CAN是控制器局域網(wǎng)絡(Controller Area Network, CAN)的簡稱,是由研發(fā)和生產(chǎn)汽車電子產(chǎn)品著稱的德國BOSCH公司開發(fā)了的,并最終成為國際標準(ISO11898)。是國際上應用最廣泛的現(xiàn)場總線之一。近年來,其所具有的高可靠性和良好的錯誤檢測能力受到重視,被廣泛應用于汽車計算機控制系統(tǒng)和環(huán)境溫度惡劣、電磁輻射強和振動大的工業(yè)環(huán)境。本文以CAN為內(nèi)容,介紹CAN 總線在汽車電子中的應用。
【關鍵詞】汽車儀表;發(fā)展及趨勢;設計方案
1.CAN 是什么
CAN 是Controller Area Network 的縮寫(以下稱為CAN),是ISO*1 國際標準化的串行通信協(xié)議。在當前的汽車產(chǎn)業(yè)中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統(tǒng)被開發(fā)了出來。由于這些系統(tǒng)之間通信所用的數(shù)據(jù)類型及對可靠性的要求不盡相同,由多條總線構(gòu)成的情況很多,線束的數(shù)量也隨之增加。為適應“減少線束的數(shù)量”、“通過多個LAN,進行大量數(shù)據(jù)的高速通信”的需要,1986 年德國電氣商博世公司開發(fā)出面向汽車的CAN 通信協(xié)議。此后,CAN 通過ISO11898 及ISO11519 進行了標準化,現(xiàn)在在歐洲已是汽車網(wǎng)絡的標準協(xié)議。
現(xiàn)在,CAN 的高性能和可靠性已被認同,并被廣泛地應用于工業(yè)自動化、船舶、醫(yī)療設備、工業(yè)設備等方面。
2.汽車儀表的發(fā)展及趨勢
按汽車儀表在工作原理上取得的重大技術創(chuàng)新來分,可以劃分為4個階段,或稱為經(jīng)過4代。第1代汽車儀表是基于機械作用力而工作的機械式儀表,人們習慣稱這類儀表為機械機心表;第2代汽車儀表的工作原理基于電測原理,即通過各類傳感器將被測的非電量變換成電信號加以測量,通常稱這類儀表為電氣式儀表;第3代為模擬電路電子式;第4代為步進電動機式全數(shù)字汽車儀表。
隨著計算機技術、電子技術、網(wǎng)絡技術以及液晶現(xiàn)實技術的發(fā)展,汽車儀表的發(fā)展趨勢將更加體現(xiàn)這些高新技術的結(jié)合。如儀表的功能由軟件和硬件共同來完成儀表的功能由軟件和硬件共同實現(xiàn),而且主要是通過軟件實現(xiàn)。這對于量大且對成本極為敏感的汽車儀表有特殊意義,因為軟件的開發(fā)費用分攤到每個儀表上是非常少的。與僅由電子線路硬件組成的汽車儀表相比,帶有ECU的汽車儀表,其功能的實現(xiàn)手段更加靈活多樣。產(chǎn)品的“柔性”更好,即在推出新款產(chǎn)品時,能最大限度地利用以前產(chǎn)品的硬、軟件設計成果僅做少量修改便可,這在產(chǎn)品更新?lián)Q代很快的今天和未來特別重要。
3.基于CAN總線的汽車儀表設計方案
3.1設計思想
本文利用車輛網(wǎng)絡的優(yōu)勢,從CAN總線上采集汽車儀表面板所需要的數(shù)據(jù),如車速、水溫、燃油、里程等,經(jīng)處理器處理后進行各種實時控制和顯示。不是像傳統(tǒng)的儀表面板那樣,本設計用液晶顯示屏動態(tài)顯示所采集并用軟件處理的數(shù)據(jù)。這樣可以隨時根據(jù)需要,由軟件實現(xiàn)儀表面板的擴充。整體網(wǎng)絡具有自診斷功能,降低系統(tǒng)的故障率,同時使用CAN總線方式使得整體系統(tǒng)工作更加及時、準確,提高了安全性、可靠性,更具有智能化和人性化。
由于本設計只是實驗性研究以及各汽車總線數(shù)據(jù)編碼的多樣性,本設計自行開發(fā)了簡單的ECU,用于采集車速、燃油、水溫、里程等數(shù)據(jù)。然后由CAN總線通過CAN-PC接口卡接入PC機,再由軟件編程來完成從CAN總線采集到的數(shù)據(jù)動態(tài)顯示。這里用Visual Basic編程。系統(tǒng)共享娛樂系統(tǒng)、導航系統(tǒng)所用的計算機。作為實驗性研究,可由筆記本電腦代替PC機。然后進行各項實驗驗證,如抗干擾、準確度、工作穩(wěn)定性、振動的影響、溫度的影響等。
3.2系統(tǒng)硬件結(jié)構(gòu)及所用器件
該測試系統(tǒng)由液晶顯示器、PC-CAN接口卡、單片機、CAN控制器(SJA1000)、CAN總線發(fā)送/接收驅(qū)動器(PCA82C250)、和各數(shù)據(jù)采集系統(tǒng)組成。
專用液晶顯示屏用來顯示轉(zhuǎn)速、機油壓力、水溫、燃油消耗等;PC機用來處理CAN總線上的數(shù)據(jù)并通過軟件顯示于顯示屏上;PC-CAN接口卡完成PC機與CAN之間的通信;自行設計的ECU完成從各傳感器采集數(shù)據(jù),通過CAN收發(fā)器連于CAN總線上。其中的PC-CAN接口卡通過RS232接口或UAB與PC機相連,PC-CAN接口卡再通過總線與自行設計的ECU相連。在實際中PC-CAN接口卡與車輛CAN總線相連,可采集大量數(shù)據(jù)信息,從而隨時可通過軟件編程把這些信息在顯示屏上動態(tài)顯示出來。
3.3系統(tǒng)的硬件設計
PC-CAN接口卡選用CAN232智能CAN接口卡,它適合CAN-bus的小流量數(shù)據(jù)傳輸應用,最高可達500幀/秒的數(shù)據(jù)傳輸速率,提供廣泛和強大的軟件支持。支持在VC++、C++Builder、Delphi和VB等開發(fā)環(huán)境下進行設計。該接口卡為用戶提供了編程需要的三個文件:CAN232dll.DLL,CAN232dll.LIB,ExportHead.H。
CAN協(xié)議控制器選用SJA1000,它是Philips公司生產(chǎn)的適合汽車環(huán)境的獨立CAN控制器,支持CAN2.0B協(xié)議。CAN發(fā)送/接收驅(qū)動器選用Philip公司的PCA82C250,它是CAN控制器和物理傳輸線路之間的接口,它可以用高達1Mbits/s的位速率在兩條有差動電壓的總線電纜上傳輸數(shù)據(jù)。
3.4系統(tǒng)軟件設計
CAN2.0的分層結(jié)構(gòu)是按ISO/OSI模型對CAN結(jié)構(gòu)的描述。數(shù)據(jù)鏈路層又分為邏輯鏈路層(LLC,Logical Link Control)和媒體訪問控制(MAC,Medium Access Control)兩個層。LLC層完成下列功能:為數(shù)據(jù)發(fā)送以及以及遠層數(shù)據(jù)請求傳送服務;判斷是否接受接收到的數(shù)據(jù);提供恢復管理和超載處理。
MAC層主要定義了傳輸協(xié)議,包括信息幀格式、仲裁方式、應答信號、錯誤檢測、錯誤信令和故障限制等。
物理層實現(xiàn)節(jié)點間的物理信號的傳送,主要定義網(wǎng)絡的電氣特性。CAN網(wǎng)絡中可以采用多種不同的物理層協(xié)議。
本研究用VC編程語言實現(xiàn)汽車儀表數(shù)據(jù)的顯示。PC—CAN接口卡自帶三個文件CAN232dll.DLL,CAN232dll.LIB,ExportHead.H,其中ExportHead.H描述了動態(tài)鏈接庫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);
將接口卡所帶的三個文件拷貝在VC目錄下,在VC菜單的PROJECT->SETTING中的LINK項下,填入CAN232dll.LIB。然后在程序的頭文件中加入“#include ExportHead.H”。
4.結(jié)論
本研究只有一個CAN節(jié)點,所以顯示器所顯示的數(shù)據(jù)只有轉(zhuǎn)速、機油壓力、水溫、燃油消耗,但是在實際的汽車網(wǎng)絡中,通過編程我們可以動態(tài)獲得CAN總線上的所有信息,并能夠以友好的人機界面顯示,使車輛信息對駕駛員或乘客透明化。所以基于CAN總線的汽車儀表軟件實現(xiàn)是汽車儀表設計的一個新的嘗試。