<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 消費電子 > 設計應用 > 基于CAN總線(xiàn)技術(shù)的車(chē)輛虛擬儀表數據采集系統的設計

基于CAN總線(xiàn)技術(shù)的車(chē)輛虛擬儀表數據采集系統的設計

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

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

2 系統簡(jiǎn)介

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

2.1 系統硬件結構設計

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

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

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

圖1


2.2 頻率信號測量

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

圖2


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

3 系統軟件設計

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

圖3

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

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

3.1 CAN控制器編程

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

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

表一


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

圖4


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

圖5


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

4 結束語(yǔ)

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

參考文獻:

[1] 鄔寬明. CAN總線(xiàn)原理和應用系統設計. 北京航空航天大學(xué)出版社. 1996 (編輯:chiying)



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>