吳 昊 李一鳴 付成偉 韓 煒
(吉林大學 物理學院)
發(fā)動機電子控制單元(ECU)是以單片機為主要核心部件的嵌入式系統(tǒng),是對汽車發(fā)動機各部分進行精確控制的系統(tǒng)。發(fā)動機電子控制單元功能的診斷測試是發(fā)動機電控單元開發(fā)階段的核心工作內容,是保證電控單元可靠性與穩(wěn)定性的基礎[1]。因此,發(fā)動機電控單元功能測試的可靠性和測試過程的效率直接影響著發(fā)動機電子控制單元的開發(fā)周期及應用。
本文根據(jù)工程開發(fā)測試需要,設計了一套完整的發(fā)動機ECU自動測試系統(tǒng)。該測試技術具有測試數(shù)據(jù)的自動保存和分析功能,并能按照預先設置的測試標準進行故障診斷和顯示報警。該系統(tǒng)采用SCPI(可編程儀器標準命令集)實現(xiàn)各儀器設備的自動控制和數(shù)據(jù)傳輸,對發(fā)動機ECU上所有接收的傳感器信號進行模擬,以檢測ECU接收和處理信號的準確性。需要模擬的傳感器信號包括模擬量信號、開關量信號、PWM量信號、正弦波量信號、低端驅動信號、點火線圈信號、噴油執(zhí)行器信號,并通過上位機對所測信號的數(shù)據(jù)進行處理與分析。
該發(fā)動機ECU自動測試系統(tǒng)以Agilent(安捷倫)測控設備為硬件主體,以某汽車六缸發(fā)動機ECU為測試樣本,其硬件結構如圖1所示。
根據(jù)需要測試信號的種類,硬件部分主體構建了兩類測試單元,即輸入信號測試單元和輸出負載驅動測試單元。在通信部分,上位機與測控設備的通信采用局域網(wǎng) (LAN),網(wǎng)絡協(xié)議采用TCP/IP協(xié)議,硬件各部分分別用網(wǎng)線和CAN線連接,ECU與上位機的通信采用USB-CAN通信。
表1 測試系統(tǒng)所用Aglient設備功能
該測試系統(tǒng)所用Aglient設備型號及功能見表1。
輸入信號測試單元即通過測控設備模擬車輛上傳感器信號并發(fā)送至ECU,使其進行數(shù)據(jù)處理并傳送到上位機。根據(jù)不同傳感器信號量型,采用不同的測控模塊向ECU發(fā)送信號。該測試系統(tǒng)根據(jù)ECU的測試需求將輸入信號測試單元分為模擬量信號測試、開關量信號測試、PWM量信號測試和正弦波量信號測試等4個部分。
模擬量信號測試電路需要數(shù)模轉換模塊(34592A)和開關矩陣(34932A)配合向 ECU發(fā)送模擬量信號,該測試系統(tǒng)對模擬量(AD)信號的電子節(jié)氣門位置傳感器信號、燃油軌壓傳感器信號等18路傳感器信號進行模擬,模擬量信號的主要特點為緩變直流電壓信號,其幅值范圍為0~5 V,具有5 mA的電流負載能力。如圖2所示,18路模擬量信號由34592A的D/A模塊供給,上位機向34592A發(fā)送SCPI指令使其工作,并通過SCPI指令對34932A矩陣開關切換實現(xiàn)18路模擬信號量的輸入。因為模擬量信號經(jīng)過長距離信號線傳輸后,可能在ECU接收端存在信號的衰弱和振蕩干擾,所以將34932A接出的信號線統(tǒng)一接入所設計的集成線路板卡上,以減少信號間的相互干擾,并在ECU接收端加入濾波電路和上拉電阻以保證信號的穩(wěn)定和不失真。
開關量信號測試電路的連接方式與模擬量的基本相同,需要電源模塊(N6700B)和開關矩陣模塊(34932A)配合向ECU發(fā)送高低電平的開關量模擬信號。該測試系統(tǒng)對輔助制動開關、空擋開關、空調開關等17路開關量信號進行模擬,由N6700B供電,上位機使用SCPI指令對34932A每個矩陣開關進行定義,對應連接到發(fā)動機待測引腳,構成測試電路。
PWM量信號和正弦波量信號測試連接方式與模擬量和開關量的連接方式基本相同,測試電路需要通過信號發(fā)生器模塊(33220A)和開關矩陣模塊(34592A)配合向ECU發(fā)送PWM量信號和正弦波量信號。該測試系統(tǒng)對3路PWM量信號和2路SIN量信號進行信號模擬。PWM量信號包含廢氣旁通閥傳感器信號、氧傳感器的加熱控制傳感器信號、電子節(jié)氣門的電機驅動端信號;正弦波量信號包含曲軸傳感器中的霍爾傳感器信號和電磁傳感器信號,通過USB-CAN將數(shù)據(jù)傳送到上位機。上位機發(fā)送SCPI指令使33220A的輸出端產(chǎn)生PWM波形和正弦波波形,并按照PWM量信號和正弦波量信號的需求協(xié)議定義34592A的公共端各矩陣開關的意義,對應連接到ECU各待測引腳,構成PWM量和正弦波量的測試電路。
輸出負載驅動測試單元通過測控設備發(fā)送指令給ECU,ECU發(fā)送驅動信號給汽車發(fā)動機各執(zhí)行單元,并對ECU的數(shù)據(jù)采集和信號處理能力進行測試。該測試系統(tǒng)將間接測試單元分為噴油執(zhí)行器測試、點火線圈測試、低端驅動測試等3個部分。
噴油執(zhí)行器測試需要電源模塊、車用繼電器以及實際的發(fā)動機噴油嘴。噴油執(zhí)行器信號的測試是指噴油執(zhí)行器在接收到噴油指令后,從開始執(zhí)行噴油到一次噴油結束時流經(jīng)噴油執(zhí)行器2個引腳間的電流變化,其幅值在10 A以下,噴油嘴的噴油頻率因汽車工況不同而各異。噴油執(zhí)行器波形信號的測試包括噴油波形上升時間 (即加在噴油執(zhí)行器兩端的電壓上沖時間)、電壓上沖峰值、噴油持續(xù)時間(噴油維持在一個穩(wěn)定值的時間)、整體噴油時間等幾部分。該測試系統(tǒng)利用34938A切換不同氣缸的噴油信號。引腳通過MSO6014配合有源電流鉗來獲取噴油波形,實現(xiàn)自動測試,并由繼電器和開關矩陣模塊(34938A)負責控制噴油執(zhí)行器的關斷與導通,ECU連接到繼電器高壓工作電路端采集噴油嘴的電流。電流鉗連接到點火線圈外部,連接示波器監(jiān)測噴油嘴波形(正常時六缸噴油時刻不重疊,即可采集到每一路的噴油執(zhí)行器波形)。噴油執(zhí)行器信號電路設計見圖3。
點火線圈電流測試電路與噴油執(zhí)行器電流的測試電路設計基本相同,僅在負載端將噴油執(zhí)行器改為點火線圈,連接方式完全相同。
低端驅動信號測試的電路連接由測控設備的電源模塊提供驅動電壓,ECU在發(fā)出執(zhí)行低端驅動指令后,將測控設備的數(shù)字I/O模塊管腳分別定義為各低端驅動信號,負載(本設計采用繼電器作為負載)特定引腳被拉低,這時外部負載開始工作,測量負載兩端電位差,并將測量結果反饋給測試系統(tǒng)。
該測試系統(tǒng)將輸入信號測試單元所有的外部電路,以及輸出負載驅動測試單元所用的噴油執(zhí)行器連接端、點火線圈連接端、車用繼電器全部集成到一個電路板上,通過電子產(chǎn)品開發(fā)系統(tǒng)軟件(Altium Designer)對電路進行設計,最終制成如圖4所示的集成電路板卡,可將信號之間的干擾降到最低。此方案節(jié)省了測試系統(tǒng)硬件設備的擺放空間,并且便于組裝和檢修,提高了測試效率。
該發(fā)動機ECU測試系統(tǒng)開發(fā)平臺采用可視化集成編程系統(tǒng) (Visual C++6.0)和夢想編織者(Dreamwaver)兩款軟件聯(lián)合編寫?;赩isual C++6.0的應用程序框架 MFC (Microsoft Foundation Class Library),使用 Visual C++6.0自帶的控件Microsoft Web作為與Dreamwaver連接的紐帶,共同完成測試系統(tǒng)開發(fā)平臺。
設計選用Dreamwaver制作上位機操作界面,它能非常容易地制作出跨越平臺限制且充滿動感的可視化界面,其采用JavaScript腳本語言進行編程,比圖形化編輯語言(Labview)更易讀寫和操作,軟件系統(tǒng)后期的可維護性更高;Visual C++6.0用來編寫測試系統(tǒng)的底層部分,負責發(fā)送和接收SCPI指令,接收ECU發(fā)送的CAN數(shù)據(jù),并通過接口函數(shù)(HTML語言)向Dreamwaver的界面及時返回數(shù)據(jù),保證上位機實時檢測到各測控設備及ECU的工作情況。
該測試系統(tǒng)需要建立一套發(fā)動機ECU測試數(shù)據(jù)庫,數(shù)據(jù)庫包含上位機向測控設備發(fā)送的SCPI指令和ECU標準返回值兩部分。由于SCPI指令系統(tǒng)龐大,為了便于調用,減少測試時間,將SCPI指令統(tǒng)一存入數(shù)據(jù)庫;為判斷測試的ECU是否符合行車標準,必須對ECU標準處理數(shù)據(jù)和測試中的ECU返回數(shù)據(jù)進行對比。數(shù)據(jù)庫采用XML文件的存儲方式。XML是一種元數(shù)據(jù)語言,它提供了一種描述數(shù)據(jù)的格式[2]。相比Access、Oracle和SQL Server等數(shù)據(jù)庫,XML具有更強的數(shù)據(jù)存儲和分析能力以及極為嚴謹?shù)母袷?,便于?shù)據(jù)的索引和查找。
測試時,首先由上位機向測控設備發(fā)送SCPI控制指令,測控設備接收到SCPI控制指令后向測試單元ECU發(fā)送模擬信號,ECU采集到測試信號后向上位機發(fā)送CAN數(shù)據(jù),由上位機對CAN數(shù)據(jù)進行處理和分析。主程序流程如圖5所示。
啟動上位機軟件后,需要通過TCP/IP協(xié)議向測控設備發(fā)送信號,以確定各測控設備是否處于工作狀態(tài),以便進行下一步的測試。將儲存在XML數(shù)據(jù)庫里的測試信號指令調出,顯示在上位機界面,并通過TCP/IP發(fā)送到相應的測控設備,測控設備會根據(jù)SCPI指令進行相應的動作。為避免連續(xù)發(fā)送指令,導致測控設備接收數(shù)據(jù)時指令丟失,程序在傳輸相鄰的2個SCPI指令之間會進行100 ms的延時。SCIP指令發(fā)送完畢后,上位機軟件將XML數(shù)據(jù)庫里的正確數(shù)值與CAN返回的數(shù)據(jù)進行對比處理,檢測出的錯誤信號顯示在上位機界面并與正確的數(shù)值一起保存,至此測試結束。
該測試系統(tǒng)的核心程序包括SCPI指令和接口函數(shù),SCPI指令控制相應的測控設備;接口函數(shù)作為Visual C++6.0與Dreamwaver的連接橋梁進行數(shù)據(jù)傳遞。
a.SCPI指令用于控制測控設備的運行。以開關量信號(SW)中的輔助信號的測試為例,使開關矩陣動作的SCPI指令如下:
VOLT2.400000E+1,(@1,2,3,4);:CURR3.000000E+0,(@1,2,3,4);:CURR:PROT:STAT1,(@1,2,3,4);:OUTP ON,(@1,2,3,4)//控制N6700B的四個電源模塊輸出24 V直流電壓,保護電流為3 A;
VOLT0.000000E+1,(@1,2,3,4);:CURR3.000000E+0,(@1,2,3,4);:CURR:PROT:STAT1,(@1,2,3,4);:OUTP ON,(@1,2,3,4)//控制N6700B的四個電源模塊輸出0 V直流電壓,保護電流為3 A;
ROUT:OPEN (@2001)//34932A的第二模塊的第一路雙擲開關動作斷開。
b. 接口函數(shù)負責連接Dreamwaver和Visual C++兩款軟件,通過接口函數(shù)將ECU返回的數(shù)據(jù)從Visual C++傳送到 Dreamwaver,Dreamwaver負責數(shù)據(jù)處理和顯示,具體程序如下。
Visual C++: //實現(xiàn)接口的傳輸
{
CString iArg1=pDispParams->rgvarg[1].bstrVal;
CString iArg2=pDispParams->rgvarg[0].bstrVal;
CString sss=pDlg->scpi2(iArg1,iArg2);
BSTR bstr=sss.AllocSysString();
VariantInit(pVarResult);
V_VT(pVarResult)=VT_BSTR;
V_BSTR(pVarResult)=bstr;
}
Dreamwaver:functionSCPISendtwo (str1,str2)//定義接口函數(shù)
{
if(bIsCustomBrowser)
{//接收Visual C++的返回值
return window.external.CB_SCPISendtwo(str1,str2);
}
}
通過上述程序將SCPI指令由Visual C++環(huán)境上傳到Dreamwaver軟件中,實現(xiàn)兩款編程軟件的數(shù)據(jù)傳輸。兩款編程軟件的結合構成自動測試系統(tǒng)的軟件部分,其優(yōu)勢在于接口函數(shù)建立后,所有編程操作均可在Dreamwaver上進行,Dreamwaver可根據(jù)測試需要實時改進源代碼,縮短自動測試系統(tǒng)的開發(fā)時間。Dreamwaver測試界面如圖6所示。
由于測試系統(tǒng)需要在4種工況(25 km/h、50 km/h、75 km/h、100 km/h)下對55個傳感器信號進行測試,所以數(shù)據(jù)量龐大,為此該試驗在車速為50km/h的工況下,針對模擬量信號中的電子節(jié)氣門傳感器的返回數(shù)據(jù)以及一號噴油嘴傳感器的返回數(shù)據(jù)進行分析。
在一個測試周期中測得的電子節(jié)氣門傳感器返回值如圖7所示,測試系統(tǒng)標定的標準值為500,上、下限誤差極限為0.1。從圖7可看出,電子節(jié)氣門返回值全部大于標準值,但低于上限誤差極限,其中最小值為537,最大值為548。根據(jù)相對誤差計算公式(1)可計算出最小值的相對誤差為0.074,最大值的相對誤差為0.096,均在誤差允許范圍內,說明該電子節(jié)氣門傳感器部分的測試全部符合測試標準。
式中,er(x*)為相對誤差;x*為標準值;x 為實際值。
在噴油執(zhí)行器的測試數(shù)據(jù)處理過程中,不僅需要對返回數(shù)據(jù)進行對比,還要對其電流波形進行檢測,以保證能檢測到電流動態(tài)變化的過程。在1個測試周期中測得的噴油執(zhí)行器傳感器的返回值如圖8所示,測試系統(tǒng)標定噴油執(zhí)行器的標準值為7.8,上、下限誤差極限為0.1。從圖8可看出,返回值在標準值的上、下限范圍內浮動。比較噴油執(zhí)行器的檢測標準值與返回值可知,返回數(shù)據(jù)的最大值為7.96,最小值為7.63,根據(jù)式(1)計算得最大值相對誤差約為0.02,最小值相對誤差約為0.02,均小于允許誤差,說明噴油執(zhí)行器返回數(shù)據(jù)部分的測試全部符合測試標準。
由上位機采集的電流波形和示波器直接采集的電流波形分別如圖9和圖10所示,通過對比兩波型可看出,上位機采集的電流波形幅值及周期內的振蕩頻率與示波器實際測量的波形基本相同,故可認為發(fā)動機ECU噴油執(zhí)行器符合測試要求。
所設計的測試系統(tǒng)將發(fā)動機控制器繁雜的多信號檢測集成到一個自動測試系統(tǒng)中,大大縮短了對ECU檢測的時間,并且可以進行多次循環(huán)的耐久性試驗,便于查出ECU不同情況下存在的問題,提高了ECU的測試效率。該測試系統(tǒng)可將檢測結果顯示在上位機上,實現(xiàn)了對動態(tài)數(shù)據(jù)的實時監(jiān)測,能夠將汽車ECU的性能較全面地提供給檢測人員,從而為汽車發(fā)動機ECU的開發(fā)提供技術支持。
1 劉洋,付成偉,等.SCPI與數(shù)據(jù)庫結合在ECU自動測試系統(tǒng)中的應用,2012(15):103~105.
2 代維,黨延忠.XML技術在辦公信息系統(tǒng)中的應用,計算機應用研究,2004(1):145~147.
3 范眾.基于虛擬儀器技術的汽車發(fā)動機檢測分析儀的研究與開發(fā).北京:北京理工大學出版社,2007.
4 韓偉,麻友良,等.汽油發(fā)動機ECU性能檢測系統(tǒng),儀表技術與傳感器,2009(6):54~57.
5 譚晶星,陰曉峰,等.基于CAN總線的ECU監(jiān)測系統(tǒng),測控技術,2013(7):94~99.
(責任編輯 文 楫)