新聞中心

EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于CAN總線技術(shù)的車輛虛擬儀表數(shù)據(jù)采集系統(tǒng)的設(shè)計

基于CAN總線技術(shù)的車輛虛擬儀表數(shù)據(jù)采集系統(tǒng)的設(shè)計

作者: 時間:2017-06-08 來源:網(wǎng)絡(luò) 收藏
1 前言

車輛是一個特殊的應(yīng)用環(huán)境,車輛自動化程度的不斷提高給車輛儀表提出了更高的要求,傳統(tǒng)的動磁式儀表已經(jīng)越來越不適應(yīng)現(xiàn)代智能交通工具發(fā)展的需要,而虛擬儀表因其具有交互、智能和便于擴(kuò)展等特點而受到廣泛重視。本課題要求為某車設(shè)計一套虛擬儀表,上位機(jī)采用基于RTOS開發(fā)環(huán)境的PC104嵌入式微機(jī)。車輛環(huán)境作為虛擬儀表的一個最重要的子系統(tǒng),要求完成數(shù)據(jù)的采集和通信功能,而且具有較高的適時性和可靠性。本文根據(jù)作者體會介紹了用 Philips公司的高性能單片機(jī)設(shè)計車輛的方法,重點介紹了系統(tǒng)設(shè)計和CAN通信編程。

2 系統(tǒng)簡介

根據(jù)設(shè)計要求,本系統(tǒng)主要完成傳感信號的處理以及車輛的工況數(shù)據(jù)采集并將數(shù)據(jù)通過送上位機(jī),要求處理16路模擬信號、4路頻率信號和32路擴(kuò)展 IO信號,采集參數(shù)主要有:發(fā)動機(jī)機(jī)油壓力、水溫、油溫、轉(zhuǎn)速、車速、變速箱油壓、油箱油量以及電網(wǎng)電壓、車門狀態(tài)、轉(zhuǎn)向燈指示、車體超寬指示以及車內(nèi)環(huán)境示警等,信號的形式有電壓、頻率、以及開關(guān)量信號,信號頻率范圍為0~ 6KHZ。

2.1 系統(tǒng)硬件結(jié)構(gòu)設(shè)計

圖1給出了系統(tǒng)硬件結(jié)構(gòu)圖。系統(tǒng)采用的核心器件為Philips公司的8位高性能微控制器,它與標(biāo)準(zhǔn)80C51完全兼容,其主要特性有:內(nèi)建能與內(nèi)部RAM進(jìn)行DMA數(shù)據(jù)傳送的CAN控制器;4個捕獲端口和2個標(biāo)準(zhǔn)的16位定時/計數(shù)器;8路模擬量輸入的10位ADC變換器;2×256字節(jié)在片RAM和一個Watch Dog。的在片CAN控制器可以完全實現(xiàn)CAN協(xié)議,因此減少了系統(tǒng)連線,增強(qiáng)了診斷功能和監(jiān)控能力。數(shù)模轉(zhuǎn)換器件選用12位的 ,分辨率為0.02%,轉(zhuǎn)換時間為25uS。為了提高系統(tǒng)抗干擾能力,在模-數(shù)電路之間和系統(tǒng)到之間采用了光電隔離,并且將模擬電路和數(shù)字電路分別設(shè)計成兩塊獨立的PCB板,兩板通過棧接組成一個完整的系統(tǒng)。

硬件工作過程:溫度、壓力以及電壓信號,經(jīng)相關(guān)處理電路送至16路模擬開關(guān)MAX306EP,經(jīng)電壓跟隨電路輸入進(jìn)行A/D轉(zhuǎn)換,為了提高可靠性和穩(wěn)定性,系統(tǒng)沒有采用微控制器的在片ADC變換器。在程序控制下對16路信號順序選通,采集得到的數(shù)據(jù)在CAN控制器內(nèi)完成CAN協(xié)議包的封裝,由發(fā)送端口經(jīng)光電隔離和發(fā)送器傳送到上。油量信號經(jīng)光電隔離、整形和分頻后送P80C592的捕獲端口進(jìn)行頻率測量,轉(zhuǎn)速車速信號經(jīng)整形后被分為兩路,一路經(jīng)分頻電路去單片機(jī)捕獲端口,另一路經(jīng)F/V轉(zhuǎn)換后送ADC采樣。對ADC和I/O擴(kuò)展端口的訪問通過GAL譯碼器的編程邏輯輸出來控制。

本文引用地址:http://2s4d.com/article/201706/351467.htm

圖1


2.2 頻率信號測量

頻率信號測量是本系統(tǒng)的一個設(shè)計難點,在本課題中,對于不同的車型所選用的傳感器不同,因此對轉(zhuǎn)速和車速頻率信號的處理可以有兩種方法:一是當(dāng)選用輸出頻率范圍為0-100HZ的接觸式傳感器時,采用CS289頻壓轉(zhuǎn)換芯片,將頻率信號轉(zhuǎn)換成2.2~7.2V的電壓信號然后送ADC采集;二是當(dāng)選用輸出信號頻率范圍為0~3000HZ的非接觸式傳感器時,通過單片機(jī)捕獲端口用脈沖計數(shù)的方法進(jìn)行頻率測量。為提高系統(tǒng)的通用性,可以同時采用了這兩種方法,具體采用哪一種方法得到的數(shù)據(jù)通過上微機(jī)軟件設(shè)定。圖2為F/V轉(zhuǎn)換電路圖;

圖2


CS289是美國Cherry公司生產(chǎn)的單片高精度專用轉(zhuǎn)速測量芯片,在-400至+850溫度范圍內(nèi)都能有很好的線性輸出。它不僅可以用于F/V、V /F轉(zhuǎn)換,還可以用作函數(shù)發(fā)生器以及動磁式儀表驅(qū)動。由其構(gòu)成的F/V轉(zhuǎn)換電路外圍元件少,調(diào)試容易,工作穩(wěn)定可靠。圖2所示,整形后的轉(zhuǎn)速脈沖信號經(jīng)濾波網(wǎng)絡(luò)和限幅輸入CS289第10腳,電壓信號由第8腳輸出,經(jīng)濾波消除可能的工頻干擾后送采樣電路。本電路中,輸出電壓和輸入頻率的關(guān)系由下式?jīng)Q定:上位機(jī)據(jù)此線性關(guān)系解算出頻率值。為保證F/V變換具有足夠高的線性度,應(yīng)合理選取的值。

3 系統(tǒng)軟件設(shè)計

系統(tǒng)軟件主要完成三項任務(wù):1、傳感器信號的采樣與解算;2、上位機(jī)請求數(shù)據(jù)時將采集的數(shù)據(jù)傳送給上位機(jī);3、接收到上位機(jī)自檢命令時,上傳數(shù)據(jù)完成傳感器信號到標(biāo)準(zhǔn)信號的切換。程序流程如圖3所示:

圖3

主程序采用模塊化編程。具有故障自診斷功能是虛擬儀表的重要特征之一,為此中設(shè)計了3組標(biāo)準(zhǔn)信號,分別是頻率信號、電壓信號和電阻信號,自檢模塊的主要功能是:當(dāng)接收到上位機(jī)發(fā)出的自檢命令后,微控制器斷開傳感器輸入,標(biāo)準(zhǔn)信號被接入數(shù)據(jù)采集系統(tǒng),將得到的數(shù)據(jù)上傳到上位機(jī)與標(biāo)準(zhǔn)值進(jìn)行比較,以確定故障點是傳感器系統(tǒng)還是數(shù)據(jù)采集系統(tǒng),若自檢通過則表示數(shù)據(jù)采集系統(tǒng)工作正常。數(shù)據(jù)發(fā)送模塊主要實現(xiàn)對上位機(jī)的數(shù)據(jù)通信,本系統(tǒng)設(shè)計為每隔20毫秒將數(shù)據(jù)分組發(fā)送到上位機(jī)。數(shù)據(jù)轉(zhuǎn)存模塊完成各種數(shù)據(jù)寫入在片主RAM的操作,為了區(qū)分?jǐn)?shù)據(jù)類型,需要在數(shù)據(jù)塊中添加相應(yīng)的類型標(biāo)識碼,該碼由用戶層協(xié)議自行定義。A/D采樣模塊控制系統(tǒng)采樣過程,并將每一路12位采樣數(shù)據(jù)分兩次讀入指定的RAM單元中。

頻率信號處理模塊完成對捕獲端口頻率的測量,其基本思想是:在被測信號的一個周期時間內(nèi),2次脈沖下降沿分別啟動和停止定時器T2計數(shù),兩次計數(shù)值之差的倒數(shù)即為頻率值,本模塊只需計算差值,頻率值由上位機(jī)解算。

3.1 CAN控制器編程

本系統(tǒng)軟件設(shè)計的一個難點在于關(guān)于CAN的編程。本系統(tǒng)處理的CAN程序模塊有:CAN初始化子程序、CAN中斷程序和CAN數(shù)據(jù)收發(fā)子程序。

CAN控制器是以CPU存儲器映像外圍設(shè)備出現(xiàn)的。P80C592的CPU與CAN控制器之間的數(shù)據(jù)傳輸通過4個特殊功能寄存器來實現(xiàn),即: CANADR、CANCON、CANSTA和CANDAT,通過這四個特殊功能寄存器,CPU可以訪問CAN控制器內(nèi)部的任一寄存器(地址為0~29)和 DMA邏輯。表2給出了這四個SFR的功能簡述,其中CANCON和CANSTA的讀寫操作含義不同。CAN控制器內(nèi)部所有寄存器詳細(xì)介紹請參閱參考文獻(xiàn) [1]。

表一


  CAN控制器初始化(圖4)是CAN通信中一個非常重要的子程序,程序是否合理將直接影響整個通信過程。CAN控制器的初始化首先必須通過置位CAN控制寄存器的“復(fù)位請求”位,置位“復(fù)位請求”并不影響正在進(jìn)行的一個收發(fā)作業(yè),特別需要注意的是,只有當(dāng)復(fù)位請求被置位時,CAN內(nèi)部地址為4-8的寄存器方可被訪問,在復(fù)位操作結(jié)束后必須將該位置0以保持所進(jìn)行的設(shè)置并使CAN返回工作狀態(tài)。

圖4


P80C592和其在片CAN控制器都具有中斷寄存器,必須注意兩者的區(qū)別。CAN中斷子程序(圖5)首先讀CAN中斷寄存器(IR)以判斷中斷類型,據(jù)此轉(zhuǎn)入相應(yīng)的操作。如果接收緩存器滿而另一個報文的首字節(jié)又需要被存儲時,數(shù)據(jù)超限位被置位,此時應(yīng)清除超限并釋放接收緩存,然后重新發(fā)送數(shù)據(jù)請求。在數(shù)據(jù)接受子程序中當(dāng)數(shù)據(jù)被轉(zhuǎn)入RAM區(qū)后,應(yīng)及時釋放接受緩存器,以便為接收下一幀數(shù)據(jù)做好準(zhǔn)備。

圖5


數(shù)據(jù)發(fā)送子程序見圖6。CAN控制器向總線發(fā)送數(shù)據(jù)時,首先將在片主RAM中數(shù)據(jù)存放的首地址寫入CANSTA,然后讀取CANSTA.6的值(讀 CANSTA的操作其實是對CAN控制器內(nèi)部狀態(tài)寄存器的讀操作,CANSTA.6是錯誤顯示位,當(dāng)至少有一個總線錯誤計數(shù)器計數(shù)達(dá)到CPU告警極限時,該位將被CAN控制器置位。),若檢測出錯,則執(zhí)行CAN初始化子程序,若正常,則繼續(xù)檢測接收狀態(tài)和發(fā)送緩沖器狀態(tài),若發(fā)送條件滿足則在CANADR中寫入發(fā)送緩存器地址并置位DMA控制位(MOV CANADR , 8AH),DMA傳送隨即被啟動,數(shù)據(jù)場由RAM拷貝到發(fā)送緩存器,置發(fā)送請求位(CANCON.0)后數(shù)據(jù)開始發(fā)送。

4 結(jié)束語

用高性能的P80C592和數(shù)據(jù)采集模塊組成車輛環(huán)境數(shù)據(jù)采集系統(tǒng)具有較高的性價比,目前該系統(tǒng)已投入試用階段,運行狀況良好。CAN總線非常適合分布式控制或適時控制的串行通信網(wǎng)絡(luò),本課題只涉及了數(shù)據(jù)采集,如果在此基礎(chǔ)上擴(kuò)展車輛輔助控制和重要數(shù)據(jù)備份功能,系統(tǒng)將會有更廣闊的應(yīng)用前景。

參考文獻(xiàn):

[1] 鄔寬明. CAN總線原理和應(yīng)用系統(tǒng)設(shè)計. 北京航空航天大學(xué)出版社. 1996 (編輯:chiying)



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉