雷平
(洛阳LYC轴承有限公司 技术中心,河南 洛阳 471039 )
如何方便快捷地处理和分析试验数据,寻找其内在规律并直观地显示出来,对于试验工作有着重要的意义。随着计算机软件技术的飞速发展,各类工具软件已广泛应用于现代科学的各个领域,并发挥了巨大的作用,这些软件在解决各自专业领域的问题时非常得心应手,有时甚至替代了人工无法实现的计算和分析功能,大幅度提高了工作效率。但是,由于工具软件功能的局限性,单一的软件往往不能完全满足实际工作中对数据处理和分析的需要。下面介绍一种在轴承试验中使用多种软件进行混合应用及编程,实现对试验数据方便地进行输入、分析和处理的方法。
通常情况下,通过试验测量所得到的目标数据y的值与多种因素xi有关,因此y的数值是离散的。在很多应用领域中,又时常需要根据这些测量的数据,在分析的基础上求得自变量xi和因变量y之间的近似函数关系表达式(又称经验公式或数学模型)y=f(x),并可以用图形方式直观地显示出来。
针对上述问题,并考虑到同类问题的相似性,拟编制一试验数据处理软件,该软件采用Matlab进行试验数据的分析和结果表达,采用Excel进行试验数据的输入,使用VB作为编程工具,将在Excel中输入的数据传递到Matlab中,并可以根据实际需要灵活地定制操作界面、控制试验数据分析结果的表现形式以及生成Word格式的试验报告等[1-3]。
编程所需的操作系统为Windows XP,应用软件为Matlab6.5, Excel2003,Word2003和 VB6.0中文版,硬件要求CPU P4 1.2 G以上,内存大于512 M ,硬盘可用容量大于10 G。程序流程如图1所示。
图1 程序流程
为了了解金属材料的冲击功与材料所受的热处理温度及取样部位之间的关系,以便改进热处理工艺,提升产品质量,进行了大量试验,并测得了不同温度和取样部位材料的冲击功。现将使用VB+Matlab+Excel软件进行混合编程的实现方法简述如下。
(1)将每次试验所得到的数据按一定的格式输入到Excel中形成数据文件。如此例中将同一回火温度、不同淬火温度下所测得的不同位置试样(周向、轴向、径向)的材料冲击功AK分别整理输入到一个Excel文件sj.xls中。
(2)利用VB的DDE技术,根据Matlab分析和处理这些试验数据的需要,将Excel数据文件的数据进行处理并形成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为试验数据的个数
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的数据接口,利用VB将.m文件自动调入到Matlab环境中,并驱动Matlab执行该.m文件,生成试验数据分析结果和相应的图形。
Dim Tmppath,Jgstr As String ′初始化Matlab绘图环境
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") ′执行matlab程序并输出结果图形
MathApp.Execute “rg570b.m”
Call Comm_envset
Jgstr = App.Path & "·70b.bmp"
Cmdstr = "print(gcf,′-dbmp′,‴ & Jgstr & ‴)"
MathApp.Execute (Cmdstr)
(5)利用VB编程控制试验数据输出结果,自动生成Word格式的试验报告并打印出来。
Dim ftest, txtstr, sbuffer As String
Dim rng As Range,lsize, ret As Long
Set WordApp = CreateObject("Word.Application")
txtstr = "冲击功试验数据分析报告"
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′插入结果图片
WordApp.Selection.InlineShapes.AddPicture (Jgstr) '插入试验报告其他信息内容
……
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("试验条件及参数: ")
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("数据采集: 报告人:")
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeParagraph
WordApp.Selection.TypeText ("XXXXX公司")
sbuffer = “c: est eport.doc”
WordApp.ActiveDocument.SaveAs (sbuffer)′关闭当前文档
WordApp.Documents.Close
WordApp.Quit
该软件的程序界面如图2所示,其主要的功能特点如下:
图2 程序界面
(1)数据处理非常灵活,只需改变Excel中的试验数据即可得到不同的输出结果,极大增强了试验数据的对比分析和调试功能。
(2)数据分析的结果非常直观,可以以多种方式展示,支持3D应用及显示,如图3所示。
图3 数据分析结果
(3)试验报告由程序自动生成,既可保存也可直接打印,完全满足实际工作需要。
(4)对于相似问题的试验数据,只需对程序界面稍加修改即可使用,从而使该软件系统的通用性大大增强。
综上所述,通过这3种软件的综合应用与混合编程,发挥软件各自的优势,完成对试验数据输入、汇总、分析、显示及输出的一体化处理,并可自动生成分析报告。可完全适用于其他领域类似数据的处理,具有较强的实用性和推广应用价值。