·30·                              计算机应用技术                机械 2007年第1期 总第34卷
——————————————— 收稿日期:2006-10-20
基金项目:湖北自然科学基金项目支持(2005ABA310)
MATLAB 与VB 的混合编程 在稳态渗流分析中的应用
邓洋1,易先中1,田亚南2,张春生3
(1.长江大学 机械工程学院,湖北 荆州 434023;2.中国石油集团海洋工程有限公司辽河事业部,辽宁 盘锦124010;
3.中海石油(中国)有限公司 天津分公司,天津 塘沽300452)
摘要:阐述了应用MATLAB 与VB 编程工具相结合的手段开发稳态渗流特性研究软件的方法。以一维流动的分析为例,MATLAB 建立了一维流动的数学模型,实现对流动特性的分析,并给出可视化的结果。VB 与Matlab 的混合编程,有效的提高了程序的设计效率。
关键词:VB ; MATLAB ; 稳态渗流; 一维流动;
中图分类号:TP391.72                文献标识码:A              文章编号:1006-0316(2007)01-0030-03
Combined application of MATLAB and VB in analyzing of stable percolation DENG Yang 1 ,YI Xian-zhong 1 ,TIAN Ya-nan 2 ,ZHANG Chun-sheng 3
(1. School of Mechanical Engineering ,Yangtze University ,Jingzhou 434023,China ; (2. Liaohe Department ,Offshore Engineering Ltd Co ,CNPC ,Panjin 124010,China ; (3. China National Offshore Oil Corporation Limited ,Tianjin Company ,Tanggu 300452,China )
Abstract: The paper describes the method of how to combine the programming tools of MATLAB and VB to develop software for the characteristic analysis of stable percolation.The analysis of 1-D flow was made for instance ,a 1-D flow model of characteristic analysis is established with MATLAB , so the flow characteristics analysis can be made and the visible results can be simulated. The design efficiency is improved based on combined application of MATLAB and VB. Key words: VB ;MATLAB ;stable percolation ;1-D flow
MATLAB 是一套高性能的数值计算和可视化软件,它集数值分析,矩阵运算,信号处理和图形显示于一体,用该语言进行复杂算法设计的效率很高,并能对分析结果进行直观的数据显示。但它一般不能脱离
MATLAB 集成环境工作,生成复杂的人机交互式图形界面的能力不强,这给用户开发交互式演示系统带来了极大的不便。而VB 作为一种可视化的,面向对象的,事件驱动的Windows 应用程序的开发平台,能迅速有效的编制程序界面,但它没有MATLAB 那样强大的科学计算功能。若将MATLAB 与VB 结合,实现VB 对MATLAB 的控制,使各自的优势充分发挥出来,对于缩短开发周期,提高编程效率,优化系统结构是相当有意义的。
1 VB 与MATLAB 结合的实现方法
VB 与MATLAB 的结合有四种接口方法:M 文
件,MatrixVB ,ActiveX 和DDE 技术。
1.1 mcc 技术
通过M 文件,MATLAB 只提供了C 和Fortran 编程语言的接口,VB 是不能直接调用M 文件的,可利用mcc 将M 文件生成EXE 文件,再在VB 模块中声明三个API 函数(WaitForSingleObject ,CloseHandle 和OpenProcess ),最后使用Shell 命令即可实现VB 和MATLAB 的链接。通过M 文件的结合方式交互性较差,只适合对于实时性要求不高的数据交换的应用。
1.2 MatrixVB 技术[1]
MatrixVB 是MathWorks 公司针对VB 提供的一个Matlab 函数库,它提供了600多个函数,包括基本的数学运算和功能强大的信号处理,线性代数,
串运算及图形图像处理功能等,为VB 提供了强大的功能扩展。MatrixVB 安装完成后,只需在VB 工程中引用Mmatrix 即可。
1.3 DDE 技术
动态数据交换(DDE )是在Windows 环境下支持客户/服务器计算模式的重要技术,两个Windows 应用程序之间可以通过交换数据来相互连接,由于VB 支持DDE 客户端功能MATLAB 提供了DDE 服务功能,因此利用VB 和MATLAB 的动态数据交换能力,可以实现在VB 应用程序中调用MATLAB 。
1.4 ActiveX 技术[2]
ActiveX 技术是一种基于Microsoft Windows 操作系统的组件集成协议,通过ActiveX ,开发者和终端用户可以选择由不同的开发商发布的面向应用程序的ActiveX 组件,并将它们无缝地集成到自己的应用程序中,从而完成特定的目的。
在MATLAB 中,对两种类型的ActiveX 技术提供了支持,即ActiveX 容器和ActiveX 自动化,其中ActiveX 自动化包含了ActiveX 自动化服务器和ActiveX 自动化控制器两种类型的ActiveX 组件。通过MA
TLAB ActiveX 自动化服务器技术,用户可以在自己编写的ActiveX 自动化控制器程序或ActiveX 容器程序中对MATLAB 进行操纵;而通过MATLAB ActiveX 自动化控制器技术,用户可以在MATLAB 中,通过编写M 函数对ActiveX 自动化服务器进行各种控制,包括初始化和删除。
2 稳态渗流的数学模型
稳态渗流是指多孔介质的流场中各个空间点上的物理量如压力,流速等均与时间无关。在均质地层中稳态渗流由拉普拉斯方程描述[3]:
(1)平面平行流:在实验中测定岩芯的纵向渗透率过程中,可以认为流线是一组互相平行的直线,设介质长度为L ,供给边缘压力为e p ,排液道(流出端)压力为w p ,则
2
2
d 0d p
x = (0)e p x p == ()w p x L p ==
(2)平面径向流:圆形地层有边水供给的中心有一口井。井的半径为w r ,圆形地层半径为R ,井底压力为w p ,外边界压力为e p ,则
d d ()0d d p
r r r =    w r r R << ()w w p r r p == ()e p r R p ==
(3)球形向心流:一个半球形的储液层,顶部为一圆平面,底部为半球面,其半径为h ,也就是地层厚度,顶部原面中心被局部钻开,钻开部分为半径为w r 的同心半球,底部半球面是供给边界,即有底水使其保定压为e p ,则
2d d 2p Q
r K r µπ=− ()e p r h p == ()w w p r r p ==
利用求解微分方程可以解出各种类型的压力分布,从而得到它们的仿真曲线。
3 仿真软件的设计
本文采用的是MATLAB ActiveX 自动化服务器技术,以VB 开发界面,在界面输入仿真参数传递给MATLAB 计算,计算完数据后将该参数下仿真曲线在VB 开发的界面上显示出来。
(1)首先将VB 和MATLAB 实现连接。代码如下:
Dim Matlab As Object
Set Matlab = CreateObject ("Matlab.application")
(2)将界面中输入的数据传递给MATLAB (图1)
Dim i () As Double
Dim canshu (1 To 3) As Double Dim L , Pe , Pw As Double
canshu (1) = Val (Text1.Text ) '介质长度L canshu (2) = Val (Text2.Text ) '供给边缘压力Pe
canshu (3) = Val (Text3.Text ) '排液道(流出端)压力Pw Call Matlab.putfullmatrix ("gcs", "base", canshu , i )
(下转第47页)
由图4可知,当刀具浸入工件的深度由25%,铣削极限切削深度为0.22 mm
改变系统径向切削系数,计算出径向切削系数和极限切削深度的关系,如图5所示。
当刀具浸入25%和95%时,改变系统的径向切削系数,由图5可知,随着径向切削系数的增大,极限切削深度在降低。
改变系统阻尼比进行仿真,得到系统阻尼比和极限切削深度的关系,如图6所示。
图4 刀具浸入工件25%时的稳定性叶瓣图
图5 径向切削系数对稳定性的影响
图6系统阻尼比对稳定性的影响
在刀具浸入工件为25%和95%时,改变系统阻
尼比,由图6可知,随着系统阻尼比的增大的增大,
极限切削深度在升高。
3 结论
由仿真分析结果可知,主轴转速和轴向切深间
有着密切联系。随着主轴转速的增大,轴向切深呈
周期性的变化趋势。系统切削参数也对轴向切深有
影响,增大径向切削参数会使轴向切深减小,增大
系统阻尼会使轴向切深增大。在相同转速下,随着
刀具浸入工件比例的增大,轴向切深增大。本文中
的仿真结果和其他学者的试验结果做了比较,并无
太大误差,证明仿真结果的有效性。
参考文献:
[1]Tobias,S.A,1965.Machine Tool Vibration. Blackie and Sons Ltd.
[2]Y. Altintas and E. Budak. Analytical Prediction of Stability Lobes in
Milling[J]. Annals of the CIRP,199544(1):357-362.
[3]Smith,S. and Tlusty,J.,1993,”Effcient Simulation Programs for
Chatter in milling .Annals of the CIRP,42/1:463-466.
[4]陈勇,刘雄伟. 在Matlab/Simulink环境下的动态铣削力仿真,华
侨大学学报,2003,24:168-17.
(上接第31页)
(3)MATLAB计算完后将仿真曲线在VB设
waitforsingleobject函数计的界面中显示出来(如图2)
图1 数据读取界面图2 平面径向流演示界面
4 结束语
VB是简单,易学的可视化编程语言,但它在
科学计算功能上还比较薄弱。MATLAB在数值分析
和图形仿真上有它的优势,但在生成可交互式图形
界面能力方面还不强。本文充分利用VB和
MATLAB的优点,利用Active技术,将两者结合起
来,以渗流力学中的稳态渗流为例,编制了相应的
分析软件,为该方面的可视化开辟了新的思路。
参考文献:
[1]何英,何强.Matlab扩展编程[M].北京:清华大学出版社,2002.
[2]刘志俭.等.MATLAB应用程序接口用户指南[M].北京:科学出
版社,2000.
[3]孔祥言.高等渗流力学[M].合肥:中国科学技术大学出版社,1999.
0      5000    10000    15000
主轴转速(r/min)
6
4
2
/
m
m
0 0.2 0.4
径向切削系数
0.4
0.2
m
m
0 0.02 0.04
系统阻尼比
0.4
0.2
m
m