• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于OBD—II的故障診斷及數(shù)據(jù)采集系統(tǒng)設(shè)計

    2017-12-02 09:04:48范黎周美嬌張軒雄
    軟件導(dǎo)刊 2017年11期

    范黎+周美嬌+張軒雄

    摘要:為了迅速地幫助車輛開發(fā)、測試人員獲取車輛排放數(shù)據(jù)和定位汽車故障原因,設(shè)計了一套基于OBD-II協(xié)議的車輛故障診斷系統(tǒng)。在系統(tǒng)硬件上,該故障診斷模塊采用STM32F103CBT6作為主控芯片,通過TJA1050CAN收發(fā)器與車輛的OBD接口進行數(shù)據(jù)交互;軟件上下位機采用keil4開發(fā)環(huán)境完成固件開發(fā),上位機采用C#語言通過串口實時顯示診斷信息和信號值。通過軟硬件協(xié)同工作,最終實現(xiàn)上位機終端界面發(fā)送讀取故障請求或?qū)崟r數(shù)據(jù)流請求時,終端界面會顯示響應(yīng)的回復(fù)值等功能。通過系統(tǒng)測試,證明了該診斷系統(tǒng)數(shù)據(jù)準確、響應(yīng)速度快。

    關(guān)鍵詞關(guān)鍵詞:OBD-II;STM32;故障碼;故障診斷系統(tǒng);數(shù)據(jù)采集系統(tǒng)

    DOIDOI:10.11907/rjdk.171857

    中圖分類號:TP319

    文獻標識碼:A文章編號文章編號:16727800(2017)011006804

    0引言

    當汽車發(fā)生故障時,有可能導(dǎo)致一氧化碳、碳氫化合物、氮氧化合物或燃油蒸發(fā)污染量超過設(shè)定指標,這些有害氣體給人類、動物、植物及整個自然界的生物帶來了極大傷害[1]。OBDII是第二代汽車診斷系統(tǒng)(OnBoardDiagnostics,OBD),用于隨時監(jiān)控發(fā)動機運行狀況和尾氣處理系統(tǒng)工作狀態(tài)并識別排放部件故障。當排放超標時,車內(nèi)的故障燈則會點亮報警,汽車ECU會檢測和存儲相關(guān)故障信息[2]。與第一代診斷系統(tǒng)相比,OBDII標準化了通信協(xié)議和故障碼,也定義了更加嚴格的排放標準,更加便于汽車開發(fā)、測試人員獲取車輛排放數(shù)據(jù)及定位汽車故障原因。

    1系統(tǒng)總體框架及硬件設(shè)計

    車輛故障診斷系統(tǒng)采用型號為STM32F103CBT6的單片機嵌入ISO15765協(xié)議完成車輛的故障診斷和傳感器信息獲取。單片機根據(jù)標準協(xié)議發(fā)送特定的CAN報文到車輛的總線網(wǎng)絡(luò)中,被檢測的車輛收到報文后根據(jù)命令回復(fù)故障代碼(DTC)和數(shù)據(jù)流(RDS)。診斷系統(tǒng)上位機通過串口和下位機通信,解析實際故障信息并實時顯示相關(guān)傳感器的信號值。該系統(tǒng)主要分為主控電路、電源電路、USB轉(zhuǎn)串口電路與CAN收發(fā)器通訊電路。在硬件設(shè)計中,選擇STM32F103CBT6芯片作為主控芯片,電源電路模塊采用622K芯片,CAN收發(fā)電路模塊采用TJA1050芯片,USB轉(zhuǎn)串口模塊采用CP2102芯片。系統(tǒng)結(jié)構(gòu)如圖1所示。

    圖1系統(tǒng)結(jié)構(gòu)

    1.1主控電路設(shè)計

    本系統(tǒng)采用基于CotexM3內(nèi)核的32位處理芯片STM32F103CBT6作為主控芯片。由于STM32F103xx系列擁有ARM核心,因此可以兼容ARM開發(fā)相關(guān)的各種軟件與工具。存儲方面擁有128K FLASH和多達64K的SRAM,保證了數(shù)據(jù)和程序存儲能力[3]。系統(tǒng)通過芯片倍頻技術(shù)可達到72MHz,非常適用于對處理速度和通訊速度要求很高的診斷系統(tǒng)。圖2是STM32F103CBT6的引腳分布圖。

    圖2STM32F103CBT6引腳分布

    1.2電源電路設(shè)計

    汽車供電系統(tǒng)為12V,而STM32F103CBT6芯片的供電額定電壓為3.3V,為了診斷系統(tǒng)的便捷性,需要設(shè)計降壓電路以滿足要求。采用622k直流穩(wěn)壓芯片將ECU電源轉(zhuǎn)化為1.5V~3.3V,電源效率高,輸入穩(wěn)定性好[4]。電源電路設(shè)計如圖3所示。電壓輸出端與主控芯片STM32F103CBT6的PA11相連,C6和C7為接地電容,可以防止高頻噪聲干擾,確保主控和通訊子系統(tǒng)穩(wěn)定工作。

    圖3電源電路設(shè)計

    1.3CAN收發(fā)電路

    系統(tǒng)的CAN收發(fā)電路采用TJA1050芯片作為診斷系統(tǒng)和汽車OBD的物理接口。TJA1050為總線提供數(shù)據(jù)發(fā)送和接收功能。如圖4所示,CAN收發(fā)電路中的RXD、TXD,與STM32F103CBT6控制芯片的PB5和PB6引腳連接,CAN_H、CAN_L和OBD中的對應(yīng)引腳連接。TJA1050使用5V供電,C4、C5為CAN_H、CAN_L對地匹配電容。接入的電容提高了電磁干擾性能,并且與相應(yīng)的噪聲源阻抗形成RC低通濾波[5]。

    圖4CAN收發(fā)器電路設(shè)計

    1.4USB轉(zhuǎn)串口電路

    下位機采集的數(shù)據(jù)通過USB轉(zhuǎn)串口方式與主控芯片進行數(shù)據(jù)交互。本系統(tǒng)采用CP2102芯片將主控芯片的串口轉(zhuǎn)化為虛擬USB口。RXD、TDX與主控芯片STM32F103CBT6的PB13和PB14連接。C12為接地電容,抑制數(shù)據(jù)傳輸過程中的電磁干擾。當與USB口連接成功后點亮D0,PC端上位機系統(tǒng)即可與下位機進行通信。USB轉(zhuǎn)串口電路如圖5所示。

    圖5USB轉(zhuǎn)串口電路

    2軟件設(shè)計

    下位機單片機STM32F103CBT6的程序設(shè)計使用的keil4軟件平臺采用C語言開發(fā),主要包括對STM32F103CBT6的初始化,以及故障代碼和實時數(shù)據(jù)流的采集與解析。初始化主要包括延時程序、系統(tǒng)時鐘配置、串口、CAN口及中斷程序的初始化。其中數(shù)據(jù)的采集和解析參照OBDII協(xié)議標準,實現(xiàn)對汽車故障碼和實時數(shù)據(jù)流獲取。圖6為主程序流程。上位機程序設(shè)計使用微軟Visual Studio軟件平臺,采用C#語言開發(fā),主要包括讀取故障碼、讀取實時數(shù)據(jù)流和清除故障碼3大功能模塊,通過USB串口程序?qū)崿F(xiàn)與下位機的通信,最終顯示故障信息和信號值。

    圖6主程序流程

    2.1數(shù)據(jù)采集與解析

    OBDII系統(tǒng)支持的協(xié)議主要包括IOS9141、SAEJ1859(PWM)、SAEJ1859(VPM)、KWP200、ISO15765[6]。本系統(tǒng)的數(shù)據(jù)讀取和解析協(xié)議采用ISO15764,該協(xié)議是基于汽車CAN總線網(wǎng)絡(luò)的診斷協(xié)議,其CAN報文收發(fā)的核心代碼如下:

    u8* SendFrame(CanTxMsg* TxMessage,ErrorStatus* err)//定義CAN報文收發(fā)函數(shù)endprint

    {

    u8TransmitMailbox;

    u32i;

    CANRXMAIL = ERROR;

    TransmitMailbox = CAN_Transmit(CAN1, TxMessage);//發(fā)送CAN,若發(fā)送成功,返回存入信號箱

    while(CAN_TransmitStatus(CAN1,TransmitMailbox) != CANTXOK);//判斷是否發(fā)送成功

    for (i = 0;i < 10000000/3;i++)//延時大約1.5s

    {

    if (CANRXMAIL == SUCCESS) break;

    }

    *err = CANRXMAIL;

    return (u8*)&RXRAM[0];//返回CAN報文的數(shù)據(jù)域

    }

    ISO15764協(xié)議有標準幀和擴展幀兩種不同的CAN報文,標準幀的標識符ID為0X7DF,擴展幀的標識符ID為0X18DB33F1,其算法和格式相同。表1為標準幀CAN報文的傳輸格式,其中PCI表示協(xié)議控制字節(jié)數(shù)量,MODE為請求模式,PID為讀取數(shù)據(jù)流的參數(shù)標志,PCI、MODE和PID組成CAN報文的數(shù)據(jù)域[7]。不同的PID對應(yīng)讀取不同的數(shù)據(jù)流條目,例如0x0C代表讀取發(fā)動機轉(zhuǎn)速,0x0D代表讀取車速,0x15代表讀取氧傳感器輸出電壓,本系統(tǒng)總共實現(xiàn)了16條數(shù)據(jù)實時值的讀取。然后,根據(jù)返回的CAN報文的PID進行數(shù)據(jù)解析,例如:車速為xx/3 km/h,氧傳感器輸出電壓(缸組1,傳感器2)為xx*0.005。

    2.2USB轉(zhuǎn)串口程序設(shè)計

    上位機采用C#語言通過串口實時顯示診斷信息和信號值。C#使用SerilPort類,可以方便地實現(xiàn)串口通信的多種功能[8]。IsOpen()函數(shù)判斷串行端口的開關(guān)狀態(tài),ReadBufferSize()函數(shù)設(shè)置串行端口輸入緩沖區(qū)大小,以防止數(shù)據(jù)傳輸過程中丟失。Read()和Write()函數(shù)實現(xiàn)串口的讀取和發(fā)送操作[9]。串口通信初始化如下:

    public boolSerialport_Config(int Baud, string COMx)//串口初始化函數(shù)

    {

    try

    {

    com.BaudRate = Baud; //獲取串行波特率

    com.PortName = COMx; //獲取通信端口

    com.DataBits = 8; //設(shè)置字節(jié)長度

    com.Open();//打開新的串口連接

    }

    catch (System.Exception)

    {

    return false;//獲取系統(tǒng)異常返回false

    }

    return true;

    }

    3系統(tǒng)調(diào)試及實驗結(jié)果

    系統(tǒng)硬件使用PADS畫出系統(tǒng)的PCD線路板后進行打樣,焊接好元器件和貼片后,使用JInk,并采用SWD方式將程序燒錄到單片機中,然后進行軟件調(diào)試。實物如圖8所示。

    圖8系統(tǒng)實物圖

    實驗環(huán)境采用ECU模擬器模擬OBDII系統(tǒng)的ISO157654協(xié)議,通過CAN收發(fā)器的CAN_TXD1和CAN_RXD1與ECU模擬器OBD接口的6、14端口連接,然后將USB串口模塊與電腦連接。安裝串口驅(qū)動后,選擇正確的COM口,故障診斷界面上的狀態(tài)燈會變成綠色。圖9、圖10分別為讀取故障碼和讀取實時數(shù)據(jù)流的測試結(jié)果。由結(jié)果可以看出,汽車發(fā)生故障的原因為燃油量穩(wěn)壓控制電路開路、渦輪增壓渦輪機超速。測試、開發(fā)人員則可以通過響應(yīng)的回復(fù)值來迅速定位汽車故障原因,對相關(guān)硬件進行排查。還可以讀取實時數(shù)據(jù)值,獲取汽車發(fā)動機轉(zhuǎn)速、進氣溫度、計算負荷值和發(fā)動機冷卻溫度等實時數(shù)據(jù),幫助測試和開發(fā)人員獲取車輛排放數(shù)據(jù)。對相應(yīng)的硬件檢測完成后,可以通過清除故障碼按鈕,對汽車內(nèi)部的故障碼進行清除。

    通過5組實驗測試進行對比,響應(yīng)的回復(fù)值均顯示正確,而且響應(yīng)時間都在5s內(nèi),滿足了設(shè)計要求,能夠?qū)崿F(xiàn)及時獲取響應(yīng)的回復(fù)值等功能。

    4結(jié)語

    基于OBDII的故障診斷及數(shù)據(jù)采集系統(tǒng),經(jīng)過各種功能測試,可以迅速獲取車輛實時排放數(shù)據(jù)并定位汽車故障原因。相比于市場上造價高、體積大的一些原廠汽車故障檢測儀,本文設(shè)計的系統(tǒng)造價低廉、響應(yīng)速度快,具有廣闊的市場前景。

    參考文獻參考文獻:

    [1]劉揚,郭建斌.汽車對生態(tài)環(huán)境的分析研究與前景判斷[J].環(huán)境保護與經(jīng)濟循環(huán),2008(9):4446,50.

    [2]HERPEL N,SONG Y,SIMONOTLION F,et al.Trends in automotive communication systems[J].Proceedings of IEEE,2005,92(6):12041223.

    [3]STMicrorelecttonics.STM322 reference maunual[Z].2016:6061.

    [4]劉純虎,付斌,盛慶華.基于STM32的微型USBCAN適配器開發(fā)[J].計算機測量與控制,2013(4):996998.

    [5]蔡磊.基于STM32F103芯片的USB接口的研究與實現(xiàn)[D].上海:復(fù)旦大學(xué),2009.

    [6]孟磊.基于OBDⅡ的車載遠程故障診斷系統(tǒng)設(shè)計[D].武漢:武漢理工大學(xué),2012.

    [7]Road vehiclesdiagnosetics on controller area network (CAN)Part4: requirement for emissionsrelated system[S].ISO57654,2005.

    [8]王鐵流,李宗方,陳東升.基于STM32的USB數(shù)據(jù)采集模塊的設(shè)計與實現(xiàn)[J].測控技術(shù),2009(8):3740.

    [9]陳思敏.基于USB通信設(shè)備類的虛擬串口的研究與設(shè)計[D].武漢:武漢科技大學(xué),2013.

    責任編輯(責任編輯:黃健)endprint

    堆龙德庆县| 德州市| 株洲县| 海丰县| 西吉县| 山东省| 临江市| 东明县| 阿城市| 仲巴县| 信丰县| 衡山县| 碌曲县| 乐亭县| 右玉县| 贡嘎县| 利津县| 新沂市| 班戈县| 阿巴嘎旗| 清镇市| 德钦县| 平利县| 瑞昌市| 基隆市| 洞头县| 扶风县| 乌兰察布市| 嵩明县| 高碑店市| 阳新县| 南江县| 石景山区| 合山市| 绥江县| 乌海市| 平武县| 铜山县| 鸡东县| 鹤山市| 丰镇市|