摘要:本文介绍了利用ActiveX技术,将VB、MATLAB无缝连接的方法,以及如何利用MATLAB对复合材料成型过程中的工艺参数进行数值插值、拟合和动态的三维参数场的建立。 关键词: MATLAB VB ActiveX 插值 拟合 三维 中图分类号:TP311.52 Abstract: This paper introduces the technology of ActiveX connecting VB and MATLAB, the method of interpolation and curve fitting of matlab, and the establishment of three-dimensional parameter field. Key words:MATLAB VB ActiveX Interpolation Fitting 3D MATLAB作为国际上最优秀的科技应用软件之一,拥有强大的科学计算与可视化功能,它不仅拥有一个能够提供强大的数值计算、数据分析、图形绘制、图像处理等功能的数学平台,而且提供了非常广泛实用的外部程序接口,用户可以通过此接口使用MATLAB几乎所有的功能进行独立的应用程序设计。 VisualBasic 是基于窗体的可视化程序开发环境,简单、易用,而且可以象C/C++一样开发高级的应用程序,它避开了C++ 编程过分繁琐和抽象的缺点,同时又能实现大多数Windows 编程目的,自微软推出以来,成了广大程序开发人员的首选语言。 复合材料固化过程中存在着许多复杂的过程,对产品质量造成影响的因素十分复杂。笔者采用MATLAB与VB混合编程开发了一套复合材料成型过程在线监测系统,既利用了VB能够快速有效的构造Windows应用程序的优点,又利用了MATLAB强大的数学和图像平台,对于复合材料成型过程中的材料内部的各种参数的变化、趋势进行实时的采集、数值分析和拟合,并且绘制动态的温度、压力等参数的二(三)维变化趋势图,进而合理的控制各种工艺参数的变化。对于复合材料改善产品质量,缩短固化周期,减少生产成本,提高固化工艺的通用型及制件的可靠性起到了重要的作用。 1 VB与MATLAB的混合编程 1.1 编程机理 MATLAB提供了功能强大的与C/C++、Fortran的外部程序接口,而且提供了内嵌在VB中的MATLAB矩阵函数库等等。这使得MATLAB与其他高级语言的混合编程成为可能。MATLAB与VB的混合编程有几种方法,本系统中,考虑到需要在复合材料成型过程中实时的采集数据并且生成动态的三维图像,笔者采用了ActiveX技术。 ActiveX是定义从Web到OLE(对象连接与嵌入)控件的所有内容的核心术语。Miscrosoft建立了一套使用和集成ActiveX组件的标准,从Visual Basic到Miscrosoft Word,到Java的所有产品都具有使用ActiveX组件的能力。ActiveX组件有很多类型。在MATLAB中,对两种ActiveX技术提供了支持,其中包括ActiveX自动化,它包含了ActiveX自动化服务器和ActiveX自动化控制器,我们使用MATLAB作为自动化服务器,它是可以由其他应用程序编程驱动的组件。而自动化控制器就是使用和操纵自动化服务器的应用程序,本课题中使用Visual Basic作为自动化控制器,使用它可以生成、使用和删除自动化服务器,就好像它们是语言的一部分。在VB应用程序内创建MATLAB ActiveX对象后,就可以使用这个对象的方法、属性来实现对于MATLAB 的调用。该对象含有5个方法,它们Execute,PutFullMatrix,GetFullMatrix,MinimizeCommandWindow, MaximizeCommandwindow;利用这些方法在VB应用程序内可实现MATLAB的功能。 1.2 实例应用 ‘创建一个MATLAB类型的对象 Set Matlab = CreateObject("Matlab. application") ‘使matlab命令行窗口不可见 Matlab.Visible = False ‘设置matlab工作区路径 Path = "addpath C:\WINNT" result = Matlab.Execute(Path) Private Sub Timer2_Timer() ‘将实时采集到的数据(距阵)传送到matlab工作区 Call MatLab.PutFullMatrix("x", "base", a , d) Call MatLab.PutFullMatrix("y", "base", a , d) Call MatLab.PutFullMatrix("z", "base", a , d) ‘调用m文件(数据处理或者绘图matlab子程序) result = Matlab.Execute("chazhi.m") End Sub … 以上为本系统源代码片断,在VB6.0 /MATLAB6.0 &6.5/Windows2000下调试通过。 2 数据处理 数据采集过程中,只能特定的采集设定位置的多路工艺参数,如果要得到一个三维的参数场或者对参数的变化趋势进行模拟预测,就需要对采集的离散数据进行处理。包括插值运算和曲线拟合。 2.1 插值 插值是确定某个函数在两个采样值之间的数值时采用的运算过程。插值通常是利用曲线拟合的方法,通过离散的输入采样点建立一个连续函数,用这个重建的函数便可以求出任意位置处的函数值。这样便可以不受仅在采样点处抽取输入信号值的限制。插值函数对采样数值的平滑作用,恢复了在采样过程中丢失的信息。因而插值可以看做是采样的逆过程。 本系统使用了MATLAB的二维插值函数griddata,可以将位于同一平面或曲面上的散点插值为规则网格。编写chazhi.m文件为: [XI,YI]=meshgrid(min(x):0.1:max(x),min(y):0.1:max(y)); [XI,YI,ZI]=griddata(x,y,z,XI,YI,method); 其中x,y,z,XI,YI,ZI均为矩阵。x,y,z分别为预先设定的采集点(平面)坐标和实时采集的工艺参数值。ZI为由不均匀空间向量(x,y,z)拟合出的z=f(x,y)曲面上的点。graddata通过指定的较连续的点(XI,YI)进行插值运算生成ZI。Method是指特定的插值方法。包括: linear 线性插值 把相邻的数据点用直线连接,按所生成的曲线进行插值。(默认) Cubic 三次多项式插值 用已知数据构造出三次多项式进行插值。 Spline 三次样条插值 用已知数据求出样条函数后,按照样条函数插值。为二阶连续可导的三次多项式插值函数。 三次多项式插值和三次样条插值法的值曲线比线性插值要平滑,而且曲线质量相近。原理上,三次样条插值要比三次多项式插值好些。 2.2 曲线拟合 由于有时我们希望得到某个工艺参数的变化趋势和规律,就需要对采集的离散数据点进行曲线拟合,绘制满足某多项式的曲线接近这些离散的数据点而不必通过它们。编写nihe.m为: %选择阶此为3 n=3; %根据离散数据点x,y得到3阶多项式 p=polyfit(x,y,n); %得到三阶多项式拟合的数据点yi yi=polyval(p,x); 2.3 图形绘制 MATLAB有着丰富的数据可视化功能,它可以给出原始数据的二维、三维甚至四维的图像,同时,可以对生成的图像进行各种控制和处理,而且MATLAB还可以绘制各种函数的图形。 在数学上,函数z=f(x,y)的图形是三维空间的曲面,在MATLAB中,总是假设函数z=f(x,y)是定义在一个矩形的区域D=[xmin,xmax] X [ymin,上的。图形绘制的过程是,分别在x,y方向上将坐标分成m和n份,由这些点将矩形区域D分成m X n个小矩形块,然后计算出在这些网格点的函数值,那么每个小矩形块都得到四个在z方向的函数值,连接起来的得到一个三维的小四边形片,所有的这些m X n个小矩形块所生成的m X n个小四边形片连接起来就构成了z=f(x,y)定义在D上的空间网格曲面。MATLAB中,函数meshgrid可生成平面网格点矩阵,mesh可绘制三维图形。其语法格式为: [X,Y]=meshgrid(x,y) mesh(X,Y,Z) 其中,x,y是[xin,,[ymin,上的划分点组成的向量。X,Y,Z都是矩阵。X,Y是由x,y生成的平面网格点矩阵。X的行向量都是x,Y的列向量都是y。Z是由X,Y计算出的函数值矩阵。 本系统对采集到的数据进行插值运算后绘制的某一时刻的三维温度场如图1所示: 图 1 复合材料预浸料层温度场图 其中,z轴为温度坐标,(x,y)为复合材料预浸料层,图中红色三角点代表传感器采集的8路离散数据。 纤维浸润过程模拟如图2所示: 图 2纤维浸润过程图 其中红色曲线为随时间变化纤维浸润树脂产生的质量变化,蓝色曲线为其斜率的变化。 3 结束语 本文使用matlab对复合材料成型过程中采集到的工艺参数进行了数据处理和参数场、变化过程模拟,通过编写简单的m文件,就可以得到非常直观、动态的图形,并且与VB进行混合编程,借助VB生成简洁的用户窗口,对实际的工艺过程有很重要的指导意义。 参考文献 1 刘志俭 潘献飞 连军想,MATLAB外部程序接口(6.X) 科学出版社,2002 2 薛定宇,控制系统计算机辅助设计(MATLAB语言及其应用),北京,清华大学出版社,1996 3 清源计算机工作室,MATLAB高级应用:图形及影像处理,北京,机械工业出版社 2000 4 曾伟民等,Visual Basic 6.0 高级实用教程,北京,电子工业出版社
该贴已经同步到 后勤部长的微博 |