汪榮會(huì)
(上海柴油機(jī)股份有限公司,上海200438)
Access數(shù)據(jù)庫(kù)在故障診斷軟件中的應(yīng)用
汪榮會(huì)
(上海柴油機(jī)股份有限公司,上海200438)
在故障診斷軟件中應(yīng)用Access數(shù)據(jù)庫(kù)技術(shù),可以靈活地配置診斷軟件支持的ECU型號(hào)、診斷協(xié)議和診斷功能,使診斷軟件具備良好的擴(kuò)展性,提高了軟件升級(jí)的便利性。以功能較為復(fù)雜的柴油機(jī)電控單元診斷軟件為例,介紹Access數(shù)據(jù)庫(kù)在故障診斷軟件中的應(yīng)用。
電控柴油機(jī)故障診斷Access數(shù)據(jù)庫(kù)
為了降低汽車(chē)的尾氣排放和燃油耗,滿足日益嚴(yán)格的法規(guī)要求,滿足國(guó)Ⅲ及以上排放標(biāo)準(zhǔn)的發(fā)動(dòng)機(jī)基本都采取了電控技術(shù)方案。發(fā)動(dòng)機(jī)噴油過(guò)程由電控單元控制,并引入了車(chē)載診斷系統(tǒng)(On Board Diagnosis,OBD),利用電控單元對(duì)電控系統(tǒng)各零部件進(jìn)行連續(xù)檢測(cè)和診斷,自動(dòng)識(shí)別并記錄故障及發(fā)生故障時(shí)的系統(tǒng)信息[1]。借助故障診斷工具,維修人員除了可以讀取和清除故障碼,對(duì)故障發(fā)生的部件及可能發(fā)生的原因可以做準(zhǔn)確的判斷,還可以進(jìn)行參數(shù)讀取、執(zhí)行器測(cè)試、功能配置和數(shù)據(jù)刷寫(xiě)等復(fù)雜操作。因此,診斷工具已成為現(xiàn)代電控發(fā)動(dòng)機(jī)維修和測(cè)試中一種不可或缺的工具。
隨著排放法規(guī)的升級(jí)和電控技術(shù)的發(fā)展,發(fā)動(dòng)機(jī)控制器功能和控制器數(shù)量也迅速增加,發(fā)動(dòng)機(jī)廠家一般存在多平臺(tái)多系列多機(jī)型,不同型號(hào)的發(fā)動(dòng)機(jī)可能使用不同類(lèi)型的電控系統(tǒng)和診斷協(xié)議。為了滿足發(fā)動(dòng)機(jī)電控單元的診斷需求,診斷軟件的功能越來(lái)越多,診斷軟件的升級(jí)也日趨頻繁。
某公司的發(fā)動(dòng)機(jī)具有多平臺(tái)、多機(jī)型、多控制器和多診斷協(xié)議的特點(diǎn),傳統(tǒng)的診斷軟件在機(jī)型識(shí)別和增減匹配方面變得很異常繁瑣,為了解決這一難題,開(kāi)發(fā)人員在進(jìn)行新一代診斷工具研發(fā)時(shí),創(chuàng)造性地在上位機(jī)軟件中引入了微軟公司的Access數(shù)據(jù)庫(kù),可以很方便地進(jìn)行協(xié)議、機(jī)型、功能和參數(shù)的配置,使得機(jī)型在診斷軟件中的配置變得高效便捷。
診斷工具一般有兩種型式,一種是便攜式診斷工具,采用嵌入式操作系統(tǒng),診斷工具的軟硬件集成在一起,攜帶方便,但存在數(shù)據(jù)采集速度慢、診斷結(jié)果分發(fā)不方便等弊端。本文中討論的是另外一種型式,診斷軟件安裝在通用PC機(jī)上,PC機(jī)則通過(guò)協(xié)議轉(zhuǎn)換器連接待診斷的電控單元。這種形式的診斷軟件具有數(shù)據(jù)分發(fā)和數(shù)據(jù)共享更為方便,軟件升級(jí)可以通過(guò)現(xiàn)有網(wǎng)絡(luò)進(jìn)行,也更具通用性,故障診斷工具結(jié)構(gòu)如圖1所示[2]。
圖1 故障診斷工具結(jié)構(gòu)示意圖
故障診斷軟件一般具備基本診斷、動(dòng)態(tài)測(cè)試、EOL刷寫(xiě)等功能。由于CAN總線在汽車(chē)上的廣泛應(yīng)用,在診斷軟件中加入CAN報(bào)文的相關(guān)功能,使得維修、測(cè)試更加方便。故障診斷軟件的一般功能結(jié)構(gòu)展開(kāi)如圖2所示。
圖2 故障診斷軟件的一般功能結(jié)構(gòu)
在故障診斷軟件中,基本診斷功能是指故障信息的讀取與清除,噴油器補(bǔ)償信息的讀取與寫(xiě)入,發(fā)動(dòng)機(jī)運(yùn)行參數(shù)的讀取與顯示;動(dòng)態(tài)測(cè)試功能包括執(zhí)行器測(cè)試和功能測(cè)試,以判斷發(fā)動(dòng)機(jī)零部件功能或性能是否正常;EOL功能則用于功能和配置與標(biāo)定數(shù)據(jù)的刷寫(xiě);CAN總線功能可以讀取總線報(bào)文,并根據(jù)特定的規(guī)則解析為物理參數(shù),還可以向電控單元主動(dòng)發(fā)送CAN報(bào)文,以進(jìn)行特性的功能測(cè)試。
故障診斷軟件的各項(xiàng)功能因電控單元不同而實(shí)現(xiàn)方式不同,需要在診斷軟件中靈活配置,以便正確識(shí)別并采用相應(yīng)的診斷協(xié)議與電控單元進(jìn)行通訊。
MS Access是由微軟發(fā)布的關(guān)系數(shù)據(jù)庫(kù)管理系統(tǒng),通過(guò)Access將數(shù)據(jù)以其自定義的格式存儲(chǔ)在基于Access Jet的數(shù)據(jù)庫(kù)引擎文件里,并被其他應(yīng)用程序引用,文件格式一般為*.mdb或*.accdb。
Access具有強(qiáng)大的數(shù)據(jù)處理、統(tǒng)計(jì)分析能力,能以較小的存儲(chǔ)空間保存大量的字段信息。利用Access的查詢(xún)功能,可靈活設(shè)置統(tǒng)計(jì)的條件,方便地進(jìn)行各類(lèi)統(tǒng)計(jì),在處理大量記錄的數(shù)據(jù)時(shí)速度快且操作方便。Access用來(lái)開(kāi)發(fā)的軟件簡(jiǎn)單易學(xué),非計(jì)算機(jī)專(zhuān)業(yè)的人員也很容易上手,降低了軟件開(kāi)發(fā)難度和使用成本,因此在很多領(lǐng)域得到廣泛使用[3]。
在故障診斷軟件上位機(jī)軟件開(kāi)發(fā)中,可以通過(guò)Access軟件建立數(shù)據(jù)庫(kù)文件,數(shù)據(jù)庫(kù)文件里創(chuàng)建各種表,不同的表中存儲(chǔ)獨(dú)立的診斷信息。診斷軟件上位機(jī)軟件運(yùn)行時(shí),通過(guò)特定的程序接口(DLL動(dòng)態(tài)鏈接庫(kù)文件),訪問(wèn)數(shù)據(jù)庫(kù)文件表中字段,通過(guò)機(jī)型識(shí)別后,在數(shù)據(jù)庫(kù)中查詢(xún)當(dāng)前電控單元所支持的功能及子功能的具體參數(shù),診斷軟件中數(shù)據(jù)庫(kù)的訪問(wèn)方法如圖3所示。
圖3 診斷軟件中數(shù)據(jù)庫(kù)的訪問(wèn)方法
在實(shí)際應(yīng)用中,可以通過(guò)DLL文件和數(shù)據(jù)庫(kù)文件來(lái)實(shí)現(xiàn)診斷協(xié)議的分發(fā),這樣既可以支持客戶工具的開(kāi)發(fā),又能實(shí)現(xiàn)企業(yè)技術(shù)信息的保密。
理論上說(shuō),所有機(jī)型診斷相關(guān)的可變參數(shù)都可以在數(shù)據(jù)庫(kù)中配置,開(kāi)發(fā)人員可以根據(jù)實(shí)際項(xiàng)目應(yīng)用靈活選擇,以下詳述主要診斷參數(shù)在數(shù)據(jù)庫(kù)中的配置方法。
在診斷軟件中,數(shù)據(jù)庫(kù)中的表包括了ECU基本信息、指令負(fù)響應(yīng)代碼表、數(shù)據(jù)庫(kù)修訂記錄表,以及每個(gè)機(jī)型的各種診斷功能表。其中,前三個(gè)表為系統(tǒng)公用,各機(jī)型的診斷功能表為機(jī)型、功能和協(xié)議的組合,功能表的數(shù)量取決于所支持的協(xié)議種類(lèi)和每種協(xié)議的功能數(shù)量。
ECU基本信息表是診斷軟件所支持的ECU的信息匯總表,其具體字段如圖4所示。發(fā)動(dòng)機(jī)ECU所支持的診斷協(xié)議物理層一般為CAN線和K線,因此ECU基本信息表中的字段除了ECU型號(hào),機(jī)型等信息外,主要是K線和CAN線的通訊速率以及各種診斷功能的指令信息。數(shù)據(jù)庫(kù)的這些字段信息可以描述一種ECU所支持的診斷協(xié)議的全部?jī)?nèi)容。
圖4 ECU基本信息表中的字段
診斷方式物理線路上可分為K線和CAN線,其中CAN線的通訊速率有250 kbps,500 kbps和1 Mbps三種。常用的應(yīng)用層協(xié)議有ISO 14229、ISO 14230、ISO 15031、ISO 15765和SAE J1939等幾種[4],這些信息都可以配置在ECU基本信息表中的相應(yīng)字段中。一種機(jī)型可以配置支持多種診斷協(xié)議,在診斷軟件中,每種機(jī)型最多可以配置一種K線協(xié)議和三種CAN線協(xié)議。
負(fù)響應(yīng)(Negative Response)是指當(dāng)ECU不支持某種指令,或者當(dāng)前無(wú)法執(zhí)行支持的某種指令時(shí),對(duì)指令發(fā)出者的回復(fù),ECU通過(guò)特定的代碼說(shuō)明無(wú)法響應(yīng)的原因,以便診斷程序參考。負(fù)響應(yīng)代碼表用于解析ECU回復(fù)的負(fù)響應(yīng)代碼,并通過(guò)程序接口傳遞給用戶界面,用于提示用戶操作,表1中羅列了部分常用的負(fù)響應(yīng)代碼。
表1 部分常用的負(fù)響應(yīng)代碼
數(shù)據(jù)庫(kù)修訂記錄表利用了數(shù)據(jù)庫(kù)可以大量存儲(chǔ)信息的特性,保存數(shù)據(jù)庫(kù)的修訂過(guò)程,便于追溯和版本管理。如果數(shù)據(jù)庫(kù)文件根據(jù)需要發(fā)布多個(gè)不同版本時(shí),該表就十分必要了。
診斷功能表是一類(lèi)表,由機(jī)型、功能和協(xié)議共同決定,主要用于指令格式定義、參數(shù)或代碼解析。常用的診斷功能表如表2所示,診斷功能表在數(shù)據(jù)庫(kù)中命名方式為機(jī)型_功能_協(xié)議,如SC9DF_CAN1_DTC表示SC9DF機(jī)型在CAN1診斷協(xié)議下的讀取故障碼功能。用戶在使用該功能時(shí),DLL文件訪問(wèn)數(shù)據(jù)庫(kù)中的故障信息表,將從ECU讀取的故障信息與表中的信息進(jìn)行比對(duì),查找到匹配記錄后,就會(huì)按照表中定義內(nèi)容進(jìn)行解析,顯示在用戶界面上。常用的診斷功能列表和各功能列表的部分字段分別見(jiàn)表2和表3。
在診斷工具開(kāi)發(fā)過(guò)程中,由于引入了Access數(shù)據(jù)庫(kù)技術(shù),診斷軟件實(shí)現(xiàn)了對(duì)BOSCH、DENSO、UAES、DIAS等公司的燃油系統(tǒng)電控單元,以及凱龍、力達(dá)等公司的后處理系統(tǒng)電控單元的支持。這些電控單元合計(jì)支持7種診斷協(xié)議,22種機(jī)型,4000余條J1939信號(hào),2 000余種故障代碼,50余種測(cè)試功能,Access數(shù)據(jù)庫(kù)在診斷軟件中有效地組織和存儲(chǔ)量大量的診斷信息[5~10]。
表2 常用診斷功能表
表3 各診斷功能表的部分字段匯總
在診斷軟件中使用Access數(shù)據(jù)庫(kù)后,診斷功能相關(guān)的大部分變更都可以由應(yīng)用工程師通過(guò)更改數(shù)據(jù)庫(kù)來(lái)實(shí)現(xiàn),無(wú)需軟件開(kāi)發(fā)工程師更改程序本身。平均更改時(shí)間由此前的一周縮短為一天,有效地提高了工作效率和響應(yīng)速度。
為了保護(hù)企業(yè)技術(shù)信息,數(shù)據(jù)庫(kù)還設(shè)置了訪問(wèn)密碼,診斷軟件在獲取數(shù)據(jù)庫(kù)信息時(shí),首先要通過(guò)密碼驗(yàn)證,否則無(wú)法讀取數(shù)據(jù)庫(kù)中的信息[11]。
在診斷軟件中引入Access數(shù)據(jù)庫(kù)是為了方便進(jìn)行診斷信息的增減和修改,對(duì)數(shù)據(jù)庫(kù)的修改有兩種方式,一種是使用Access軟件直接打開(kāi)數(shù)據(jù)庫(kù)文件,在相應(yīng)的表中直接修改;另外一種是使用企業(yè)自己開(kāi)發(fā)的專(zhuān)用配置軟件,在相應(yīng)的功能界面上進(jìn)行增減和修改操作。
相比第一種方式,使用專(zhuān)業(yè)軟件操作界面直觀,使用者無(wú)需了解數(shù)據(jù)庫(kù)中定義的各字段的具體含義,更容易上手,但數(shù)據(jù)庫(kù)結(jié)構(gòu)發(fā)生變化后,配置軟件也需同步升級(jí)。
Access數(shù)據(jù)庫(kù)升級(jí)也有兩種方式,第一種是通過(guò)電子郵件或移動(dòng)存儲(chǔ)設(shè)備交換數(shù)據(jù)庫(kù)文件,使用新的數(shù)據(jù)庫(kù)文件在軟件安裝目錄替換原數(shù)據(jù)庫(kù)文件即可完成升級(jí)。第二種方式是通過(guò)診斷軟件集成的數(shù)據(jù)庫(kù)升級(jí)功能,在網(wǎng)絡(luò)可用的情況下,診斷軟件可以自動(dòng)檢測(cè)本地?cái)?shù)據(jù)庫(kù)版本與網(wǎng)絡(luò)數(shù)據(jù)庫(kù)版本。如果服務(wù)器有新版本可用,則提示用戶選擇是否升級(jí),服務(wù)器上的數(shù)據(jù)庫(kù)由專(zhuān)人負(fù)責(zé)維護(hù)。
在故障診斷軟件中引入通用的Access數(shù)據(jù)庫(kù),可以很方便地對(duì)診斷軟件支持的電控單元故障診斷信息進(jìn)行配置,從而實(shí)現(xiàn)了無(wú)需軟件代碼層的修改編譯即可進(jìn)行診斷功能的有效擴(kuò)展,提高了軟件更新發(fā)布效率,從而能夠更快地影響市場(chǎng)服務(wù)需求。
[1]環(huán)境保護(hù)部.HJ 437-2008車(chē)用壓燃式、氣體燃料點(diǎn)燃式發(fā)動(dòng)機(jī)與汽車(chē)車(chē)載診斷(OBD)系統(tǒng)技術(shù)要求[S].北京:中國(guó)環(huán)境科學(xué)出版社,2008.
[2]康拉德?賴(lài)夫著.汽車(chē)電子學(xué)[M].李裕華,李航,馬慧敏,譯.西安:西安交通大學(xué)出版社,2011.
[3]莊麗君.基于Access數(shù)據(jù)庫(kù)的應(yīng)用與效果[J].電子技術(shù)與軟件工程,2014(4).
[4]張大慶,張鳳登,張曉霞等.基于SAE J1939協(xié)議的發(fā)動(dòng)機(jī)通信控制器仿真與設(shè)計(jì)[J].工業(yè)控制計(jì)算機(jī),2013(12)
[5]ISO 14229 Road vehicles-Unified diagnostic services(UDS)-Specification and requirements[S]. 2006
[6]ISO 14230 Road Vehicles-Diagnostic Systems Keyword Protocol 2000[S].1999
[7]ISO 15031-4 Diagnostic connector and related electrical circuits,specification and use[S].2004
[8]ISO 15765-4 Requirements for emissions-related systems[S].2005
[9]SAE J1939/71 Issued.Vehicle Application Layer[S].2008
[10]SAE J1939/71 Issued.Application Layer-Diagnostics SAE J1939/73 Issued[S].2006
[11]劉珊.Access應(yīng)用系統(tǒng)開(kāi)發(fā)研究[J].軟件開(kāi)發(fā)與設(shè)計(jì),2010(8).
Access Database Application in Fault Diagnostic Software
Wang Ronghui
(Shanghai Diesel Engine Co.,Ltd.Shanghai 200438,China)
Access database technology application in fault diagnostic sofeware,which can configures flexible engine control unit(ECU)diagnosis information,such as ECU type,protocol type,diagnostic trouble codes,etc.Diagnostic software will be have good scalability,improve up software update convenient. Function more complex diesel engine electric control unit as example,introduce Access database application in fault diagnostic software.
diesel engine,fault diagnostic,Access database
10.3969/j.issn.1671-0614.2016.03.004
來(lái)稿日期:2016-06-02
汪榮會(huì)(1982),男,工程師,主要研究方向?yàn)椴裼蜋C(jī)性能及故障診斷。