基于CAN總線技術(shù)的汽車儀表軟件實(shí)現(xiàn)方案
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)汽車儀表數(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í)際的汽車網(wǎng)絡(luò)中,通過(guò)編程我們可以動(dòng)態(tài)獲得CAN總線上的所有信息,并能夠以友好的人機(jī)界面顯示,使車輛信息對(duì)駕駛員或乘客透明化。所以基于CAN總線的汽車儀表軟件實(shí)現(xiàn)是汽車儀表設(shè)計(jì)的一個(gè)新的嘗試。
評(píng)論