王琳,劉偉建,裴永琪,馮捷
(陜西重型汽車(chē)有限公司,陜西 西安 710200)
基于MATLAB GUI的汽車(chē)動(dòng)力性試驗(yàn)數(shù)據(jù)分析軟件設(shè)計(jì)
王琳,劉偉建,裴永琪,馮捷
(陜西重型汽車(chē)有限公司,陜西 西安 710200)
文章對(duì)基于MATLAB GUI的汽車(chē)動(dòng)力性軟件開(kāi)發(fā)特點(diǎn)進(jìn)行了詳細(xì)說(shuō)明,并給出本課題主要流程圖。從軟件開(kāi)發(fā)的流程、界面設(shè)計(jì)方法、回調(diào)函數(shù)編寫(xiě)、常用函數(shù)應(yīng)用等方面介紹了汽車(chē)動(dòng)力性實(shí)驗(yàn)數(shù)據(jù)分析軟件開(kāi)發(fā)的過(guò)程,給出了軟件設(shè)計(jì)的界面,將軟件計(jì)算結(jié)果與人工數(shù)據(jù)處理結(jié)果進(jìn)行了比對(duì),進(jìn)行了差異分析和精確度校核。最后附上了試驗(yàn)結(jié)果記錄表格,并對(duì)研究過(guò)程進(jìn)行了總結(jié),提出了可行的改進(jìn)方法。汽車(chē)動(dòng)力性試驗(yàn)數(shù)據(jù)分析軟件的完成,極大提高試驗(yàn)數(shù)據(jù)的處理速度,達(dá)到了預(yù)期目標(biāo)。
MATLAB;汽車(chē)動(dòng)力性試驗(yàn);GUI;界面設(shè)計(jì);軟件開(kāi)發(fā)
汽車(chē)的動(dòng)力性是指汽車(chē)在良好的路面上直線行駛時(shí)由汽車(chē)受到的縱向外力決定的、所能達(dá)到的平均行駛速度。汽車(chē)的動(dòng)力性是發(fā)動(dòng)機(jī)和底盤(pán)傳動(dòng)系等總成及部件工作能力量化的體現(xiàn)。發(fā)動(dòng)機(jī)和傳動(dòng)系固有的工作能力由設(shè)計(jì)者確定,由制造形成,而在使用過(guò)程中逐漸喪失。本文主要結(jié)合對(duì)某型號(hào)車(chē)的動(dòng)力性試驗(yàn),對(duì)試驗(yàn)數(shù)據(jù)進(jìn)行分析處理,從直接檔最低穩(wěn)定車(chē)速、直接檔加速、起步換擋加速、滑行試驗(yàn)(往、返)、最高車(chē)速等方面來(lái)評(píng)價(jià)汽車(chē)的動(dòng)力性能,從而為汽車(chē)動(dòng)力性的評(píng)價(jià)和改進(jìn)提供可靠的依據(jù)。數(shù)據(jù)處理與分析依托于MATLAB/GUI編寫(xiě)的可視化人機(jī)交互界面,可以方便的進(jìn)行數(shù)據(jù)讀取、計(jì)算、圖形生成、結(jié)果保存與圖片保存,降低了后期試驗(yàn)數(shù)據(jù)處理難度,大大縮短了試驗(yàn)報(bào)告的書(shū)寫(xiě)難度,縮短研究周期,對(duì)于后續(xù)的研究工作提供了便利。
數(shù)據(jù)校正方法:用實(shí)測(cè)初速度和實(shí)測(cè)滑行距離,按式(1)算出標(biāo)準(zhǔn)初速度V0=50km/h的滑行距離。
其中:S—初速度為50km/h時(shí)的滑行距離,m;a—計(jì)算系數(shù),1/s2;
V0—實(shí)測(cè)滑行初速度 m/s2;b—常數(shù),m2/s2(b=0.2;當(dāng)車(chē)重≤40000N且滑行距離≤600m時(shí),b=0.3);S’—實(shí)測(cè)滑行距離,m;C—常數(shù),m2/s2(c=771.6)。
該方法適用于M類(lèi)和N類(lèi)汽車(chē)。數(shù)據(jù)處理:計(jì)算所有有效試驗(yàn)數(shù)據(jù)的算術(shù)平均值、標(biāo)準(zhǔn)偏差和變化系數(shù)(標(biāo)準(zhǔn)偏差/算術(shù)平均值)。
其中:μ為算術(shù)平均值;i為第i次試驗(yàn);Ti為第i次試驗(yàn)數(shù)據(jù);n為試驗(yàn)總次數(shù);SD為標(biāo)準(zhǔn)偏差;k 為變化系數(shù)。
試驗(yàn)結(jié)果按式6計(jì)算:
其中:V—汽車(chē)最高車(chē)速,km/h;t—往返試驗(yàn)所測(cè)時(shí)間的算術(shù)平均值,s。
圖1 汽車(chē)動(dòng)力性試驗(yàn)數(shù)據(jù)分析軟件開(kāi)發(fā)流程
MATLAB圖形用戶界面程序的前臺(tái)界面由一系列交互組件組成,主要包括按鈕、單選按鈕、框架、復(fù)選框、文本標(biāo)簽、編輯文本框、滑動(dòng)條、下拉菜單、列表框和雙位按鈕等。用戶以某種方式選擇或激活這些對(duì)象,通常引起動(dòng)作或發(fā)生變化。最常見(jiàn)的激活方法是用鼠標(biāo)或其他單擊設(shè)備去控制屏幕上鼠標(biāo)指針的運(yùn)動(dòng)。按下鼠標(biāo)按鈕,標(biāo)志著對(duì)象的選擇或其他動(dòng)作。MATLAB把實(shí)現(xiàn)程序功能的內(nèi)核代碼和這些交互組件的鼠標(biāo)或鍵盤(pán)事件關(guān)聯(lián)起來(lái),即通過(guò)設(shè)置這些交互組件的回調(diào)函數(shù)來(lái)完成特定交互事件下后臺(tái)程序完成的功能。
圖2 項(xiàng)目子程序編寫(xiě)流程
首先應(yīng)實(shí)現(xiàn)數(shù)據(jù)文檔的導(dǎo)入,并將導(dǎo)入的數(shù)據(jù)保存為數(shù)據(jù)庫(kù)data文件,為后續(xù)計(jì)算程序提供調(diào)用數(shù)據(jù)的數(shù)據(jù)庫(kù)。其次,根據(jù)國(guó)家標(biāo)準(zhǔn)的相關(guān)規(guī)定,編寫(xiě)數(shù)據(jù)算法,將數(shù)據(jù)進(jìn)行有序的遍歷,找到符合條件的數(shù)據(jù)點(diǎn)進(jìn)行計(jì)算。最后,將計(jì)算結(jié)果保存并輸出到GUI界面對(duì)應(yīng)的文本框中,同時(shí)生成速度曲線、路程曲線圖??紤]到具體的試驗(yàn)操作方法,試驗(yàn)項(xiàng)目的具體算法與國(guó)標(biāo)的規(guī)定略有不同,應(yīng)靈活調(diào)整,使計(jì)算方法最符合試驗(yàn)的具體情況。
圖3 動(dòng)力性主界面設(shè)計(jì)效果圖
在直接檔最低穩(wěn)定車(chē)速試驗(yàn)中,利用V-Box進(jìn)行數(shù)據(jù)采集。將汽車(chē)掛入直接檔,行駛穩(wěn)定后,設(shè)為0時(shí)刻,行駛距離設(shè)為0,保持車(chē)輛勻速行駛。當(dāng)行駛距離S等于100m時(shí),記錄下此時(shí)時(shí)間和車(chē)速。如此重復(fù)若干次,得到試驗(yàn)原始數(shù)據(jù)。導(dǎo)入試驗(yàn)數(shù)據(jù),編寫(xiě)判定算法,判定行駛距離是否等于100m。將符合條件的點(diǎn)存入數(shù)據(jù)庫(kù)等待調(diào)用,將不滿足條件的點(diǎn)剔除。最低穩(wěn)定車(chē)速計(jì)算結(jié)果如表1所示,表中同時(shí)列出了程序計(jì)算結(jié)果與人工計(jì)算結(jié)果。
表1 最低穩(wěn)定車(chē)速試驗(yàn)結(jié)果
直接檔最低穩(wěn)定車(chē)速計(jì)算算法:
其中,V是直接檔最低穩(wěn)定車(chē)速,S代表路程為100m,Vi是路程為100m時(shí)對(duì)應(yīng)的車(chē)速,n是符合條件的試驗(yàn)的次數(shù)。乘以3.6進(jìn)行單位換算,將km/h換算為國(guó)際單位m/s。
由人工選點(diǎn)計(jì)算得到本次試驗(yàn)最低穩(wěn)定車(chē)速為 37.42km/h,而程序計(jì)算得到最低穩(wěn)定車(chē)速為 37.0737km/h,均符合國(guó)家標(biāo)準(zhǔn)規(guī)定的最低穩(wěn)定車(chē)速小于等于40km/h。由于MATLAB編程采用全局?jǐn)?shù)據(jù)遍歷法,與人工數(shù)據(jù)處理結(jié)果相比,更加精確。
用MATLAB導(dǎo)入數(shù)據(jù)后,進(jìn)行數(shù)據(jù)的有序遍歷。運(yùn)用一次for循環(huán)語(yǔ)句,依次遍歷速度值為10-100km/h的點(diǎn),正負(fù)誤差控制在0.2之內(nèi)。將順序遍歷后,符合條件的點(diǎn)求和、再求平均值,如此循環(huán)10次,并輸出結(jié)果。根據(jù)國(guó)標(biāo)的相關(guān)規(guī)定,還應(yīng)該計(jì)算加速到100km/h過(guò)程中所用的時(shí)間(國(guó)標(biāo)規(guī)定時(shí)間應(yīng)小于等于60s)和加速至400m時(shí)所用的時(shí)間(國(guó)標(biāo)規(guī)定時(shí)間應(yīng)小于等于40s)。該計(jì)算過(guò)程仍采用數(shù)據(jù)的有選擇遍歷,尋找速度等于100km/h附近的點(diǎn),正負(fù)誤差控制在0.1。類(lèi)似的,尋找位移等于400m附近的點(diǎn),正負(fù)誤差控制在0.2,將符合條件的點(diǎn)求和再求平均,并輸出結(jié)果。
起步換擋加速試驗(yàn)計(jì)算結(jié)果如表2、表3所示。表2為程序計(jì)算結(jié)果,表3-3為人工計(jì)算結(jié)果。將表2,表3對(duì)比可得,由于程序采用全局遍歷的算法,計(jì)算精度高于人工選點(diǎn)計(jì)算算法。MATLAB程序基于高效的科學(xué)計(jì)算算法,速度快,大大縮短試驗(yàn)后數(shù)據(jù)處理時(shí)間,為數(shù)據(jù)分析提供了高效的平臺(tái)。
表2 起步換檔加速0→100km/h試驗(yàn)結(jié)果(程序計(jì)算)
起步換擋加速曲線如圖4,圖5,圖6所示。其中,圖4,圖5為Excel利用描點(diǎn)法繪制的加速時(shí)間曲線圖與加速距離曲線圖。圖6為利用MATLAB/GUI編寫(xiě)程序的繪制圖,即將所有試驗(yàn)數(shù)據(jù)進(jìn)行遍歷后,描點(diǎn)繪制出曲線圖。由于Excel依賴于人工選取少數(shù)點(diǎn)進(jìn)行描點(diǎn)繪圖,而程序則是將所有符合點(diǎn)進(jìn)行平滑曲線連接繪圖,因此利用Excel進(jìn)行繪圖不僅耗時(shí)長(zhǎng),而且圖形粗糙,精度低,而MATLAB/GUI程序繪圖速度快,精度高,并支持圖片的保存,利于數(shù)據(jù)圖形的后續(xù)分析。
表3 起步換檔加速0→100km/h試驗(yàn)結(jié)果(人工計(jì)算)
動(dòng)力滑行試驗(yàn)。觸發(fā)V-Box,記錄車(chē)速減到0過(guò)程中,車(chē)速、位移、時(shí)間的一系列瞬時(shí)值。該試驗(yàn)需進(jìn)行往返兩次試驗(yàn),得到兩組數(shù)據(jù)。計(jì)算方法采用全局遍歷求平均值的方法。導(dǎo)入數(shù)據(jù)到MATLAB,遍歷,找到速度值為0的所有點(diǎn),這些點(diǎn)對(duì)應(yīng)的位移求和,再取平均值。將往、返兩組試驗(yàn)所得平均位移相加求平均,根據(jù)國(guó)標(biāo)的要求,應(yīng)大于等于1200m?;性囼?yàn)程序計(jì)算結(jié)果如表4所示,人工計(jì)算結(jié)果如表5所示。
圖4 0→100 km/h加速時(shí)間曲線圖
圖5 0→100 km/h加速 距離曲線圖
圖6 起步換擋加速曲線圖
由上述計(jì)算結(jié)果對(duì)比可知,由于程序計(jì)算方法采用數(shù)據(jù)全局遍歷,計(jì)算結(jié)果比人工計(jì)算更加精確,整體精度較高,且計(jì)算迅速便捷。
表4 滑行試驗(yàn)結(jié)果(程序計(jì)算)
表5 滑行試驗(yàn)結(jié)果(人工計(jì)算)
數(shù)據(jù)采集器V-Box在汽車(chē)加速過(guò)程中,選定某一時(shí)刻,設(shè)為時(shí)間零點(diǎn)與位移零點(diǎn)。采集汽車(chē)在最高檔加速過(guò)程中,加速至相對(duì)位移0點(diǎn)走過(guò)200m過(guò)程中,一系列時(shí)間點(diǎn)、瞬時(shí)速度點(diǎn)、瞬時(shí)位移點(diǎn)。
國(guó)家標(biāo)準(zhǔn)規(guī)定,在此過(guò)程中汽車(chē)的最高車(chē)速應(yīng)大于等于125km/h。計(jì)算方法仍采用全局遍歷法。首先將V-Box采集的數(shù)據(jù)導(dǎo)入到MATLAB,進(jìn)行全局遍歷,找到位移值為200m的點(diǎn)。將所有符合條件的點(diǎn)進(jìn)行求和,然后用mean函數(shù)取平均值,得到最高車(chē)速平均值。程序計(jì)算得到的最高車(chē)速值為129.71km/h,由人工計(jì)算方法得到的最高車(chē)速值為 139.94 km/h。由于程序采用全局遍歷法,因而計(jì)算精度高于人工計(jì)算法。并且其計(jì)算速度,可重復(fù)操作性均優(yōu)于人工計(jì)算。
當(dāng)試驗(yàn)車(chē)輛的行駛速度到達(dá) 50km/h時(shí)關(guān)閉發(fā)動(dòng)機(jī)切斷動(dòng)力傳遞,開(kāi)始無(wú)動(dòng)力滑行試驗(yàn)。觸發(fā) V-Box,記錄車(chē)速減到0過(guò)程中,車(chē)速、位移、時(shí)間的一系列瞬時(shí)值。該試驗(yàn)需進(jìn)行往返兩次試驗(yàn),得到兩組數(shù)據(jù)。計(jì)算方法采用全局遍歷求平均值的方法。導(dǎo)入數(shù)據(jù)到MATLAB,遍歷,找到速度值為0的所有點(diǎn),這些點(diǎn)對(duì)應(yīng)的位移求和,再取平均值。將往、返兩組試驗(yàn)所得平均位移相加求平均,根據(jù)國(guó)標(biāo)的要求,應(yīng)大于等于1200m?;性囼?yàn)程序計(jì)算結(jié)果如表6所示,人工計(jì)算結(jié)果如表3-7所示。
表6 滑行試驗(yàn)結(jié)果(程序計(jì)算)
表7 滑行試驗(yàn)結(jié)果(人工計(jì)算)
由上述計(jì)算結(jié)果對(duì)比可知,由于程序計(jì)算方法采用數(shù)據(jù)全局遍歷,計(jì)算結(jié)果比人工計(jì)算更加精確,整體精度較高,且計(jì)算迅速便捷。
(1)數(shù)據(jù)導(dǎo)入函數(shù):本軟件的開(kāi)發(fā)建立在試驗(yàn)的基礎(chǔ)上,因此數(shù)據(jù)導(dǎo)入是軟件開(kāi)發(fā)過(guò)程首要的一步,也是非常重要的一步。數(shù)據(jù)的正確導(dǎo)入,保證了后續(xù)計(jì)算算法正確調(diào)用數(shù)據(jù)。考慮到人機(jī)交互性,應(yīng)導(dǎo)入由用戶指定路徑名pathname下的文件名filename。本軟件采用uigetfile函數(shù)導(dǎo)入數(shù)據(jù)。其語(yǔ)法格式為:uigetfile[FileName,PathName,F(xiàn)ilterIndex]。本次試驗(yàn)中,V-Box采集的數(shù)據(jù)格式為.xls,相應(yīng)的讀數(shù)據(jù)函數(shù)為 xlsread,寫(xiě)數(shù)據(jù)函數(shù)為 xlswrite。實(shí)際上,數(shù)據(jù)格式可能變?yōu)?xlsx或.txt,uigetfile('*.xls')改為uigetfile('*.'),可顯示某一路徑下所有后綴的文件。相應(yīng)讀數(shù)據(jù)函數(shù)改為xlsxread,寫(xiě)數(shù)據(jù)函數(shù)改為xlsxwrite。MATLAB數(shù)據(jù)導(dǎo)入流程如圖7所示。
為了更好的體現(xiàn)人機(jī)交互性,在數(shù)據(jù)導(dǎo)入程序中加入判斷命令,判斷用戶是否選擇了符合條件的文件。若沒(méi)有正確選擇或未進(jìn)行文件選取,則彈出警告對(duì)話框。
(2)msgbox函數(shù):是MATLAB中一個(gè)可實(shí)現(xiàn)彈出窗口的函數(shù)。在對(duì)話框中顯示消息,等待用戶單擊按鈕,并返回一個(gè) integer告訴用戶單擊哪一個(gè)按鈕。其語(yǔ)法格式為:msgbox(prompt,[buttons],[title],[helpfile],[context])。這種人機(jī)交互式的窗口極大的提高了軟件的可操作性。msgbox在本軟件中應(yīng)用較多,常用于數(shù)據(jù)導(dǎo)入完成,數(shù)據(jù)計(jì)算完成,繪圖完成等的說(shuō)明。
圖7 MATLAB數(shù)據(jù)導(dǎo)入流程
(3)size函數(shù):可以返回?cái)?shù)據(jù)的尺寸,語(yǔ)法格式為[m,n]= size(X),返回矩陣 X的尺寸信息,并存儲(chǔ)在 m、n中。其中m中存儲(chǔ)的是行數(shù),n中存儲(chǔ)的是列數(shù)。將數(shù)據(jù)導(dǎo)入MATLAB中時(shí),size用于計(jì)算導(dǎo)入文件的數(shù)據(jù)矩陣,并將該數(shù)據(jù)矩陣暫時(shí)保存。
(4)mean函數(shù):其語(yǔ)法格式為mean(A),是MATLAB中的求平均函數(shù)??蓪⒉煌S度矩陣中的元素求平均值。用mean函數(shù)求平均前不用sum求和。
(5)handle函數(shù)句柄:是包含了函數(shù)的路徑、函數(shù)名、類(lèi)型以及可能存在的重載方法。本課題中,所有輸出到 GUI界面上的數(shù)據(jù)都使用了函數(shù)句柄。將MATLAB程序計(jì)算的結(jié)果輸出到GUI界面對(duì)應(yīng)的文本框中,實(shí)現(xiàn)了人機(jī)交互。另外,本課題中所有的清空的命令均使用了函數(shù)句柄,即:將所有GUI界面下的文本框設(shè)置為空。實(shí)際應(yīng)用中,常將set與get函數(shù)與 handle配合使用。如:set(handles.edit23,'string','')。
(7)questdlg函數(shù):button = questdlg('qstring') 顯示一個(gè)模式的詢問(wèn)對(duì)話框,提示信息為'qstring'。該對(duì)話框有三個(gè)默認(rèn)的按鈕Yes、No和Cancel。如果用戶按下三個(gè)按鈕中任何一個(gè),button返回被按下的按鈕的名稱。如果用戶按下回車(chē)鍵,button被賦值'Yes'。'qstring'可以是一個(gè)元胞數(shù)組或字符串。本課題中,“數(shù)據(jù)保存”和“退出程序”使用了questdlg函數(shù)。語(yǔ)法格式為questdlg('qstring','title','str1','str2','str3',default)。
圖8 msgbox函數(shù)
圖9 questdlg函數(shù)
(8)printpreview函數(shù):可以實(shí)現(xiàn)當(dāng)前界面的打印,提供打印的相關(guān)選項(xiàng)修改、設(shè)置。printpreview界面如圖10所示。
圖10 printpreview應(yīng)用實(shí)例
(9)放大、縮小函數(shù):zoom on實(shí)現(xiàn)圖形放大,zoom off實(shí)現(xiàn)圖形縮小。本課題中,速度曲線和位移曲線均使用了該函數(shù)。
(10)grid on/off函數(shù):繪圖時(shí),用于劃分網(wǎng)格。
(11)close函數(shù):用于關(guān)閉指定的GUI界面。
(12)plot函數(shù):用于繪制線性二維圖,語(yǔ)法格式為:plot(X,Y)。
(13)添加繪圖標(biāo)簽:xlabel,ylabel分別用于添加X(jué)軸、Y軸方向的顯示標(biāo)簽。該標(biāo)簽為字符串string。語(yǔ)法格式為xlabel(‘string’)。title函數(shù)為當(dāng)前坐標(biāo)系添加標(biāo)題。語(yǔ)法格式:title(‘string’)。在當(dāng)前坐標(biāo)系上方居中輸出標(biāo)題'string',其中string是自定義的內(nèi)容。本課題中速度曲線與位移曲線的繪制程序用到了上述函數(shù)。
本文概括總結(jié)了汽車(chē)動(dòng)力性試驗(yàn)數(shù)據(jù)分析軟件的開(kāi)發(fā)過(guò)程,從試驗(yàn)依據(jù)的標(biāo)準(zhǔn)、試驗(yàn)項(xiàng)目的確定、試驗(yàn)方法、試驗(yàn)數(shù)據(jù)的收集等方面論述了汽車(chē)動(dòng)力性試驗(yàn)的過(guò)程,指出了傳統(tǒng)手工進(jìn)行數(shù)據(jù)篩選與結(jié)果分析的不足,即數(shù)據(jù)處理周期長(zhǎng),結(jié)果精確度較低,試驗(yàn)可重復(fù)性差,結(jié)論等待時(shí)間長(zhǎng)。針對(duì)當(dāng)前數(shù)據(jù)分析的現(xiàn)狀,開(kāi)發(fā)基于MATLAB GUI的汽車(chē)動(dòng)力性試驗(yàn)數(shù)據(jù)分析軟件,得出關(guān)于試驗(yàn)車(chē)輛較為準(zhǔn)確和權(quán)威的評(píng)價(jià)結(jié)論。
[1] 陳垚光,毛濤濤,王正林,王玲. 精通 MATLAB GUI設(shè)計(jì)[M].2版.北京:電子工業(yè)出版社,2011.
[2] 陳蔭三,余強(qiáng). 汽車(chē)動(dòng)力學(xué)[M].清華大學(xué)出版社,2009.
[3] 吳憲明. GB/T12534-1990,汽車(chē)道路試驗(yàn)方法通則[S].北京:國(guó)家技術(shù)監(jiān)督局,1990.
[4] 余志生. 汽車(chē)?yán)碚揫M].北京:機(jī)械工業(yè)出版社,2006.
Design of the Automobile Power Performance Test Data Analysis Software Based on Matlab GUI
Wang Lin, Liu Weijian, Pei Yongqi, Feng Jie
( Shaanxi Heavy Duty Automobile Co., Ltd, Shaanxi Xi'an 710200 )
Firstly, the paper showed the detailed explanations and flow charts of software development which are based on MATLAB GUI. Then it introduced the steps of software development, way of GUI design, callback functions compiling, and application of functions in common use. As follow showed the main GUI and compared results calculated by the program to that’s by hands. Then the paper analyzed the differences between the two ways above. The last chapter concluded the whole paper, and made some useful suggestions.Finally, the software development met with success while the speed of calculating experimental data is significantly improved as expected.
MATLAB; Car power test; GUI; Interface design; software development
CLC NO.: U467.4 Document Code: A Article ID: 1671-7988 (2017)12-197-05
U467.4 文獻(xiàn)標(biāo)識(shí)碼:A 文章編號(hào):1671-7988 (2017)12-197-05
10.16638/j.cnki.1671-7988.2017.12.066
王琳,就職于陜西重型汽車(chē)有限公司。