雷平
(洛陽LYC軸承有限公司 技術(shù)中心,河南 洛陽 471039 )
如何方便快捷地處理和分析試驗數(shù)據(jù),尋找其內(nèi)在規(guī)律并直觀地顯示出來,對于試驗工作有著重要的意義。隨著計算機軟件技術(shù)的飛速發(fā)展,各類工具軟件已廣泛應(yīng)用于現(xiàn)代科學(xué)的各個領(lǐng)域,并發(fā)揮了巨大的作用,這些軟件在解決各自專業(yè)領(lǐng)域的問題時非常得心應(yīng)手,有時甚至替代了人工無法實現(xiàn)的計算和分析功能,大幅度提高了工作效率。但是,由于工具軟件功能的局限性,單一的軟件往往不能完全滿足實際工作中對數(shù)據(jù)處理和分析的需要。下面介紹一種在軸承試驗中使用多種軟件進行混合應(yīng)用及編程,實現(xiàn)對試驗數(shù)據(jù)方便地進行輸入、分析和處理的方法。
通常情況下,通過試驗測量所得到的目標數(shù)據(jù)y的值與多種因素xi有關(guān),因此y的數(shù)值是離散的。在很多應(yīng)用領(lǐng)域中,又時常需要根據(jù)這些測量的數(shù)據(jù),在分析的基礎(chǔ)上求得自變量xi和因變量y之間的近似函數(shù)關(guān)系表達式(又稱經(jīng)驗公式或數(shù)學(xué)模型)y=f(x),并可以用圖形方式直觀地顯示出來。
針對上述問題,并考慮到同類問題的相似性,擬編制一試驗數(shù)據(jù)處理軟件,該軟件采用Matlab進行試驗數(shù)據(jù)的分析和結(jié)果表達,采用Excel進行試驗數(shù)據(jù)的輸入,使用VB作為編程工具,將在Excel中輸入的數(shù)據(jù)傳遞到Matlab中,并可以根據(jù)實際需要靈活地定制操作界面、控制試驗數(shù)據(jù)分析結(jié)果的表現(xiàn)形式以及生成Word格式的試驗報告等[1-3]。
編程所需的操作系統(tǒng)為Windows XP,應(yīng)用軟件為Matlab6.5, Excel2003,Word2003和 VB6.0中文版,硬件要求CPU P4 1.2 G以上,內(nèi)存大于512 M ,硬盤可用容量大于10 G。程序流程如圖1所示。
圖1 程序流程
為了了解金屬材料的沖擊功與材料所受的熱處理溫度及取樣部位之間的關(guān)系,以便改進熱處理工藝,提升產(chǎn)品質(zhì)量,進行了大量試驗,并測得了不同溫度和取樣部位材料的沖擊功。現(xiàn)將使用VB+Matlab+Excel軟件進行混合編程的實現(xiàn)方法簡述如下。
(1)將每次試驗所得到的數(shù)據(jù)按一定的格式輸入到Excel中形成數(shù)據(jù)文件。如此例中將同一回火溫度、不同淬火溫度下所測得的不同位置試樣(周向、軸向、徑向)的材料沖擊功AK分別整理輸入到一個Excel文件sj.xls中。
(2)利用VB的DDE技術(shù),根據(jù)Matlab分析和處理這些試驗數(shù)據(jù)的需要,將Excel數(shù)據(jù)文件的數(shù)據(jù)進行處理并形成Matlab運行所需的.m文件。
Cmdstr = "Workbook = invoke(Workbooks, ′Open c: estsj.xls′)"
MathApp.Execute ("Excel = actxserver(′Excel.Application′);")
MathApp.Execute ("Workbooks = Excel.Workbooks;")
MathApp.Execute (Cmdstr)
MathApp.Execute ("Sheets = Excel.ActiveWorkBook.Sheets;")
MathApp.Execute ("sheet1 = get(Sheets, ′Item′, 1);")
MathApp.Execute ("invoke(sheet1, ′Activate′);")
MathApp.Execute ("Activesheet = Excel.Activesheet;")
Cmdstr="Range =get(Activesheet, ′Range′, ′A2:D’ & sjnum′);"
MathApp.Execute (Cmdstr)
MathApp.Execute ("B = Range.value;")
For i = 1 To sjnum ′sjnum為試驗數(shù)據(jù)的個數(shù)
Cmdstr = "x(" & i & ") = numeric(B{" & i & ",2})"
MathApp.Execute (Cmdstr)
Next i
For i = 1 To sjnum
Cmdstr = "y1(" & i & ") = numeric(B{" & i & ",3})"
MathApp.Execute (Cmdstr)
Next i
……
(3)用Matlab編程形成最終的rg570b.m文件。
x=[800,820,840,860];
y(1,:)=[40,50,40,38];
y(2,:)=[21,17,18,21];
y(3,:)=[31,38,34,32];
y(4,:)=[36,29,27,21];
y(5,:)=[87,87,84,96];
y(6,:)=[124,117,123,122];
hold on
plot(x,y,′*′);
xi=[800:1:860];
z(1,:)=interp1(x,y(1,:),xi);
z(2,:)=interp1(x,y(2,:),xi);
z(3,:)=interp1(x,y(3,:),xi);
z(4,:)=interp1(x,y(4,:),xi);
z(5,:)=interp1(x,y(5,:),xi);
z(6,:)=interp1(x,y(6,:),xi);
z(1,:)=spline(x,y(1,:),xi);
z(2,:)=spline(x,y(2,:),xi);
z(3,:)=spline(x,y(3,:),xi);
z(4,:)=spline(x,y(4,:),xi);
z(5,:)=spline(x,y(5,:),xi);
z(6,:)=spline(x,y(6,:),xi);
xlabel(′淬火溫度/℃′)
ylabel(′沖擊功AK值/J′)
title(′570℃回火下,不同淬火溫度下各部位沖擊功AK值變化曲線′);
plot(xi,z,′LineWidth′,2);
(4)通過Matlab的數(shù)據(jù)接口,利用VB將.m文件自動調(diào)入到Matlab環(huán)境中,并驅(qū)動Matlab執(zhí)行該.m文件,生成試驗數(shù)據(jù)分析結(jié)果和相應(yīng)的圖形。
Dim Tmppath,Jgstr As String ′初始化Matlab繪圖環(huán)境
Set MathApp = CreateObject("MatLab.Application")
MathApp.Visible = True
MathApp.Execute ("clc")
MathApp.Execute ("clear")
Tmppath = "path(path,?& App.Path & ?)
MathApp.Execute (Tmppath)
MathApp.Execute ("colorbar") ′執(zhí)行matlab程序并輸出結(jié)果圖形
MathApp.Execute “rg570b.m”
Call Comm_envset
Jgstr = App.Path & "·70b.bmp"
Cmdstr = "print(gcf,′-dbmp′,? & Jgstr & ?)"
MathApp.Execute (Cmdstr)
(5)利用VB編程控制試驗數(shù)據(jù)輸出結(jié)果,自動生成Word格式的試驗報告并打印出來。
Dim ftest, txtstr, sbuffer As String
Dim rng As Range,lsize, ret As Long
Set WordApp = CreateObject("Word.Application")
txtstr = "沖擊功試驗數(shù)據(jù)分析報告"
WordApp.Visible = True
WordApp.Documents.Add (" ") ′在Word中插入文本
WordApp.Selection.TypeText (txtstr) ′控制文本字體格式
Set rng = WordApp.ActiveDocument.Range(0, 2)
rng.Select
With rng
.Font.Size = 14
.Font.Name = "Arial"
.ParagraphFormat.Alignment = wdAlignParagraphCenter
End With
WordApp.Selection.TypeParagraph′插入結(jié)果圖片
WordApp.Selection.InlineShapes.AddPicture (Jgstr) '插入試驗報告其他信息內(nèi)容
……
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("試驗條件及參數(shù): ")
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("數(shù)據(jù)采集: 報告人:")
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("XXXXX公司")
sbuffer = “c: est eport.doc”
WordApp.ActiveDocument.SaveAs (sbuffer)′關(guān)閉當前文檔
WordApp.Documents.Close
WordApp.Quit
該軟件的程序界面如圖2所示,其主要的功能特點如下:
圖2 程序界面
(1)數(shù)據(jù)處理非常靈活,只需改變Excel中的試驗數(shù)據(jù)即可得到不同的輸出結(jié)果,極大增強了試驗數(shù)據(jù)的對比分析和調(diào)試功能。
(2)數(shù)據(jù)分析的結(jié)果非常直觀,可以以多種方式展示,支持3D應(yīng)用及顯示,如圖3所示。
圖3 數(shù)據(jù)分析結(jié)果
(3)試驗報告由程序自動生成,既可保存也可直接打印,完全滿足實際工作需要。
(4)對于相似問題的試驗數(shù)據(jù),只需對程序界面稍加修改即可使用,從而使該軟件系統(tǒng)的通用性大大增強。
綜上所述,通過這3種軟件的綜合應(yīng)用與混合編程,發(fā)揮軟件各自的優(yōu)勢,完成對試驗數(shù)據(jù)輸入、匯總、分析、顯示及輸出的一體化處理,并可自動生成分析報告。可完全適用于其他領(lǐng)域類似數(shù)據(jù)的處理,具有較強的實用性和推廣應(yīng)用價值。