基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发_第1页
基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发_第2页
基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发_第3页
基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发_第4页
基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

基于VB和MATLAB的限制系统频率特性曲线绘制软件二次开发摘要MATLAB软件开发公司,Mathworks,是一种高性能的语言为技术计算它集计算、可视化和编程在一个易于运用的环境中存在的问题及解决数学符号表达熟识…因为强大的矩阵运算,叫做矩阵试验室Matlab语言与自然语言是相像的运用Matlab极为便利它也有很多功能,可被称为易但是,也有一些缺点因为MATLAB语言是一种说明执行脚本语言,它是特别缓慢循环语句的执行在同等条件下,与之相比,一些高级语言如VB,VC和执行循环的句子在低速图形用户界面(GUI)的MATLAB不是很亲切,参数输入和输出不便利的.VB中,作为一种高水平的计算机语言,实行循环句子得比较快,和它的GUI是友好的.结合可视化编程接口与强大的功能的VB,MATLAB在数值计算和显示的图形,我们可以利用他们自身的优势,避开他们的弱点。所以本软件采纳VB的ActiveX自动化技术ActiveX是一种应用程序开发技术和体系结构的总称[3]。用户可以通过一些小型的,快速的,可重用的组件更加适应商业和家用应用程序的开发;ActiveX代表一种新的应用程序集成开发策略。ActiveX组件有多种类型,VB和Matlab之间通信主要用到自动化服务器和自动化限制器的技术[3]。Matlab作为自动化服务器,被作为自动化限制器的VB程序所调用。为了在VB中恳求Matlab的服务,必需获得Matlab对象在系统注册表中定义的名字一般来说,这个名字为“Matlab.Application”。启动服务器后,就可通过Matlab供应的一些接口函数调用Matlab。这些函数不仅可执行任何合法吩咐,而且可向Matlab传送和获得数据。建立自动化限制器的方式特别简洁,在VB开发环境中,首先选择“工程”下的“引用”标签,选中MablabAutomationServerTypeLibrary。然后用ObjectBrowser查看Mlapp,就可看到Matlab作为服务器供应的接口函数。利用了Matlab作为服务器供应的接口函数FunctionExectue(nameAsString)asstring。此函数用于执行一个合法的Matlab吩咐或者在Matlab的工作空间中调用M文件,并将绘图程序产生的图形显示在屏幕上。输入的name符串可以是Matlab的吩咐,也可以是调用的M文件名,函数返回一个字符串,然后通过软件开发技术,如:软件设计说明书;软件运用说明书;软件测试分析报告;项目开发总结等过程后完成本软件的开发工程。关键词:GUICOM编程思想ActiveX控件网络资源通信交互方法ActiveX自动化技术MatrixVBAbstractMATLAB®softwaredevelopmentCo.,Mathworks,isahigh-performancelanguagefortechnicalcalculationitsetsthecalculation,visualizationandprogramminginaneasytouseenvironmentalproblemsandsolvingmathematicalsymbolsexpressfamiliar...Becauseofthestrongmatrixcomputation,calledthematrixMatlablanguagelaboratorywiththenaturallanguageissimilartotheuseofMatlabisveryconvenient,italsohasmanyfunctions,canbecalledeasybutitalsohassomedisadvantagesbecauseMatlablanguageisakindofexplanation,itisexecutedscriptinglanguageveryslowimplementationofloopingstatementsincoequalcondition,comparedwithsomehigh-levellanguagessuchasVB,VCandexecutionofthesentenceinthelowcyclegraphicaluserinterface(GUI)isnotveryfriendly,andtheparametersoftheMatlabinputandoutputconvenient.VB,asahighlevelofcomputerlanguagesentencefastercycle,anditisfriendly.CombiningGUIprogramminginterfaceandstrongvisualfunctionofVB,Matlabinnumericalcalculationandgraphicdisplay,wecanusetheirownadvantages,toavoidtheirweaknesses.SothesoftwareusingVBActiveXautomationtechnologyActiveXisakindofapplicationdevelopmenttechnologyandsystemstructureofthefloorboard[3].Userscanthroughsomesmall,fast,reusablecomponentsofcommercialandresidentialmoreadaptabletotheapplicationdevelopment,ActiveXrepresentsanewapplicationintegrationdevelopmentstrategy.TherearemanydifferenttypesofmodulesActiveXVBandMatlabmainlyusedbetweencommunicationserverandautomationcontrollerofautomationtechnology[3].Matlabasautomationserver,knownastheVBprogramautomaticcontroller.MatlabinVBtorequestservice,mustobtainMatlabobjectinthesystemregistrydefinitionnames,generallyspeaking,thenameis"Matlabisusedtoapply.".AftertheserverthroughMatlab,canprovidesomeoftheinterfacefunctioninvocationMatlab.Thesefunctionnotonlycanperformanylawfulorders,andcanbetransmittedtotheMatlabanddata.EstablishAutomationcontrollerisverysimple,thewayinVBdevelopmentenvironment,thefirstchoice"project","introduction"tagLibraryAutomationServerTypeMablabselected.ThenuseObjectBrowserMlappview,youcanseetheinterfacesprovideaserverMatlab.UseMatlab®forserverprovidesinterfacesExectuehirethoseknowledgeableprogrammersFunctionname(ring)asstringAsSt.ThisfunctionisusedtoexecutealegitimateMatlabordersorinMatlabworkspacecallMfiles,andwillgenerategraphicsdrawingprogramdisplayedonthescreen.InputthenameoftheoperatorcanbeMatlaborders,alsocanbeinvokedtheM()functionreturnsastringfilename,andthenthroughthesoftwaredevelopmenttechniques,suchas:thesoftwaredesignspecifications,Softwareinstructions,Softwaretestinganalysisreport,Projectdevelopmentaftercompletionofthiscoursesummaryofthedevelopmentofsoftwareengineering.Keywords:GUICOMprogrammingActiveXcontrolnetworkresourcethoughtcommunicationinteractivemethodsActiveXMatrixVBautomationtechnology目录第一章 VB编程简介 41.1 VB编程语言历史 41.2 VB主要用途领域 61.3 VB的优点 6其次章 MATLAB运用的简介 72.1 MATLAB的历史 72.2 MATLAB语言的主要特点 72.3 MATLAB能做什么 82.4 网络资源 8 USENET新闻组 8 网络上的工具箱 8 BBS 8 www服务 82.5 MATLAB帮助 9第三章自动限制原理简介 93.1 自动限制系统的分类 9 按给定信号的特征分类 9 按系统的数学模型分类 9 按信号传递的连续性划分 10 按系统的输入/输出信号的数量分类 113.2 自动限制系统的基本组成 113.3 对限制系统的要求和分析设计 11 对系统的要求 11 限制系统的分析和设计 123.4 限制系统的稳定性分析 12 系统稳定及最小相位系统判据 13 系统稳定及最小相位系统的判别方法 13 奈氏稳定性判据 13第四章VisualBasic与Matlab通信交互方法 134.1 VisualBasic与Matlab通信介绍 14 文件调用法 14 ActiveX自动化技术 14 动态数据交换机制(DDE) 16 将Matlab函数转换为DLL 18 MatrixVB库 184.2 结论 19第五章设计过程 19附录: 19参考文献 20谢辞 21基于VB和MATLAB的限制系统频率特性曲线绘制软件二次开发VB编程简介(黑体、三号、加粗)VB编程语言历史VisualBasic从1991年诞生以来,现在已经19年了。BASIC是微软的起家产品,微软当然不忘了这位功臣。随着每一次微软技术的浪潮,VisualBasic都会随之获得新生。可以预见,将来无论微软又独创了什么技术或平台,VisualBasic肯定会首先以新的姿态登上去的。假如你想紧跟微软,恒久在最新的技术上最快速地开发,你就应当选择VisualBasic。1991-西雅图夜空的雷电随着Windows3.0的推出,越来越多的开发商对这个图形界面的操作系统产生了爱好,大量的Windows应用程序起先涌现。但是,Windows程序的开发相对于传统的DOS有很大的不同,开发者必需将很多精力放在开发GUI上,这让很多希望学习Windows开发的人员却步。1991年,微软公司展示了一个叫Thunder的产品,全部的开发者都惊呆了,它竟然可以用鼠标“画”出所需的用户界面,然后用简洁的BASIC语言编写业务逻辑,就生成一个完整的应用程序。这种全新的“Visual”的开发就像雷电(Thunder)一样,给Windows开发人员开拓了新的天地。这个产品最终被定名为VisualBasic,采纳事务驱动,QuickBASIC的语法和可视化的IDE。VisualBasic1.0带来的最新的开发体验就是事务驱动,它不同于传统的过程式开发。同时,VBX控件让可视化组件的概念进入VisualBasic。VisualBasic1.0是革命性的BASIC,它的诞生也是VB史上的一段佳话。1991年VisualBasic1.0诞生VisualBasic1.0的功能特别简洁,微软为他添加了VBX控件,而不是我们熟识的ocx控件,缺少数据库支持,而且此时的vb还是一种说明型语言,还不能生成.exe文件。但他最大的革新是加入了事务驱动模型和可视化开发。1992年微软推出了VisualBasic2.0微软在这个版本中加入了对象型变量和最原始的“继承”概念,以及OLE和简洁的数据访问功能,同时还有大量的第三方控件。1993年VisualBasic3.0发布在这个版本中,微软添加了增加了最新的ODBC2.0的支持,Jet数据引擎的支持和新版本OLE的支持。最吸引人的地方是它对数据库的支持大大增加了,Grid控件和数据控件能够创建精彩的数据窗口应用程序,而Jet引擎让VisualBasic能对最新的Access数据库快速地访问。VisualBasic3.0还增加了很多新的金融函数。此外还增加了相当多的专业级控件,可以开发出相当水平的Windows应用程序。VisualBasic3.0是98年以前中国最流行的VisualBasic版本。1995年VisualBasic4.0发布VisualBasic4.0是一场革命,但在当时而言,这简直是场灾难,首先vbx控件消逝了,代之的是ocx控件,OLE已经不是传统的OLE了,VisualBasic4.0所用的语言换成了VisualBasicForApplication,这一切导致VB3.0以上版本很难移植到VB4.0中,但不行否认的是VisualBasic4.0为VisualBasic成为一种COM语言奠定了基础。

微软在这个版本中引入COM编程思想,比如在语言上加入了类模块以及属性过程、函数过程,子程序过程等组件开发所需的封装性特征。同时该版本的VisualBasic还能够开发dll函数,可以将书写好的类用这种方式和其他语言共享。在当时用VisualBasic开发com组件比其他任何开发语言都快捷。1997年VisualBasic5.0发布这个版本的VisualBasic为com供应了最强有力的支持,同时微软还加入了一个本地代码编译器,解决了vb4.0中的p代码造成的性能瓶颈问题,让应用程序的效率大大提升。Visualbaisc5.0供应了更多的面对对象支持,允许开发人员创建事务和接口,改进了类模块,支持创建自己的集合类,ActiveX控件、进程内的COMDLL组件以及在阅读器中运行的ActiveX文档。

VisualBasic5.0的IDE支持“智能感知”,这是一项特别便利开发者的功能,可以不必记住很长的成员名称和关键字,只要按“.”,想要的东西统统弹出来。1998年VisualBasic6。0发布VisualBasic6.0已经是一款特别成熟和稳定的开发系统,微软把VisualBasic6.0作为vIsualstudio的一员发布的,这表明微软在变更vb的产品定位,成为大规模企业开发的利器。在vb6.0中微软加入了ado数据访问模型,使大数据量快速访问成为可能,提高了vb对n层结构的分布式应用程序的开发实力,同时微软也为vb加入了开发web应用程序的实力。2002年VisualB诞生这是vb的又一次革命,新增了很多功能,vb6.0不能实现继承,因此始终被c++程序员指责为伪面对对象语言,还支持多线程,引入了try…catch结构异样化处理。

但对vb程序员而言则是又一次灾难。这个版本的vb已经不是传统的VisualBasic,从语言而言VisualBasic4.0抛弃了QuickBASIC,采纳了VisualBasicForApplication,那么则抛弃了VisualBasicForApplication,已经成为一门全新的语言,但这个变更也吓坏了vb程序员,处于一种特别尴尬的局面,一方面它有不行否认的强大功能,另一方面由于版本兼容性大量vb程序员转向c#或java,运用的程序员远不如vb6.0,开发商也很难从vb6.0转向。

从目前透露的VisualB2005信息来看,VisualB2005是值得大家期盼的,在这个版本的中,微软新增了更多的功能,如:泛型、运算符重载、PartialType、窗体的默认实例(让你用VB6的语法运用窗体)、语法的多种改进、My关键字等,微软声称在VisualB2005只用一行代码就可以读写注册表、访问文件、读写串口、获得应用程序信息,能让我们象逛商店那样轻松的编程。VB主要用途领域自动化、数据库、计算、模拟、嬉戏、网络监控、试验协助、自动限制、病毒、间谍程序…VB的优点快速容易上手面对事务编程MATLAB运用的简介MATLAB的历史MATLAB名字由MATrix和LABoratory两词的前三个字母组合而成。那是20世纪七十年头,时任美国新墨西哥高校计算机科学系主任的CleveMoler出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK矩阵软件工具包库程序的的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。1984年由Little、Moler、SteveBangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采纳C语言编写,而且除原有的数值计算实力外,还新增了数据图视功能。1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版,现在最高版本有7.1。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面对对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。MATLAB语言的主要特点有四种基本数据类型:双精度数组(7.0已改进)、字符串数组、元胞数组、构架数组。(矩阵是特殊的数组)元胞数组(CellArray)犹如银行里的保险箱库一样。该数组的基本组分是元胞(Cell),以下标来区分。元胞可以存放任何类型、任何大小的数组。同一个元胞数组中各元胞的内容可以不同。构架数组(StructureArray)也能存放各类数据。该数组的基本组分是构架(Structure),以下标来区分。构架必需在划分“域”后才能运用。数据不能存放于构架,只能存放在域中。构架的域可以存放任何类型、任何大小的数组。不同构架的同名域中存放的内容可不同。MATLAB能做什么MATLAB是一个可视化的计算程序,被广泛地运用于从个人计算机到超级计算机范围内的各种计算机上。MATLAB包括吩咐限制、可编程,有上百个预先定义好的吩咐和函数。这些函数能通过用户自定义函数进一步扩展。MATLAB有很多强有力的吩咐。例如,MATLAB能够用一个单一的吩咐求解线性系统,能完成大量的高级矩阵处理。MATLAB有强有力的二维、三维图形工具。MATLAB能与其他程序一起运用。例如,MATLAB的图形功能,可以在一个FORTRAN程序中完成可视化计算。25个不同的MATLAB工具箱可应用于特殊的应用领域。MATLAB在以下的领域里解决各种问题是一个特别有效的工具:工业探讨与开发。数学教学,特殊是线性代数。全部基本概念都能涉及。在数值分析和科学计算方面的教学与探讨。能够具体地探讨和比较各种算法。在诸如电子学、限制理论和物理学等工程和科学学科方面的教学与探讨。在诸如经济学、化学和生物学等有计算问题的全部其他领域中的教学与探讨。在MATLAB中创建的组是矩阵,MATLAB的名字取自矩阵试验室(MATrixLABoratory)。网络资源USENET新闻组MATLAB的新闻组是。阅读器指向网络上的工具箱hBBS哈尔滨工业高校bbs:上海交通高校bbs:清华高校bbsmathtoolswww服务Matlab大观园:MATLAB帮助MATLAB中可以运用帮助。在系统提示符下,键入help吩咐,MATLAB给出这个吩咐的说明。在MATLAB7中也包含了一个强有力的HTML格式的帮助数据库。这使得找寻一个吩咐更简洁,依参考而得到帮助。当给出helpdesk吩咐时,一个阅读器如NetscapeNavigator或MicrosoftInternetExplorer就运行,即载入一个索引页。假如这还不能满意,可向MathWorks公司订购MATLAB的完整手册。第三章自动限制原理简介自动限制系统的分类按给定信号的特征分类恒值限制系统特点:希望系统的输出维持在给定值上不变或变更很小,这类限制系统是最常见的,经常也称为自镇静系统,像压力、流量、温度、速度、电压、电流等恒定限制系统。随动限制系统特点:这类限制系统的主要特点是给定信号的变更规律是事先不确定的随机信号,限制系统的主要任务是使系统的输出能快速、精确地跟随输入的变更而变更,故这类系统经常又称为跟踪限制系统。常见的例子如火炮、雷达、导弹制导等限制系统。程序限制系统特点:程序限制系统与随机限制系统的不同在于系统的给定输入不是随机的,而是确定的、按预先的规律变更。它要求系统的输出能严格按输入变更而变更,并具有足够的精度,常见的例子如数控加工、自动流水生产线系统等。按系统的数学模型分类这种分类方法是依据元件或系统的数学模型(方程或数学描述)的特征,依据其输入输出之间的关系来进行分类,常可以分为线性系统和非线性系统两大类。线性系统对于一个系统,当其输入(激励)和输出(响应)同时满意叠加性和齐次性时称其为线性系统。依据线性系统的定义,满意线性特性的元件称为线性元件,而构成系统的全部元件均为线性元件的,必为线性系统。所谓线性特性,从几何上来看,是指元件的静态特性为一条通过坐标原点的直线。线性系统常可以用微分方程来表示,若微分方程的系数均为常数,则称为线性定常系统。非线性系统凡是不满意线性系统特性的系统,统称为非线性系统。具体地讲,只要系统中存在一个或一个以上的非线性元件,那么,这个系统就是非线性系统。非线性系统用非线性方程来表示。可以将非线性特性分为两大类,即非本质非线性和本质非线性。(1)非本质非线性:对于某一类非线性特性,在某一区域内可以近似为线性关系,而在大范围工作区域时,这种近似的线性关系就不存在了。(2)本质非线性:对于随意大小的输入信号,均呈现非线性特性的这类非线性特性。典型的本质非线性如下:非本质非线性系统可以通过对非本质非线性在工作点旁边进行线性化处理而得到线性化后的系统数学模型,仍可按线性系统的理论进行分析和设计。而本质非线性特性,只能依据非线性系统的方法进行分析和设计按信号传递的连续性划分连续系统这类系统中的全部元件的输入输出信号均为时间的连续函数,所以又常称为模拟系统。离散系统系统中只要有一处的信号是脉冲序列或数字信号时,该系统就是离散系统。这类系统常用差分方程来表示。离散系统实现上是将连续信号经过采样后离散化为脉冲或数字信号后送入计算机进行分析、处理、决策后,形成脉冲或数字式限制信号,并还原为相应的模拟量限制信号对被控对象实现限制。按系统的输入/输出信号的数量分类单变量系统(SISO)所谓单变量系统是指系统只有一个输入和一个输出,它只留意系统的外部输入和输出,而不关切系统内部的状态变更,所以单输入单输出系统可以把系统看成为一个黑匣子。经典限制理论探讨的对象主要是单输入单输出的线性定常系统。多变量系统(MIMO)所谓多变量系统是指系统有多个输入或单个输出或多个输出,它不仅仅留意系统的输入和输出变量,还更多地关切系统结构内部各状态变量的变更和个状态变量之间的耦合关系。多变量系统是现代限制理论探讨的主要对象,在数学上以状态空间变量法和矩阵理论为主要探讨工具。自动限制系统的基本组成给定元件:其职能是给出与期望的输出相对应的系统输入量,是一类产生系统限制指令的装置。测量元件:其职能是检测被控量(系统输出),并进行信号的变换(如非电量转换)和传输,用于反馈被控量到比较元件与输入进行比较(形成偏差信号)。比较元件:其职能是把测量元件检测到的实际输出量与给定元件给出的输入量进行比较,得到偏差信号。放大元件:其职能是将微弱的偏差信号进行放大,以足够的功率来推动执行机构或被控对象。执行元件:其职能是干脆限制被控对象,使其被控量发生变更,例如阀门、伺服机构等。校正元件:其职能是为了改善或提高限制系统的性能(如稳定性、稳态精度、响应速度等),在限制系统的基本结构上附加肯定的装置(元件),这种附加的校正装置(元件)可以有多种形式,如串联校正、并联校正、反馈校正等。对限制系统的要求和分析设计对系统的要求志向的限制系统,必需具备两方面的性能,即(1)使系统的输出快速、精确地按输入信号要求的期望输出值变更;(2)使系统的输出尽量不受任何扰动的影响;对自动限制系统性能的主要要求为:(1)稳定性:要求系统稳定并具有肯定的稳定裕度。(2)瞬态质量:要求系统的瞬态响应快速且变更平稳。(3)稳态精度:要求系统的稳态误差满意设计的要求。上述三个要求往往很难同时满意,并且相互之间有肯定的制约关系,例如,为保证系统有足够的精度,要求系统的开环放大倍数越大越好,但开环放大倍数的大小,却受制与闭环系统的稳定性,因此这些一切之间须要进行折中选择。限制系统的分析和设计系统分析一般步骤:(1)建立数学模型;(2)分析系统的性能,计算起具体的性能指标;(3)分析系统参数变更对系统性能的影响,并确定选择合理的分析方法。系统的分析方法往往随着数学模型的不同而不同,在经典限制理论中,常用的分析主要有时域分析法、复频域分析法、根轨迹分析法等。系统设计线性系统的频域分析方法限制系统的稳定性分析系统稳定及最小相位系统判据对于连续时间系统,假如闭环极点全部在S平面左半平面,则系统是稳定的。对于离散时间系统,假如系统全部极点都位于Z平面的单位圆内,则系统是稳定的。若连续时间系统的全部零极点都位于S左半平面;或若离散时间系统的全部零极点都位于Z平面单位圆内,则系统是最小相位系统。系统稳定及最小相位系统的判别方法间接判别(工程方法)劳斯判据:劳斯表中第一列各值严格为正,则系统稳定,假如劳斯表第一列中出现小于零的数值,系统不稳定。胡尔维茨判据:当且仅当由系统分母多项式构成的胡尔维茨矩阵为正定矩阵时,系统稳定。干脆判别MATLAB供应了干脆求取系统全部零极点的函数,因此可以干脆依据零极点的分布状况对系统的稳定性及是否为最小相位系统进行推断。对数稳定性判据限制系统开环频率特性函数的极坐标图和对数频率特性图之间有如下的对应关系:极坐标图上以原点为圆心的单位圆对应于对数频率特性图的0分贝线;极坐标图的负实轴对应于相频特性的1800。对数判据之一:对于开环稳定的系统,假如系统开环对数幅频特性L(w)穿过0分贝线时,对应的相频特性相角大于1800,则闭环系统稳定;否则闭环系统不稳定。对数判据之二:对于开环稳定的系统,闭环系统稳定的充要条件是——在开环对数幅频特性L(w)>0的全部频段内,其对数相频特性j(w)对1800线的正负穿越次数之差为0。假如系统在右半S平面有P个开环极点,则开环稳定的系统的充要条件是L(w)>0的全部频段内,j(w)对1800线的正负穿越次数之差为P/2。奈氏稳定性判据对于开环稳定的系统,闭环系统稳定的充要条件是系统开环频率特性函数的奈氏图不包围复平面的(1,j0)点;设开环不稳定的系统在右半S平面有P个开环极点,闭环系统稳定的充要条件是当w由变为时,开环频率特性函数的奈氏图逆时针包围(1,j0)点P次。第四章VisualBasic与Matlab通信交互方法VisualBasic与Matlab通信介绍Matlab是一套集数值分析、矩阵运算、信号处理、图形显示于一体的高性能数值计算软件。它还包括各种强大的Toolbox,可用于特定的科学问题。由于Matlab擅特长理数值计算和系统模拟仿真,因此,它被广泛应用于探讨和解决各种工程问题。但是Matlab本身也存在一些缺点,这极大地限制了它的应用范围:①人机交互界面的不友好使它不能广泛地应用于商业软件,而只能局限于数值分析和算法的软件包开发;②它在底层硬件操作,数据传递,网络应用方面远远比不上VB、VC等集成开发环境开发编制的软件。鉴于集成开发环境在商用软件开发上的优势,以及Matlab在数值计算方面的强大功能,将两种软件的优点结合起来进行工程应用软件的开发便成了实际的须要。本文旨在探讨在VisualBasic的集成开发环境中运用Matlab的数值计算功能的主要技术与方法,并比较了各种通信交互方法的优劣及适用情形。文件调用法假如已经在Matlab中编好了数值计算的函数,文件调用法是一种比较简洁而好用的方法。在VB程序中用标准文件读写方式,将要进行处理的数据存到一个文本文件中,可记为dataIn.txt。然后编写一个calculate.m文件,用于读入data.txt中的数据,调用已经编好的数值计算函数,最终将计算后的结果存到另一个文本文件中,可记为dataOut.txt。VB程序只要读入这个dataOut文本文件就可获得结果数据。在VB中运行M文件可运用shell吩咐。Shell(“<matlab>\matlab.exe-rcalculate”)吩咐行的说明:<matlab>表示计算机中matlab程序所在的路径。-rM-file是让Matlab启动后自动执行M-file文件,这里的文件名不能带.m后缀。运行完calculate程序后自动关闭matlab(可通过M文件中调用quit吩咐的方式)。文件调用法的优点是调用方式简洁明白,在VB中只要用文件写入和读取操作,加上一条shell吩咐就可以利用Matlab的数值计算功能。缺点是程序之间的交互性较差,每次调用shell吩咐就必需把Matlab重新打开,并且只能在Matlab环境下运行计算程序。ActiveX自动化技术ActiveX是一种应用程序开发技术和体系结构的总称[3]。①用户可以通过一些小型的,快速的,可重用的组件更加适应商业和家用应用程序的开发;②ActiveX代表一种新的应用程序集成开发策略。ActiveX组件有多种类型,VB和Matlab之间通信主要用到自动化服务器和自动化限制器的技术[3]。Matlab作为自动化服务器,被作为自动化控制器的VB程序所调用。为了在VB中恳求Matlab的服务,必需获得Matlab对象在系统注册表中定义的名字。一般来说,这个名字为“Matlab.Application”。启动服务器后,就可通过Matlab供应的一些接口函数调用Matlab。这些函数不仅可执行任何合法吩咐,而且可向Matlab传送和获得数据。建立自动化限制器的方式特别简洁,在VB开发环境中,首先选择“工程”下的“引用”标签,选中MablabAutomationServerTypeLibrary。然后用ObjectBrowser查看Mlapp,就可看到Matlab作为服务器供应的接口函数。下面介绍其中主要运用的3个函数。(1)FunctionExectue(nameAsString)asstring。此函数用于执行一个合法的Matlab吩咐或者在Matlab的工作空间中调用M文件,并将绘图程序产生的图形显示在屏幕上。输入的name字符串可以是Matlab的吩咐,也可以是调用的M文件名,函数返回一个字符串。(2)SubGetFullMatrix(NameAsString,workspaceAsString,pr()AsDouble),pi()AsDouble)。通过GetFullMatrix方法可从指定的Mat2lab工作空间中获得指定名字的矩阵。pr(),pi()分别是获得矩阵的实部和虚部。(3)SubPutFullMatrix(NameAsString,workspaceAsString,pr()AsDouble,pi()AsDouble)。通过PutFullMatrix方法可将指定名字的矩阵输入到Matlab的工作空间中。pr(),pi()分别是输入矩阵的实部和虚部。下面将通过一个矩阵求逆的例子说明ActiveX技术的运用,输入矩阵为dataIn,输出矩阵为dataOut。DimMatlabAsObjectDimpReal(1,1)AsVariantDimpImag()AsVariantDimresultAsStringDimiAsInteger,jAsIntegerRem数组赋值Fori=0to1Forj=0to1pReal(i,j)=i+jNextNextRem开启Matlab自动化服务器SetMatlab=CreateObject(“Matlab.Application”)Rem向Matlab输入数据CallMatlab.PutFullMatrix(“dataIn”,“base”,pReal,pImag)Rem执行计算(其间调用Matlab的求逆函数)Result=Matlab.Execute(“dataOut=inv(dataIn)”)Rem返回数据CallMatlab.GetFullMatrix(“dataOut”,“base”,pReal,pImag)或者干脆用Result=Matlab.Execute(“calculate”)calculate为文件调用法中的calculate.m文件。ActiveX技术的特点是敏捷多变,可在VB程序中用Execute吩咐随意调用Matlab中的吩咐和文件。但其缺点是比较困难,而且通常由于调用的命令都是字符串形式,简洁出错,查错也比较困难。动态数据交换机制(DDE)动态数据交换(DDE)是一种进程间通信的机制[4],应用程序之间可以通过建立一个DDE会话来进行通信,启动对话的程序称客户,响应对话的程序称服务器。客户程序启动一个DDE对话,它必需识别两种服务器定义的参数:①要对话的服务名ServiceName;②对话的主题名Topic。当一个服务器程序获得客户程序一个会话的要求,它响应这个要求,并建立一个DDE会话。服务器和主题名唯一地定义了一个会话,在一个DDE会话中,客户和服务器程序通过项目名交换数据,项目名是数据的一个引用。图1为DDE会话的结构示意图。Matlab支持两种类型的主题,分别为System和Engine。System主题允许用户阅读服务器供应的主题列表,系统主题项目列表和支持的格式。Engine主题对3种客户端应用程序中可能的DDE操作供应支持,包括发送吩咐到Matlab中执行,从Matlab中恳求数据以及Matlab发送数据的操作:①En2gEvalString用于在Matlab中运行一个吩咐;②En2gStringResult用来恳求DDE执行吩咐的字符串结果;③EngFigureResult用来恳求DDE执行吩咐的图形结果。下面是Matlab和VB之间的DDE会话通信的简例。在VB窗体中创建两个文本编辑控件TextInput和TextOutput。SubTextInput-KeyPress(KeyAsciiasInteger)IfKeyAscii=vbKeyReturnthenRem对空间TextInput和Matlab之间进行初始化TextInput.LinkMode=vbLinkNoneTextInput.LinkTopic=“MATLAB|Engine”TextINput.LinkItem=“EngEvalString”TextInput.LinkMode=vbLinkManualRem从TextInput控件中获得当前的Matlab吩咐字符串并发送到MatlabStr=TextInput.TextRem运用DDE执行字符串吩咐TextInput.LinkExecuteStrTextInput.LinkMode=vbLinkNoneRem对控件TextOutput和Matlab之间进行初始化TextOutput.LinkMode=vbLinkNoneTextOutput.LinkTopic=“MATLAB|Engine”TextOutput.LinkItem=“EngStringResult”TextOutput.LinkMode=vbLinkManualRem恳求前一个EngEvalString吩咐执行的结果赋值给控件TextOutputTextOutput.LinkRequestTextOutput.LinkMode=vbLinkNoneEndIfEndSubDDE的功能虽然没有ActiveX那么强大,不过相对而言,DDE可用于实现一些并不困难的功能,编码方式也比较简洁。将Matlab函数转换为DLLMatcom是MathTools公司推出的一个从Matlab到C++的编译器。它可以节约用户的运算时间和内存要求。MathTools公司利用Matcom技术编写了Mideva工具软件[5],它可以借用C++编译器将Matlab下的M文件转换为可被VisualBasic调用的Dll文件,亦可编译成独立的标准可执行文件,而不须要装载任何附加产品。要留意的是,在Mideva环境中把M文件编译为一个DLL文件,被编译的M文件必需是一个函数。假如被编译的是一个脚本,则必需先将脚本处理为一个无输入输出的函数。编译结束后,将会产生几个文件。在这些文件中,用于VB的主要有三个。Yourfile.dll(动态链接库文件),Yourfile.bas(函数声明文件),Yourfile.cls(函数文件)。为了在VB工程中运用编译的DLL,必需将Yourfile.bas和Yourfile.cls包含在工程中。可以将Yourfile.dll放入工程所在书目,便于调用。在VB开发环境的工程/引用标签中选中MMatrix,它指向Mmatrix.dll文件,这个文件将在VB开发环境和编译的DLL中起到通信代理的作用。通过Matcom将Matlab函数转换为VB可调用的DLL的方式,既能运用Matlab强大的数值计算实力,又能在程序运行时不依靠Matlab本身的编译环境,而且提高了程序运行的速度。MatrixVB库MatrixVB是Mathworks公司开发的特地用于VB的一个COM库,是一个能增加VB计算功能的函数集合[6]。它允许用户在VB编译环境中调用很多强大的计算算法和函数。MatrixVB库的调用方法,是在VB的集成开发环境中选中菜单工程/引用中的MMatri

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论