李永偉,許 勇,劉 強
(桂林電子科技大學(xué)電子工程與自動化學(xué)院,廣西桂林 541004)
隨著汽車電子技術(shù)的發(fā)展,現(xiàn)代汽車配置有各種汽車電子儀表和多種電子控制裝置,以提高整車的舒適性、可操控性、安全性等各項技術(shù)指標。典型的控制單元有發(fā)動機管理系統(tǒng)、自動變速系統(tǒng)、防抱死制動系統(tǒng)、巡航控制系統(tǒng)、儀表顯示系統(tǒng)等等。這些電氣設(shè)備的應(yīng)用,必然導(dǎo)致車身布線越來越長,運行可靠性降低,維護難度增加。提高信號的利用率,而且大數(shù)據(jù)能在不同的ECU之間實現(xiàn)信息的共享,傳統(tǒng)的線束已經(jīng)遠遠不能滿足這種通信需求,CAN總線和基于它的車輛網(wǎng)絡(luò)通信標準提供了解決上述問題的途徑。SAEJ1939協(xié)議是SAE發(fā)布的以CAN總線為基礎(chǔ)、以CAN 2.0B作為網(wǎng)絡(luò)核心協(xié)議的車輛網(wǎng)絡(luò)串行通信和控制協(xié)議,其使用多路復(fù)用技術(shù)使各電氣設(shè)備之間建立了以CAN總線為基礎(chǔ)的高速通信網(wǎng)絡(luò),實現(xiàn)了數(shù)據(jù)的共享,而且減少了汽車線束[1]。
柴油發(fā)動機作為動力來源,是汽車和船舶等裝載設(shè)備的核心,同時柴油發(fā)動機也是大量固定動力系統(tǒng)如發(fā)動機等的動力來源,應(yīng)用及其廣泛。柴油發(fā)動機的動態(tài)監(jiān)控也成為目前非常重要的技術(shù)問題,其功能和效率都在隨著技術(shù)進步逐漸提高。
作為柴油機電控系統(tǒng)的核心,發(fā)動機的電控單元ECU(Electronic Control Unit)將發(fā)動機的傳感器如共軌壓力傳感器、機油壓力溫度傳感器、水溫傳感器、曲軸轉(zhuǎn)速傳感器等模擬信號和數(shù)字信號進行采集,作為執(zhí)行器如噴油器、電磁風扇線圈等的控制依據(jù),并同時對信息進行處理打包通過CAN總線傳向車載網(wǎng)絡(luò)。
目前基于SAEJ1939協(xié)議的CAN總線技術(shù)已廣泛應(yīng)用于國內(nèi)外的先進內(nèi)燃機中,通過附件ECU,基于SAEJ1939協(xié)議的柴油機監(jiān)控系統(tǒng)能夠?qū)崟r獲取柴油機的各項運行參數(shù)和故障信息,為操作者了解和掌握發(fā)動機當前狀態(tài),提供了大量信息[2-3]。
針對具有SAEJ1939 總線接口的發(fā)動機ECU,開發(fā)了基于CAN總線的發(fā)動機狀態(tài)參數(shù)及故障信息顯示系統(tǒng)。
選用EDC17電控發(fā)動機ECU與STM32單片機通過CAN總線收發(fā)器建立通訊,該系統(tǒng)遵守CAN2.0B協(xié)議和SAEJ1939應(yīng)用層協(xié)議,根據(jù)車載儀表等發(fā)展趨勢和技術(shù)要求,選用液晶顯示器作為顯示載體,系統(tǒng)原理框圖如圖1所示。CAN總線的數(shù)據(jù)報文通過總線由發(fā)動機ECU經(jīng)過CTM1050T CAN收發(fā)器送入主控MCU STM32,然后依照SAE J1939協(xié)議對數(shù)據(jù)包進行解析計算得到發(fā)動機的水溫、油壓、轉(zhuǎn)速等狀態(tài)參數(shù),然后由FSMC接口送往LCD顯示,并且通過觸摸屏實現(xiàn)人機交互[4]。
圖1 系統(tǒng)原理框圖
2.1主控MCUSTM32
系統(tǒng)采用了基于Cortex-M3內(nèi)核的32位增強型閃存微控制器STM32F103VET6作為控制核心,這是一款低功率處理器,特點是門數(shù)低、中斷延遲短且調(diào)試成本低。它專用于要求快速中斷響應(yīng)的深層嵌入式應(yīng)用程序,包括微控制器、汽車和工業(yè)控制系統(tǒng)。其工作頻率為72 MHz執(zhí)行速度為1.25 DMIPS/MHz,內(nèi)部帶有ADC、I2C、UART、USB、SPI、FSMC等外圍接口,特別是其內(nèi)部帶有支持CAN 2.0B協(xié)議的CAN控制器,簡化了系統(tǒng)的軟硬件設(shè)計[5]。
此外,靈活的靜態(tài)存儲控制器FSMC能夠同步或異步存儲器與16位PC卡接口相連,便于外擴存儲器和液晶顯示屏。
2.2CAN通信接口電路
CAN總線接口是采用帶隔離及TVS保護的通用CAN收發(fā)器CTM1050T為CAN控制器與物理總線之間提供接口,CTM1050T內(nèi)部集成了信號隔離電路和所有必需的CAN電平轉(zhuǎn)換電路,具備差動發(fā)送和接收功能,同時帶有TVS保護,可以支持最高1 Mb/s的通訊速率,單芯片實現(xiàn)了CAN節(jié)點的數(shù)據(jù)收發(fā)、隔離、保護功能,并且具有工業(yè)級的溫度范圍(-40~85℃);從而省卻了傳統(tǒng)設(shè)計中采用的光電耦合器件、DC-DC隔離(2 500 V隔離)、CAN收發(fā)器等多種器件。為了提高總線通信時的抗干擾能力,分別在CAN的接收端(RXD)和CANH與CANL之間加上30pF和100pF的電容。CAN通信接口原理圖如圖2所示。
圖2 CAN通信接口原理圖
2.3JTAGSWD模式下載電路
傳統(tǒng)的JTAG下載調(diào)試模式使用的是20 pin接口,太多的接口會占據(jù)PCB板大量的空間,想實現(xiàn)PCB板的小型化比較困難。所以系統(tǒng)采用的是SWD模式,其下載速度可以達到10 M/s,而且高速下載時比傳統(tǒng)的JTAG更加可靠,此模式只需要4跟線,分別是VTref,SWDIO,SWCLK,GND.
3.1SAEJ1939通訊報文內(nèi)容解析
J1939是一種支持閉環(huán)控制的多個ECU之間高速通信的網(wǎng)絡(luò)協(xié)議網(wǎng)[6-7]。J1939協(xié)議實質(zhì)是將CAN擴展幀格式中未明確定義的11位ID,18位擴展ID進行了明確定義,緊隨ID的是8個字節(jié)的數(shù)據(jù)域,如表1所示。
表1 CAN擴展幀格式與J1939幀格式對照表
系統(tǒng)所采用EDC17電控發(fā)動機ECU作為檢測對象,它依據(jù)SAE J1939通用協(xié)議標準,實現(xiàn)濰柴發(fā)動機CAN總線通訊在基于發(fā)動機/車輛中的不同電控單元之間信息的傳遞和交換。表2為通過CAN分析儀接收到的數(shù)據(jù),其幀格式為數(shù)據(jù)幀,幀類型為擴展幀,數(shù)據(jù)長度為8。
表2 ECU的總線數(shù)據(jù)
CAN擴展幀格式包含一個單一的協(xié)議數(shù)據(jù)單元(PDU),由七部分組成,分別是優(yōu)先級(P),保留位(R),數(shù)據(jù)頁(DP),PDU格式(PF),特定PDU(PS),源地址(SA)和數(shù)據(jù)域。根據(jù)J1939協(xié)議規(guī)定其地址解譯和數(shù)據(jù)信息解釋(對故障信息的解譯本文不再詳述),首先退ID地址解譯,通過以上所得實驗數(shù)據(jù)分析,以幀ID 0x0CF00400為例,其位信息的分配如表3所示[8]。
表3位信息分配表
從上表可以看出優(yōu)先級(P):3,數(shù)據(jù)頁(DP):0,PDU格式(PF):240,特定PDU(PS):4,參數(shù)組編號(PGN):61444,另外,以濰柴發(fā)動機為例,發(fā)動機的源地址(SA)被定義為0。
數(shù)據(jù)信息解釋,J1939應(yīng)用層定義了J1939網(wǎng)絡(luò)的每個參數(shù),并為每個參數(shù)分配了一個編號(SPN)。在程序中是通過與數(shù)據(jù)信息的ID進行匹配查找每一個參數(shù)組,通過幀ID的匹配把相應(yīng)的接收信息存入不同的PGN組,系統(tǒng)對PGN分成了29組,程序中根據(jù)不同的幀ID定義了不同的PGN,具體實現(xiàn)方法如下所示。
if(RxMessage.ExtId==0x0CF00400)SAEJ1939_PGN[1]=RxMessage;
if(RxMessage.ExtId==0x18FEE000)SAEJ1939_PGN[4]=RxMessage;
在幀的數(shù)據(jù)域中發(fā)動機轉(zhuǎn)速占據(jù)參數(shù)組的第4、5字節(jié)。下面的程序講述了如何從參數(shù)組F004中獲得相應(yīng)的數(shù)據(jù)。
void PGN_F004(void)
{
spn513=SAEJ1939_PGN[1].Data[1];
spn512=SAEJ1939_PGN[1].Data[7];
spn190=(SAEJ1939_PGN[1].Data[4]<<8|
SAEJ1939_PGN[1].Data[3])>>3;
}
根據(jù)第4、5字節(jié)的數(shù)值及SPN190中的定義其計算方式如下:
發(fā)動機轉(zhuǎn)速=原始數(shù)×分辨率+偏移量
如果第4、5字節(jié)的數(shù)據(jù)分別為3EH、40H.則發(fā)動機轉(zhuǎn)速計算公式為:
發(fā)動機轉(zhuǎn)速=62×32+64×0.125=1 992 rpm
3.2CAN總線底層配置
柴油機電控系統(tǒng)以SAEJ1939協(xié)議數(shù)據(jù)廣播的形式,按規(guī)定格式和周期向外部控制系統(tǒng)傳輸數(shù)據(jù)(轉(zhuǎn)速、壓力、溫度等)到CAN總線上,系統(tǒng)采用CAN總線接受中斷的方式實現(xiàn)數(shù)據(jù)的接收,一旦中斷發(fā)生,即將接收的數(shù)據(jù)經(jīng)過過濾器的匹配后自動存儲到接收郵箱中等待進一步處理。SAEJ1939采用250K的通信波特率,所以也需要將系統(tǒng)CAN通信波特率配置為250 K,STM32的bxCAN掛載在APB1總線上,當Ppclk=36 M時,其波特率的配置如下。
CAN_InitStructure.CAN_SJW=CAN_SJW_1tq;
CAN_InitStructure.CAN_BS1=CAN_BS1_8tq;
CAN_InitStructure.CAN_BS2=CAN_BS2_7tq;
CAN_InitStructure.CAN_Prescaler=9。
3.3μCOS-II實時操作系統(tǒng)及μCGUI圖形界面系統(tǒng)
文中采用實時操作系統(tǒng)μCOS-II作為STM32的片上操作系統(tǒng),實時性是指能在確定的時間內(nèi)執(zhí)行計算或處理功能,并對外部的異步事件做出響應(yīng)。系統(tǒng)的核心在于任務(wù)調(diào)度,而任務(wù)調(diào)度的依據(jù)是根據(jù)任務(wù)的優(yōu)先級來完成的,μCOS最多支持63個任務(wù)每個任務(wù)只能有獨立的優(yōu)先級[9]。軟件設(shè)計流程圖如圖3所示。根據(jù)系統(tǒng)的需要文中各任務(wù)的優(yōu)先級分配如表4所示。
表4 任務(wù)優(yōu)先級分配表
圖3 軟件設(shè)計流程圖
μCGUI是一種用于嵌入式應(yīng)用的圖形支持軟件。它被設(shè)計用于為任何使用一個圖形LCD的應(yīng)用提供一個有效的不依賴于處理器和LCD控制器的圖形用戶接口。它能工作于單任務(wù)或多任務(wù)的系統(tǒng)環(huán)境下。采用GUI的視窗管理可以實現(xiàn)對物理液晶屏的虛擬擴展,根據(jù)系統(tǒng)需要使用視窗管理建立了4個窗口,而且在線比較粗的地方采用抗鋸齒處理。需要注意的是在使用μCGUI相應(yīng)的功能的時候需要先在配置文件中將該位對應(yīng)的功能置1,其中第二窗口如圖4所示。其它顯示元素主要是采用了CGUI的基本繪圖函數(shù),LCD驅(qū)動層的基本繪圖函數(shù)如下:
LCD_L0_DrawHLine()繪制一條水平線
LCD_L0_DrawVLine()繪制一條垂直線
LCD_L0_DrawBitmap()通用繪制位圖函數(shù)
LCD_L0_FillRect()直譯一個矩形區(qū)域
LCD_L0_XorPixel()翻轉(zhuǎn)一個像素
圖4 界面窗口
在完成了系統(tǒng)的硬件設(shè)計后,軟件的調(diào)試就需要依賴ECU的實時數(shù)據(jù)。系統(tǒng)采用的是濰柴EDC17電控發(fā)動機ECU,根據(jù)其電器匹配手冊搭建ECU的運行環(huán)境。部分傳感器通過電位器模擬,試驗臺的調(diào)節(jié)面板部分包括機油溫度、機油壓力、冷卻液溫度、冷卻液壓力,通過旋鈕可以手動調(diào)節(jié)。
文中通過對發(fā)動機電控系統(tǒng)CAN總線報文的分析,基于SAE J1939協(xié)議并搭載實時操作系統(tǒng)μCOS II和圖形界面顯示系統(tǒng)μCGUI 開發(fā)了發(fā)動機參數(shù)顯示系統(tǒng),并進行了實驗驗證。設(shè)計的數(shù)據(jù)顯示界面功能全,簡單明了。為使用者提供了大量的發(fā)動機實時數(shù)據(jù),有利于發(fā)動機的維護和保養(yǎng)。
參考文獻:
[1]許勇.工業(yè)通信網(wǎng)絡(luò)技術(shù)和應(yīng)用.西安:西安電子科技大學(xué)出版社,2013.
[2]吳志玲,靳鴻,武耀艷.基于CAN總線的分布式測試系統(tǒng)節(jié)點設(shè)計.儀表技術(shù)與傳感器.2013(4):57-58
[3]賴海鵬,馮國勝.基于DSP電控柴油機監(jiān)控系統(tǒng)的開發(fā).柴油機設(shè)計與制造,2002(4):27-31.
[4]劉嘉,黃英等.基于SAE J1939協(xié)議的發(fā)動機虛擬儀表及故障診斷系統(tǒng)開發(fā).設(shè)計·計算·研究,2007(6):22-25.
[5]Cortex-M3 Technical Reference Manual.2010.
[6]SAE Standard.SAE J1939/21:Data link layer,2000.
[7]SAE Standard.SAE J1939/73:Vehicle Application Layer,2003.
[8]SAE Standard.SAE J1939/73:Vehicle Application Layer Diagnostics,2003.
[9]嵌入式實時操作系統(tǒng)μC/OS-II(2版).邵貝貝譯.北京:北京航空航天大學(xué)出版社,2005.