1 引言
現在總線技術有很多種。從成本上講,RS-232/485的成本都比CAN低;速度上講,工業以太網等也都不錯。為什么唯獨CAN在汽車電子中得到親睞?
從成本上來說,CAN比UART、RS-232/485高,但比以太網低;從實時性來說:CAN的實時性比UART和以太網高,為了保證安全,車用通信協議都是按周期性主動發送,不論是CAN還是LIN,對實時性要求高的消息其發送周期都小于10ms(每輛車都有好幾條這樣的消息),發動機、ABS和變速器都有幾條這樣的消息;從可靠性來說,CAN有一系列事故安全措施,這是UART和以太網都不具備的,多點冗余也是UART(點對點傳輸)和工業以太網(數據傳輸距離短)難于實現的,所以CAN出現后,由于價格的原因,最初應用得最多的地方并不是汽車,而是對成本不敏感的工業控制和醫療設備,如:工業上的DEVICENET、SDS、CANOPEN,醫療上MRI等。至于工業以太網的產生,其背景與個人PC的普及是分不開的,現在工業控制中的PCBASED就是一個例子,但汽車控制是不能用一臺PC的,要達到汽車控制的要求,成本上也不容許。而LIN的傳輸過程只有20Kbps,顯然不能作為獨立的汽車總線控制要求,一般它只配合CAN在汽車上做輔助之用。
車輛是一個特殊的應用環境,車輛自動化程度的不斷提高給車輛儀表提出了更高的要求,傳統的動磁式儀表已經越來越不適應現代智能交通工具發展的需要,而虛擬儀表因其具有交互、智能和便于擴展等特點而受到廣泛重視。本課題要求為某車設計一套虛擬儀表,上位機采用基于RTOS開發環境的PC104嵌入式微機。車輛環境數據采集系統作為虛擬儀表的一個最重要的子系統,要求完成數據的采集和通信功能,而且具有較高的適時性和可靠性。本文根據作者體會介紹了用 Philips公司的高性能單片機P80C592設計車輛數據采集系統的方法,重點介紹了系統設計和CAN通信編程。
2 系統簡介
根據設計要求,本系統主要完成傳感信號的處理以及車輛的工況數據采集并將數據通過CAN總線送上位機,要求處理16路模擬信號、4路頻率信號和32路擴展 IO信號,采集參數主要有:發動機機油壓力、水溫、油溫、轉速、車速、變速箱油壓、油箱油量以及電網電壓、車門狀態、轉向燈指示、車體超寬指示以及車內環境示警等,信號的形式有電壓、頻率、以及開關量信號,信號頻率范圍為0~ 6KHZ.
2.1 系統硬件結構設計
圖1給出了系統硬件結構圖。系統采用的核心器件為Philips公司的8位高性能微控制器P80C592,它與標準80C51完全兼容,其主要特性有:內建能與內部RAM進行DMA數據傳送的CAN控制器;4個捕獲端口和2個標準的16位定時/計數器;8路模擬量輸入的10位ADC變換器;2×256字節在片RAM和一個Watch Dog.P80C592的在片CAN控制器可以完全實現CAN協議,減少了系統連線,增強了診斷功能和監控能力。數模轉換器件選用12位的 AD1674A,分辨率為0.02%,轉換時間為25uS.為了提高系統抗干擾能力,在模-數電路之間和系統到CAN總線之間采用了光電隔離,并且將模擬電路和數字電路分別設計成兩塊獨立的PCB板,兩板通過棧接組成一個完整的系統。
?
圖1 系統硬件結構圖
硬件工作過程:溫度、壓力以及電壓信號,經相關處理電路送至16路模擬開關MAX306EP,經電壓跟隨電路輸入AD1674A進行A/D轉換,為了提高可靠性和穩定性,系統沒有采用微控制器的在片ADC變換器。在程序控制下對16路信號順序選通,采集得到的數據在CAN控制器內完成CAN協議包的封裝,由發送端口經光電隔離和發送器傳送到CAN總線上。油量信號經光電隔離、整形和分頻后送P80C592的捕獲端口進行頻率測量,轉速車速信號經整形后被分為兩路,一路經分頻電路去單片機捕獲端口,另一路經F/V轉換后送ADC采樣。對ADC和I/O擴展端口的訪問通過GAL譯碼器的編程邏輯輸出來控制。
2.2 頻率信號測量
頻率信號測量是本系統的一個設計難點,在本課題中,對于不同的車型所選用的傳感器不同,因此對轉速和車速頻率信號的處理可以有兩種方法:一是當選用輸出頻率范圍為0-100HZ的接觸式傳感器時,采用CS289頻壓轉換芯片,將頻率信號轉換成2.2~7.2V的電壓信號然后送ADC采集;二是當選用輸出信號頻率范圍為0~3000HZ的非接觸式傳感器時,通過單片機捕獲端口用脈沖計數的方法進行頻率測量。為提高系統的通用性,可以同時采用了這兩種方法,具體采用哪一種方法得到的數據通過上微機軟件設定。圖2為F/V轉換電路圖。
?
圖2 F/V轉換電路圖
CS289是美國Cherry公司生產的單片高精度專用轉速測量芯片,在-400至+850溫度范圍內都能有很好的線性輸出。它不僅可以用于F/V、V /F轉換,還可以用作函數發生器以及動磁式儀表驅動。由其構成的F/V轉換電路外圍元件少,調試容易,工作穩定可靠。圖2所示,整形后的轉速脈沖信號經濾波網絡和限幅輸入CS289第10腳,電壓信號由第8腳輸出,經濾波消除可能的工頻干擾后送采樣電路。本電路中,輸出電壓和輸入頻率的關系由下式決定:上位機據此線性關系解算出頻率值。為保證F/V變換具有足夠高的線性度,應合理選取的值。
3 系統軟件設計
系統軟件主要完成三項任務:1、傳感器信號的采樣與解算;2、上位機請求數據時將采集的數據傳送給上位機;3、接收到上位機自檢命令時,上傳數據完成傳感器信號到標準信號的切換。程序流程如圖3所示。
?
圖3 程序流程如圖
主程序采用模塊化編程。具有故障自診斷功能是虛擬儀表的重要特征之一,為此數據采集系統中設計了3組標準信號,分別是頻率信號、電壓信號和電阻信號,自檢模塊的主要功能是:當接收到上位機發出的自檢命令后,微控制器斷開傳感器輸入,標準信號被接入數據采集系統,將得到的數據上傳到上位機與標準值進行比較,以確定故障點是傳感器系統還是數據采集系統,若自檢通過則表示數據采集系統工作正常。數據發送模塊主要實現對上位機的數據通信,本系統設計為每隔20毫秒將數據分組發送到上位機。數據轉存模塊完成各種數據寫入在片主RAM的操作,為了區分數據類型,需要在數據塊中添加相應的類型標識碼,該碼由用戶層協議自行定義。A/D采樣模塊控制系統采樣過程,并將每一路12位采樣數據分兩次讀入指定的RAM單元中。
頻率信號處理模塊完成對捕獲端口頻率的測量,其基本思想是:在被測信號的一個周期時間內,2次脈沖下降沿分別啟動和停止定時器T2計數,兩次計數值之差的倒數即為頻率值,本模塊只需計算差值,頻率值由上位機解算。
3.1 CAN控制器編程
本系統軟件設計的一個難點在于關于CAN的編程。本系統處理的CAN程序模塊有:CAN初始化子程序、CAN中斷程序和CAN數據收發子程序。
CAN 是Controller Area Network 的縮寫,是國際標準化的串行通信協議。在當前的汽車產業中,出于對安全性、舒適性、方便性、低公害、低成本的要求,各種各樣的電子控制系統被開發了出來。由于這些系統之間通信所用的數據類型及對可靠性的要求不盡相同,由多條總線構成的情況很多,線束的數量也隨之增加。為適應"減少線束的數量"、"通過多個LAN,進行大量數據的高速通信"的需要,1986 年德國電氣商博世公司開發出面向汽車的CAN 通信協議。此后,CAN 通過ISO11898 及ISO11519 進行了標準化,現在在歐洲已是汽車網絡的標準協議。
CAN總線的基本特點:
*CAN協議廢除了傳統的站地址編碼,采用數據通信數據塊進行編程,可以多主方式工作。
*CAN采用非破壞性仲裁技術,當兩個節點同時向網絡上傳送數據時,優先級低的節點主動停止數據發送,而優先級高的節點可不受影響地繼續傳輸數據,有效避免了總線沖突。
*CAN采用短幀結構,每一幀的 有效字節為8個(CAN技術規范2.0A),數據傳輸時間短,受干擾的概率低,重新發送的時間短。
*CAN的每幀數據都有CRC效驗及其他檢錯措施,保證了數據傳輸的高可靠性,適于在高干擾環境中使用。
*適用于現場設備與儀表之間或者與其上位設備間的通信網絡,可以統一組態,相互操作,控制功能分散到最底層。
*CAN節點在錯誤嚴重的情況下,具有自動關閉總線的功能,切斷它與總線的聯系,以使總線上其它操作不受影響。
*CAN可以點對點、一點對多點(成組)及全局廣播集中方式傳送和接受數據
*CAN總線直接通訊距離最遠可達10km/5Kbps,通訊速率最高可達1Mbps/40m.
*采用不歸零碼(NRZ-Non-Return-to-Zero)編碼/解碼方式,并采用位填充(插入)技術。
CAN控制器是以CPU存儲器映像外圍設備出現的。P80C592的CPU與CAN控制器之間的數據傳輸通過4個特殊功能寄存器來實現,即: CANADR、CANCON、CANSTA和CANDAT,通過這四個特殊功能寄存器,CPU可以訪問CAN控制器內部的任一寄存器(地址為0~29)和 DMA邏輯。表1給出了這四個SFR的功能簡述,其中CANCON和CANSTA的讀寫操作含義不同。
表1 SFR功能簡述
?
CAN控制器初始化(圖4)是CAN通信中一個非常重要的子程序,程序是否合理將直接影響整個通信過程。CAN控制器的初始化首先必須通過置位CAN控制寄存器的"復位請求"位,置位"復位請求"并不影響正在進行的一個收發作業,特別需要注意的是,只有當復位請求被置位時,CAN內部地址為4-8的寄存器方可被訪問,在復位操作結束后必須將該位置0以保持所進行的設置并使CAN返回工作狀態。
?
圖4 CAN通信中一個重要的子程序
P80C592和其在片CAN控制器都具有中斷寄存器,必須注意兩者的區別。CAN中斷子程序(圖5)首先讀CAN中斷寄存器(IR)以判斷中斷類型,據此轉入相應的操作。如果接收緩存器滿而另一個報文的首字節又需要被存儲時,數據超限位被置位,此時應清除超限并釋放接收緩存,然后重新發送數據請求。在數據接受子程序中當數據被轉入RAM區后,應及時釋放接受緩存器,以便為接收下一幀數據做好準備。
?
圖5 CAN中斷子程序
數據發送子程序見圖6.CAN控制器向總線發送數據時,首先將在片主RAM中數據存放的首地址寫入CANSTA,然后讀取CANSTA.6的值(讀 CANSTA的操作其實是對CAN控制器內部狀態寄存器的讀操作,CANSTA.6是錯誤顯示位,當至少有一個總線錯誤計數器計數達到CPU告警極限時,該位將被CAN控制器置位。),若檢測出錯,則執行CAN初始化子程序,若正常,則繼續檢測接收狀態和發送緩沖器狀態,若發送條件滿足則在CANADR中寫入發送緩存器地址并置位DMA控制位,DMA傳送隨即被啟動,數據場由RAM拷貝到發送緩存器,置發送請求位后數據開始發送。
4 結語
用高性能的P80C592和AD1674A數據采集模塊組成車輛環境數據采集系統具有較高的性價比,目前該系統已投入試用階段,運行狀況良好。CAN總線非常適合分布式控制或適時控制的串行通信網絡,本課題只涉及了數據采集,如果在此基礎上擴展車輛輔助控制和重要數據備份功能,系統將會有更廣闊的應用前景。
評論
查看更多