VB与Matlab技术在矫直机弯辊控制系统中的应用
- 格式:pdf
- 大小:416.42 KB
- 文档页数:3
相关图片如下:VB与MA TLAB混合编程探讨文章作者:朱志松郭晓丽朱小松文章类型:设计应用文章出处:电子技术应用--------------------------------------------------------------------------------摘要:介绍了VB与MATLAB混合编程的方法,二者结合可以充分利用VB的方便快捷和MATLAB软件工具箱的强大功能。
关键词:VBVC++MATLABDLL编译MATLABAdd-inMATLAB是MathWorks公司开发的科学计算环境,具有强大的计算绘图能力,提供大量的函数库、工具箱,几乎涵盖了所有的工程计算领域,被誉为“演算纸”式的工程计算工具。
但是MATLAB语言是一种解释执行的脚本语言,运算速度较慢是一个比较突出的问题。
VisualBasic作为一门易学易用的编程语言,受到很多工程技术人员的青睐,其执行速度相对较快,界面友好。
因此实现VB与MATLAB混合编程,可以为科研工作和工程应用提供有力的技术支持。
1基本思路及实现方法MATLAB提供了与C++、Fortran的程序接口,并没有提供直接与VB的接口。
目前VB与MATLAB混合编程方面主要使用以下一些方法:(1)在VB中通过调用MATLAB的引擎(Engine)接口,使用Windows的OLE或ActiveX通道与MATLAB通信。
通过Object.Execute MATLAB语句 在程序中直接使用MATLAB提供的函数库和图形库。
这种方法可以较快地编写出程序;但在调用引擎时,会在后台启动一个MATLAB进程,影响程序运行速度,占用内存。
(2)通过使用嵌入VB的矩阵函数库MatrixVB的方法。
MatrixVB是由原MathTools公司开发的第三方插件,利用与MATLAB相似的函数、语法嵌入到VB中,可以象使用VB的函数、命令一样使用MATLAB函数。
这种方法语法和函数使用比较简单,编程效率很高,几乎完全融入VB语言,特别对图形的处理非常方便,弥补了其他方法在图形处理上的弱点。
Visual Basic与Matlab混合编程在板带面内弯曲成形中的应用惠阿玲;唐文亭;王维璐【摘要】It is difficult to control the in-plane bending radius of strip metal accurately due to the interactive influence of the process parameters. The related data in the forming process of in-plane bending was processed and analyzed, and software which can predict the bending radius immediately was developed by Visual Basic 6. 0 and Matlab mixed programming based on ActiveX technology. Since allowing full play to the strong points of Matlab in calculation, data processing and graphics processing while using VB programming, the integration of database operation, data analysis and image display was implemented with friendly interactive interfaces. Therefore, the forming maneuverability and working efficiency were improved.%金属板带面内弯曲加工由于受多工艺参数的交互影响.弯曲半径难以精确控制.本文基于ActiveX技术,利用Visual Basic 6.0与Matlab混合编程,对面内弯曲成形过程中相关数据进行处理及分析,开发了快速准确预测弯曲半径的软件.在使用VB编程的同时,充分发挥Matlab在计算、数据及图形处理等方面的优势,用交互界面实现了数据库操作、数据分析与图形显示一体化.用户界面直观、友好,软件操作方便,增强了成形过程的可操作性,提高了工作效率.【期刊名称】《重型机械》【年(卷),期】2012(000)003【总页数】3页(P108-110)【关键词】Visual Basic;Matlab;面内弯曲;弯曲半径;数据处理【作者】惠阿玲;唐文亭;王维璐【作者单位】西安理工大学材料学院,陕西西安 710048;西安理工大学材料学院,陕西西安 710048;西安理工大学材料学院,陕西西安 710048【正文语种】中文【中图分类】TP3990 前言21世纪,先进塑性加工技术向着高质量、高柔性、低能耗、高精密、轻量化的方向发展。
VB与MATLAB接口技术的分析与应用作者:尚微来源:《科技资讯》 2011年第14期尚微(沈阳理工大学沈阳 110168)摘要:本文详细介绍了VB与Matlab两者间的接口技术,并应用Axtibvex技术实现了在VB 中调用和操作Matlab。
通过两者的混合编程实现了VB的可视化界面与Matlab强大的数值分析和图形图像处理能力的结合。
关键词:ActiveX 无缝链接 DDE MatrixVB中图分类号:TP391.9 文献标识码:A文章编号:1672-3791(2011)05(b)-0014-01Visual Basic是Microsoft公司推出的一种可视化,面向对象和采用事件驱动方式的结构化高级程序设计语言,可用于开发Windows环境下的各类应用程序。
它简单易学,效率高,功能强大,可与Windows的专用开发工具SDK相媲美,而且程序开发人员不必具有C/C++编程基础,避开了C++编程过分繁琐和抽象的缺点。
但是VB在运行复杂运算和图形图像处理时,计算繁琐,运算速度慢,使其在一些专业领域方面不能得到充分利用[3]。
Matlab语言是MathWorks公司推出的计算机软件,它起源于矩阵运算,经过多年的逐步发展与不断完善,现已成为国际公认的最优秀的科学计算与数学应用软件之一。
Matlab语言具有语法结构简单,数值计算高效,图形图像功能完备等特点,因此Matlab语言已成为科学计算,系统仿真,信号和图像处理的主流软件[1]。
工业生产中经常遇到复杂的数据信息处理问题,需要大运算量的矩阵计算及对分析结果进行实时、直观的图形图像化显示。
Matlab是集数值分析、矩阵运算、信号处理和图形图像显示于一体的高性能数学软件,将其强大的计算功能与VB在可视化用户界面开发方面的优势结合起来,实现应用系统的无缝链接,对于有效缩短开发周期、优化系统性能是十分有意义的。
1 分析VB与MATLA接口技术1.1 DDE技术动态数据交换DDE(Dynamic Data Exchange)是允许Windows各应用程序间交换数据的通信机制。
VB调用Matlab在WEDM仿真系统中的应用基于BP的电火花线切割(WEDM)工艺系统需要具有工艺数据库管理、工艺效果预测、加工参数优化等设计功能。
借助Matlab的神经网络工具箱,可以建立良好的工艺效果预测模型和参数优化模型,这正是工艺仿真软件最主要的功能要求。
VB是Windows操作系统下优秀的可视化编程工具软件,在用户界面设计和迅速开发等方面具有独特的优势。
同时,Matlab仿真软件以其强大的科学计算功能和开放式开发思想使其成为当前最为流行的仿真计算工具。
综合两种开发环境各自的优势,可采纳VB与Matlab混合编程的办法实现工艺仿真软件的编程开发。
在VB开发环境下制定前台用户界面,利用Matlab强大的计算功能实现后台模型的实时仿真。
为了实现前台界面与后台仿真环境间的数据传递,应用ActiveX技术举行VB与Matlab之间的接口设计,通过建立在VB 应用程序和Matlab仿真环境之间的ActiveX自动化衔接,实现了在VB 环境下对Matlab仿真指令的调用,并在VB友好的用户界面中实时显示仿真结果。
1 VB与Matlab间的接口分析1.1 VB与Matlab接口形式为了能够充分利用Matlab系统提供的丰盛函数库,Matlab本身提供了应用程序接口API(Matlab application program interface)。
因此,VB与Matlab接口设计有多种实现方式。
(1)借用C++与Matlab的接口,将Matlab的程序文件(*.M)编译为动态链接库(*.DLL),VB在代码中调用生成DLL中的函数,以实现算法,便于用户脱离Matlab环境用法。
因为算法部分采纳C++语句,运行速度较快,可应用于实时运算。
但是这种办法对开发者在设置和编程上都有较高的要求。
(2)通过用法嵌入VB中矩阵函数库MatrixVB的办法实现接口。
MatrixVB是第三方插件,利用与Matlab相像的函数、语法嵌入到VB 中,可以像用法VB的函数、指令一样用法Matlab函数。
收稿日期:2001-09-26作者简介:文小琴(1977-),女,汉,山西闻喜人,太原重型机械学院硕士研究生,主要研究方向为智能控制与故障诊断等。
控制工程Control Engineering of China Sep .2002Vol.9,No.52002年9月第9卷第5期文章编号:167127848(2002)0520088204VB 与MAT LAB 的动态数据交换及其应用文小琴,赵志诚,孙志毅(太原重型机械学院自动化系,山西太原 030024)摘 要:阐述了MA TLAB 自动化服务器及其通信原理,并利用ActiveX 技术,成功地解决了VB 和MA TLAB 的动态数据交换(DDE )问题,将其应用在直流调速系统仿真软件中,取得了良好的效果。
另外还对其数据交换时的关键技术作了必要的说明。
关 键 词:ActiveX ;动态数据交换;MA TLAB 自动化服务器;直流调速系统中图分类号:TP 391 文献标识码:B1 引 言Visual Basic 作为一种可视化的编程语言,具有编程简单、界面友好的特点,不象C 6语言编程那么繁琐与抽象,但又能实现大多数Windows 编程的目的,是Windows 平台上的主力编程语言之一。
但是,VB 在进行复杂运算和图形处理时,计算繁琐,运算速度慢,使其在一些专业领域方面不能得到充分利用。
美国Math Works 公司开发的数学软件包MA TLAB ,集成了世界上科学计算中绝大多数最优秀的算法,功能日趋完善与强大,已成为公认的最优秀科技应用软件之一。
MA TLAB 具有计算功能强大、界面友好、语言自然、开放性强等特点,适用于各应用学科[1]。
但是MA TLAB 本身是一个命令行式的交互系统,功能模块低级分散,要求使用者有较高的计算机素质,熟悉MA TLAB 编程及ToolBox 环境。
直流调速系统是自动化专业的一门主干课程,它要求通过课堂授课和实验紧密结合来达到教学目的,计算机辅助教学是其最好的选择。
第 5卷第 7期中国水运 Vol.5 No.7 2007年 7月 China Water Transport July 2007收稿日期:2007-5-14作者简介:汪海志集美大学 (361021VB 和 MATLAB 的混合编程应用—门机变幅度机构优化设计汪海志摘要:在门座起重机工作性变幅过程中,吊重沿水平或接近水平轨迹移动,可以减少变幅功率,改善起重机工作性能。
本文结合门座起重机变幅机构的设计, 利用MATLAB 的遗传算法工具箱进行优化, 在 VB6.0中利用 ActiveX 自动化技术调用和操作 Matlab,编制了通用的优化程序,为变幅机构的设计提供了一种高效实用的工具。
关键词:变幅机构遗传算法 MATLAB VB中图分类号:TP3111.131 文献标识码:A 文章编号:1006-7973(200707-0136-03一、引言遗传算法简称 GA (Genetic Algorithm 是近年出现的一个有效的优化方法,它不同于传统的搜索和优化方法,它在本质上是一种不依赖具体问题的直接搜索方法。
遗传算法在模式识别、神经网络、图像处理、机器学习、工业优化控制、自适应控制、生物科学、社会科学等方面都得到应用。
在人工智能研究中,现在人们认为遗传算法、自适应系统、细胞自动机、混沌理论与人工智能一样,都是对今后十年的计算技术有重大影响的关键技术。
Matlab 是一种非常高效的程序开发工具, 它的内核由 C 语言编写, 具有强大的数值计算、符号计算和矩阵计算能力, 界面友好,语言简单,对应用学科有极强的适应能力,它推出后不久,很快成为应用学科、计算机辅助分析、设计、仿真和教学不可缺少的软件,并已应用在生物医学工程、信号分析、图象处理、控制等领域中。
特别对于一个从事特定领域的工程师来说,不仅可利用 Matlab 所提供的函数及基本工具箱函数,还可方便地构造出专用的函数。
现在 Matlab 为我们提供了一个遗传算法工具箱,提供了对各种优化问题的一个完整的解决方案,其内含的强大优化功能极大地简化了人们对问题的优化算法实现过程,而更能将精力集中于需要解决的问题,为问题的解决赢得大量的宝贵时间。
第29卷 第1期2003年3月四川建筑科学研究BU ILDIN G SCIENCE RESEARCH OF SICHUAN 收稿日期:2001211226作者简介:陈辉国(1977-),男,湖北公安县人,硕士研究生,主要从事结构抗震及无损检测研究。
利用MatrixVB 插件实现在VB 中的MA TLAB 编程及其在结构动力分析中的应用陈辉国,石少卿(后勤工程学院土木系,重庆 400041)摘 要:介绍了利用MatrixVB 插件实现从VB 中调用MA TLAB 函数的具体方法,利用这种方法,可以大大增强用户开发人机界面友好的计算程序的能力。
关键词:MatrixVB ;MA TLAB ;结构动力分析中图分类号:TU311 文献标识码:B 文章编号:1008-1933(2003)01-0083-021 前言MA TLAB 是由Math Work 公司开发的一种著名的数学计算及仿真软件。
它在矩阵运算、信号处理、图形绘制等方面都具有非常强大的功能,目前已成为最具活力的科学计算语言之一[1]。
MA TLAB 的语法规则简单,编程特点贴近人的思维方式,用它编写计算程序犹如在便笺上列公式和求解,因而有着“科学便笺式”的美称。
VB (Visual Basic )语言是由Microsoft 公司开发的新一代面向对象编程工具,它既是一种编程语言,同时也是一个强大的集成开发环境,利用它可以编制出各种风格的软件产品[2]。
在工程计算中,常常需要进行大量的复杂的数学运算和绘图,为了利用VB 强大的软件开发能力编制出具有友好界面的计算程序,需要在VB 中调用MA TLAB 的函数,以完成复杂的计算和绘图。
以往的MA TLAB 版本只提供了供c 或FORTRAN 语言使用的编程接口,而无法在VB 中直接调用MA TLAB 的函数。
为解决这个问题,文献[3]利用VB 和MA TLAB 都支持ActiveX 技术的特性,通过ActiveX Au 2tomation 协议成功地实现了两者间的连接。
《工业控制计算机》2012年第25卷第4期Matlab 在可视化程序开发方面存在不足。
将VB 在可视化程序开发方面的优势、Matlab 软件的强大的计算功能和功能齐全的工具箱、神经网络能很好地解决非线性问题集于一体,本文利用三者之长,利用VB 编写可视化操作界面程序调用Matlab 编写的神经网络逼近实际的弯辊控制系统,从而实现弯辊量自动计算的功能。
1神经网络的设计BP 神经网络是应用最广泛的神经网络,也是神经网络技术中最为精华的部分,所以本文采用BP 神经网络作为辨识器和控制器。
根据影响中厚板矫直效果的主要因素温度、厚度、屈服强度、弹性模量及板形缺陷程度,确定BP 神经网络输入层有5个神经元。
神经网络的输出是弯辊量,因此,输出神经元个数定为1个。
由于神经网络的输入输出变量不多,所构建的神经网络属于小型网络,所以神经网络采用三层结构,即一个输入程、一个隐含层和一个输出层。
目前,没有理想解析式确定隐层神经元个数,只能根据参考公式和设计者的经验,采用多次实验的方法比较隐层神经元个数设为多少时,神经网络的精度高、稳定性好和泛化能力强。
由于输入神经元n 为5,输出神经元为1,根据公式n i =n+m 姨+a (1)其中,m 为输出神经元个数,n 为输入单元个数,n i 为隐藏神经元数,a 为[1,10]之间的常数[2]。
由公式(1)得隐层神经元个数可取3到13中的任意一个整数。
本文依次将隐层神经元个数设为3到13的整数,设置相同的传递函数和学习函数,设定相同的精度,通过实验得当隐层神经元个数依次为3~13时,其达到设定精度的学习次数依次为233次、155次、238次、239次、188次、189次、143次、240次、179次、250次、177次。
因此隐层神经元个数设为9个时,BP 神经网络的收敛速度最快。
所设计的BP 神经网络结构图如图1所示。
2Matlab 编写BP 神经网络BP 网络是利用非线性可微分函数进行权值训练的多层网络。
由于BP 神经网络结构简单、可塑性强,广泛应用在函数逼近、模式识别和信息分类方面。
Matlab 的神经网络工具箱中BP神经网络主要包含前向网络的创建函数、传递函数、学习函数、性能函数和显示函数。
前向网络创建函数包括newcf 、newff 和newffd ,传递函数包括logsig 、dlogsig 、tansig 、dtansig 、purelin 和dpurelin ,学习函数包括learngd 和learngdm ,性能很函数包括mse 和msereg ,显示函数包括plotperf 、plotes 、plotep 和errsurf 。
神经网络采用不同的传递函数、训练函数、学习函数所得到网络的精度和学习速度有很大的差别。
本文采用网络代码:net =newff (minmax (u),[9,1],邀'purelin','purelin'妖,'trainlm','learngdm','mse')net.trainParam.epochs=7000;net.trainParam.goal=0.0001;net=train(net,u,d);为了提高神经网络的收敛速度,对样本的输入进行了归一化处理,使处理过的输入数据处在0到1区间。
归一化处理的公式为y (n )=x (n )-min (x )max (x )-min (x ),x (n )是数组x 的第n 相,min (x )是VB 与Matlab 技术在矫直机弯辊控制系统中的应用王效岗杨红光胡鹰黄庆学(太原科技大学重型机械教育部工程研究中,山西太原030024)Application of VB And Matlab Used in Bending Roll摘要利用Matlab 软件设计BP 神经网络逼近实际的弯辊系统,VB 开发操作界面程序调用用Matlab 语言编写的神经网络。
在操作程序界面中输入板材参数,操作程序调用神经网络,并根据板材参数由神经网络计算出弯辊量,该弯辊量显示在操作程序中,操作员根据此量矫直板材。
关键词:Matlab ,VB ,ActiveX 技术,弯辊量AbstractThis paper uses MATLAB software to design BP neural network in order to approach the actual bending roll system.Using VB designs an operation contact surface which Communicates with Netural network compiled by Matlab.In the opera-tion contact surface,an operator inputs Plate parameter.The operation program transfer the natural network and computes the value of bending according to plate parameter,the value of bending displays on the operation contact surface,and then operators straighten the plates according to the value.Keywords :Matlab,VB,the technology of ActiveX,roller bendingvalue图1作为弯辊量控制器的BP 神经网络模型结构85心VB与Matlab技术在矫直机弯辊控制系统中的应用数组x的最小值,max(x)是数组x的最大值。
由于样本输入的归一化处理和神经网络的合理设计使网络具有很快的收敛速度,其训练次数与误差图如图2所示。
图2训练函数为trainlm、学习函数为learngdm时BP网络的训练次数与输出误差图构建BP神经网络的样本值与神经网络的输出如表1所示,由表1可知神经网络输出与样本输出误差率最大为0.02%,所示该网络具有较高的精度。
表1神经网络输出与样本值对比表3Matlab中ActiveX技术的应用Matlab支持两种ActiveX技术:ActiveX控件封装集成和Activex自动化。
Activex自动化使得Matlab能施控和受控于其他组件。
当Matlab受控于其他组件时,Matlab表现为自动化服务器(Automation server)。
Matlab自动化服务器的功能包括:在Matlab空间中执行指令,与Matlab空间直接交换数据。
通过Matlab自动化服务器,用户可以在自己的应用程序中执行Matlab命令,并可以与Matlab的工作空间交换数据[4]。
VB支持ActiveX技术,Matlab也支持ActiveX技术,用VB 开发操作界面通过Activex技术实现在Matlab指令空间中执行Matlab指令和将Matlab指令空间中的执行结果返回到VB 开发的程序中。
Matlab Activex对象在系统注册表中定义的名字为matlab.Application。
在VB程序中创建ActiveX对象的方法如下:Dim matlab as objectDim matlabstr as stringSet matlab=createobject(″matlab.application″)在VB应用程序中使用Matlab.application对象包含的各种方法来实现对Matlab的调用。
Matlab.application对象包含了3种方法:Exectue(),GetFullMatrix()和PutFullMatrix()。
利用这三种方法可以实现Matlab的任何功能。
Matlab.Applica-tion对象的这三种方法的使用说明如下:1)BSTR Execute([in]BSTRCommand):用于执行Com-mand字符串指定的Matlab命令,同时返回一个输出字符串表示命令的执行结果。
2)voidGetFullMatrix([in]BSTRName,[in]BSTRWorkspace, [out]SAFEARRAY(double)觹pr,[out]SAFEARRAY(double)觹pi),GetFullMatrix方法用来将MATLAB指令空间中的一个矩阵变量送到VB程序中一个1维或2维数组中。
其中Name表示MATLAB空间中矩阵的变量名,workSpace指定该矩阵所在的Matlab工作区,其值可以是:“base”,表示Matlab默认工作空间;“global”,表示matlab全局工作空间;“caller”,用于MEX 文件;Pr和Pi为数组,分别表示Matlab工作空间输出到vb程序中数组的实部和虚部。
3)voidPutFullMatrix([in]BSTRName,[in]BSTRWorkspace, [in]SAFEARRAY(double)觹pr,[in]SAFEARRAY(double)觹pi)该函数的功能是将VB程序中的一维或二维数组输入到Matlab指令空间中。
其各参数含义与GetFullMatrix()相同。
4创建VB操作界面第一步:编辑操作界面:从工具箱中选择文本框、标签、按钮和框体到窗体中,设置个控件的属性。
设计的操作界面图如图3所示。
图3VB程序操作界面图第二步:编写实现功能的代码:1)“学习”按钮的功能;单击“学习”按钮实现从经验表中读取样本信息,对样本信息进行归一化处理并将处理过的样本信息和神经网络指令通过ActiveX接口传递到matlab指令空间中,然后用样本培训BP神经网络。
实现此功能的部分代码如下:Private Sub Cmdxuexi_Click()Dim ExcelA As Excel.ApplicationDim ExcelW As Excel.WorkbookDim ExcelS As Excel.WorksheetDim shjwlIn(1To5)As Double'神经网络输入Dim pi(1To5)As DoubleSet ExcelA=New Excel.ApplicationSet ExcelW=ExcelA.Workbooks.Open(″D:\shuju.xls″)Set ExcelS=ExcelW.Worksheets(1)For h=1To maxhangyangben(h,1)=(Val(Cells(h,1))-minwendu)/(maxwendu-minwendu) shjwlIn(1)=(Val(TxtWendu.Text)-minwendu)/(maxwendu-minwendu)shjwlIn(2)=(Val(TxtHoudu.Text)-minhoudu)/(maxhoudu-minhoudu)shjwlIn(3)=(Val(TxtQufu.Text)-minqufu)/(maxqufu-minqufu) shjwlIn(4)=(Val(TxtTanmo.Text)-mintanmo)/(maxtanmo-mintanmo)shjwlIn(5)=Val(TxtBanxing.Text)Next hCall matlab.PutFullMatrix(″x″,″base″,shjwlIn,pi)…End sub2)“计算”按钮的功能:在输入量框体的文本框中输入板材参数,然后单击“计算”按钮,板材参数及相应的matlab指令自动传入matlab指令空间,利用训练好的BP神经网络计算出弯(下转第89页)86《工业控制计算机》2012年第25卷第4期(上接第86页)辊量,并将此弯辊量返回到VB 操作界面的弯辊量文本框中。