您好,欢迎来到六九路网。
搜索
您的当前位置:首页基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发

基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发

来源:六九路网


基于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 开发环境中,首先选择“工程”下的“引用”标签,选中Mablab Automation ServerType Library。然后用Object Browser 查看Mlapp ,就可看到Matlab 作为服务器提供的接口函数。利用了Matlab 作为服务器提供的接口函数Function Exectue ( name As St ring ) asstring。此函数用于执行一个合法的Matlab 命令或者在Matlab 的工作空间中调用M 文件,并将绘图程序产生的图形显示在屏幕上。输入的name 符串可以是Matlab 的命令,也可以是调用的M 文件名,函数返回一个字符串,然后通过软件开发技术,如:软件设计说明书;软件使用说明书;软件测试分析报告;项目开发总结等过程后完成本软件的开发工程。

关键词 :GUI COM编程思想 ActiveX 控件 网络资源 通信交互方法 ActiveX 自动化技术 MatrixVB

Abstract

MATLAB ® software development Co., Mathworks, is a high-performance language

for technical calculation it sets the calculation, visualization and programming in an easy to use environmental problems and solving mathematical symbols express familiar... Because of the strong matrix computation, called the matrix Matlab language laboratory with the natural language is similar to the use of Matlab is very convenient, it also has many functions, can be called easy but it also has some disadvantages because Matlab language is a kind of explanation, it is executed scripting language very slow implementation of looping statements in coequal condition, compared with some high-level languages such as VB, VC and execution of the sentence in the low cycle graphical user interface (GUI) is not very friendly, and the parameters of the Matlab input and output convenient. VB, as a high level of computer language sentence faster cycle, and it is friendly. Combining GUI programming interface and strong visual function of VB, Matlab in numerical calculation and graphic display, we can use their own advantages, to avoid their weaknesses.

So the software using VB ActiveX automation technology ActiveX is a kind of application development technology and system structure of the floorboard [3]. Users can through some small, fast, reusable components of commercial and residential more adaptable to the application development, ActiveX represents a new application integration development strategy. There are many different types of modules ActiveX VB and Matlab mainly used between communication server and automation controller of automation technology [3]. Matlab as automation server, known as the VB program automatic controller. Matlab in VB to request service, must obtain Matlab object in the system registry definition names, generally speaking, the name is \"Matlab is used to apply.\". After the server through Matlab, can provide some of the interface function invocation Matlab. These function not only can perform any lawful orders, and can be transmitted to the Matlab and data. Establish Automation controller is very simple, the way in VB development environment, the first choice \"project\\"introduction\" tag Library Automation ServerType Mablab selected. Then use Object Browser Mlapp view, you can see the interfaces provide a server Matlab. Use Matlab ® for server

provides interfaces Exectue hire those knowledgeable programmers Function name (ring) asstring As St. This function is used to execute a legitimate Matlab orders or in Matlab workspace call M files, and will generate graphics drawing program displayed on the screen. Input the name of the operator can be Matlab orders, also can be invoked the M () function returns a string filename, and then through the software development techniques, such as: the software design specifications, Software instructions, Software testing analysis report, Project development after completion of this course summary of the development of software engineering.

Keywords: GUI COM programming ActiveX control network resource thought communication interactive methods

ActiveX MatrixVB automation technology

目 录

第一章 VB编程简介 ................................................................................................................ 6

1.1

VB编程语言历史.............................................................................................................. 6

1.2 VB主要用途领域 ............................................................................................................... 8 1.3 VB的优点 ........................................................................................................................... 8

第二章 MATLAB使用的简介 ................................................................................................ 9

2.1 MATLAB的历史 ............................................................................................................... 9 2.2 MATLAB语言的主要特点 ............................................................................................ 9 2.3 MATLAB能做什么 .......................................................................................................... 9 2.4 网络资源 ........................................................................................................................10

2.4.1 2.4.2 2.4.3 2.4.4

USENET新闻组 .......................................................................................................10 网络上的工具箱.....................................................................................................10 BBS...........................................................................................................................10 www服务..................................................................................................................10

2.5 MATLAB帮助 .................................................................................................................. 11

第三章 自动控制原理简介 ............................................................................................12

3.1 自动控制系统的分类 .................................................................................................12

3.1.1 3.1.2 3.1.3 3.1.4

按给定信号的特征分类 ........................................................................................12 按系统的数学模型分类 ........................................................................................12 按信号传递的连续性划分 ....................................................................................13 按系统的输入/输出信号的数量分类 ..................................................................13

3.2 自动控制系统的基本组成........................................................................................13 3.3 对控制系统的要求和分析设计 ..............................................................................14

3.3.1 对系统的要求.........................................................................................................14 3.3.2 控制系统的分析和设计 ........................................................................................14

3.4 控制系统的稳定性分析 ............................................................................................15

3.4.1 系统稳定及最小相位系统判据 ............................................................................15 3.4.2 系统稳定及最小相位系统的判别方法 ................................................................15

3.4.3 奈氏稳定性判据.....................................................................................................16

第四章Visual Basic 与Matlab 通信交互方法...............................................16

4.1 Visual Basic 与Matlab 通信介绍 ...................................................................16

4.1.1 4.1.2 4.1.3 4.1.4 4.1.5

文件调用法.............................................................................................................16 ActiveX 自动化技术 ............................................................................................17 动态数据交换机制(DDE) ......................................................................................18 将Matlab 函数转换为DLL ..................................................................................20 MatrixVB 库 ..........................................................................................................21

4.2 结 论 .............................................................................................................................21

第五章 设计过程 ....................................................................................................................21 附录:.............................................................................................................................................22 参考文献 .......................................................................................................................................22 谢辞 ..................................................................................................................................................23

基于VB和MATLAB的控制系统频率特性曲线绘制软件二次开发

第一章 VB编程简介(黑体、三号、加粗)

1.1 VB编程语言历史

Visual Basic从1991年诞生以来,现在已经19年了。BASIC是微软的起家产品,微软当然不忘了这位功臣。随着每一次微软技术的浪潮,Visual Basic都会随之获得新生。可以预见,将来无论微软又发明了什么技术或平台,Visual Basic一定会首先以新的姿态登上去的。如果你想紧跟微软,永远在最新的技术上最快速地开发,你就应该选择Visual Basic。

1991-西雅图夜空的雷电随着Windows 3.0的推出,越来越多的开发商对这个图形界面的操作系统产生了兴趣,大量的Windows应用程序开始涌现。但是,Windows程序的开发相对于传统的DOS有很大的不同,开发者必须将很多精力放在开发GUI上,这让很多希望学习Windows开发的人员却步。1991年,微软公司展示了一个叫 Thunder的产品,所有的开发者都惊呆了,它竟然可以用鼠标“画”出所需的用户界面,然后用简单的BASIC语言编写业务逻辑,就生成一个完整的应用程序。这种全新的“Visual”的开发就像雷电(Thunder)一样,给Windows开发人员开辟了新的天地。这个产品最终被定名为Visual Basic,采用事件驱动,Quick BASIC的语法和可视化的IDE。Visual Basic 1.0带来的最新的开发体验就是事件驱动,它不同于传统的过程式开发。同时,VBX控件让可视化组件的概念进入Visual Basic。Visual Basic 1.0是性的BASIC,它的诞生也是VB史上的一段佳话。1991年 Visual Basic1.0诞生 Visual Basic1.0的功能非常简单,微软为他添加了VBX控件,而不是我们熟悉的ocx控件,缺少数据库支持,而且此时的 vb还是一种解释型语言,还不能生成.exe文件。但他最大的革新是加入了事件驱动模型和可视化开发。1992年微软推出了Visual Basic2.0 微软在这个版本中加入了对象型变量和最原始的“继承”概念,以及OLE和简单的数据访问功能,同时还有大量的第三方控件。 1993年 Visual Basic3.0发布 在这个版本中,微软添加了增加了最新的ODBC2.0的支持,Jet数据引擎的支持和新版本OLE的支持。最吸引人的地方是它对数据库的支持大大增强了,Grid控件和数据控件能够创建出色的数据窗口应用程序,而Jet引擎让Visual Basic能对最新的Access数据库快速地访问。Visual Basic 3.0还增加了许多新的金融函数。此外还增加了相当多的专业级控件,可以开发出相当水平的Windows应用程序。Visual Basic 3.0是98年以前中国最流行的Visual Basic版本。1995

年 Visual Basic4.0发布 Visual Basic4.0是一场,但在当时而言,这简直是场灾难,首先vbx控件消失了,代之的是ocx控件,OLE已经不是传统的OLE了,Visual Basic 4.0所用的语言换成了Visual Basic For Application,这一切导致VB3.0以上版本很难移植到VB4.0中,但不可否认的是Visual Basic 4.0为Visual Basic成为一种COM语言奠定了基础。

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

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

但对vb程序员而言则是又一次灾难。这个版本的vb已经不是传统的Visual Basic,从语言而言Visual Basic 4.0抛弃了Quick BASIC,采用了Visual Basic For Application,那么vb.net则抛弃了Visual Basic For Application,已经成为一门全新的语言,但这个变化也吓坏了vb程序员,vb.net处于一种非常尴尬的局面,一方面它有不可否认的强大功能,另一方面由于版本兼容性大量vb程序员转向c#或java,使用vb.net的程序员远不如vb6.0,开发商也很难从vb6.0转向vb.net。

从目前透露的Visual Basic.net 2005信息来看,Visual Basic.net2005是值得大家期待的,在这个版本的vb.net中,微软新增了更多的功能,如:泛型、运算符重载、Partial Type、窗体的默认实例(让你用VB6的语法使用窗体)、语法的多种改进、My关键字等,微软声称在

Visual Basic.net2005只用一行代码就可以读写注册表、访问文件、读写串口、获取应用程序信息,能让我们象逛商店那样轻松的编程。

1.2 VB主要用途领域

自动化、数据库、计算、模拟、游戏、网络监控、实验辅助、自动控制、病毒、间谍程序„

1.3 VB的优点

 快速  容易上手  面向事件编程

第二章 MATLAB使用的简介

2.1 MATLAB的历史

MATLAB名字由MATrix和 LABoratory 两词的前三个字母组合而成。那是20世纪七十年代,时任美国新墨西哥大学计算机科学系主任的Cleve Moler出于减轻学生编程负担的动机,为学生设计了一组调用LINPACK和EISPACK矩阵软件工具包库程序的的“通俗易用”的接口,此即用FORTRAN编写的萌芽状态的MATLAB。1984年由Little、Moler、Steve Bangert合作成立MathWorks公司,并把MATLAB正式推向市场。从这时起,MATLAB的内核采用C语言编写,而且除原有的数值计算能力外,还新增了数据图视功能。 1997年仲春,MATLAB5.0版问世,紧接着是5.1、5.2,以及和1999年春的5.3版,现在最高版本有7.1。现今的MATLAB拥有更丰富的数据类型和结构、更友善的面向对象、更加快速精良的图形可视、更广博的数学和数据分析资源、更多的应用开发工具。

2.2 MATLAB语言的主要特点

有四种基本数据类型:双精度数组(7.0已改进)、字符串数组、元胞数组、构架数组。(矩阵是特殊的数组) 

元胞数组(Cell Array)如同银行里的保险箱库一样。该数组的基本组分是元胞(Cell),以下标来区分。元胞可以存放任何类型、任何大小的数组。同一个元胞数组中各元胞的内容可以不同。 

构架数组(Structure Array)也能存放各类数据。该数组的基本组分是构架( Structure ),以下标来区分。构架必须在划分“域”后才能使用。数据不能存放于构架,只能存放在域中。构架的域可以存放任何类型、任何大小的数组。不同构架的同名域中存放的内容可不同。

2.3 MATLAB能做什么

MATLAB是一个可视化的计算程序,被广泛地使用于从个人计算机到超级计算机范围内

的各种计算机上。MATLAB包括命令控制、可编程,有上百个预先定义好的命令和函数。这些函数能通过用户自定义函数进一步扩展。MATLAB有许多强有力的命令。例如, MATLAB能够用一个单一的命令求解线性系统,能完成大量的高级矩阵处理。MATLAB有强有力的二维、三维图形工具。MATLAB能与其他程序一起使用。例如, MATLAB的图形功能,可以在一个FORTRAN 程序中完成可视化计算。25个不同的MATLAB工具箱可应用于特殊的应用领域。MATLAB在以下的领域里解决各种问题是一个十分有效的工具:

 工业研究与开发。

 数学教学,特别是线性代数。所有基本概念都能涉及。

 在数值分析和科学计算方面的教学与研究。能够详细地研究和比较各种算法。  在诸如电子学、控制理论和物理学等工程和科学学科方面的教学与研究。  在诸如经济学、化学和生物学等有计算问题的所有其他领域中的教学与研究。  在MATLAB中创建的组是矩阵, MATLAB的名字取自矩阵实验室( M ATrix LABoratory)。

2.4 网络资源

2.4.1 USENET新闻组

– – – – –

2.4.3 BBS

– – – – – – –

哈尔滨工业大学bbs: telnet://bbs.hit.edu.cn 上海交通大学bbs: telnet://bbs.sjtu.edu.cn 清华大学bbs mathtools http://www.mathworks.com http://matlab.turbo.hit.edu.cn Matlab 大观园:

http://www.matlab-world.com

MATLAB的新闻组是comp.soft-sys.MATLAB。浏览器指向 http://www.dejanews.com http://www.google.com http://www.mathtools.com/ http://www.mathworks.com/matlabcentral/fileexchange/loa2.4.2 网络上的工具箱

dCategory.do

2.4.4 www服务

2.5 MATLAB帮助

MATLAB中可以使用帮助。在系统提示符下,键入help命令,MATLAB给出这个命令的解释。 在MATLAB7 中也包含了一个强有力的HTML格式的帮助数据库。这使得寻找一个命令更 容易,依参考而得到帮助。当给出help desk命令时,一个浏览器如Netscape Navigator或 Microsoft Internet Explorer就运行,即载入一个索引页。 如果这还不能满足,可向Math Works公司订购MATLAB的完整手册 。

第三章 自动控制原理简介

3.1自动控制系统的分类

3.1.1 按给定信号的特征分类

3.1.1.1 恒值控制系统

特点:希望系统的输出维持在给定值上不变或变化很小,这类控制系统是最常见的,常常也称为自镇定系统,像压力、流量、温度、速度、电压、电流等恒定控制系统。

3.1.1.2 随动控制系统

特点:这类控制系统的主要特点是给定信号的变化规律是事先不确定的随机信号,控制系统的主要任务是使系统的输出能快速、准确地跟随输入的变化而变化,故这类系统常常又称为跟踪控制系统。常见的例子如火炮、雷达、导弹制导等控制系统。

3.1.1.3 程序控制系统

特点:程序控制系统与随机控制系统的不同在于系统的给定输入不是随机的,而是确定的、按预先的规律变化。它要求系统的输出能严格按输入变化而变化,并具有足够的精度,常见的例子如数控加工、自动流水生产线系统等。 3.1.2 按系统的数学模型分类

这种分类方法是按照元件或系统的数学模型(方程或数学描述)的特征,依据其输入输出之间的关系来进行分类,常可以分为线性系统和非线性系统两大类。

3.1.2.1 线性系统

对于一个系统,当其输入(激励)和输出(响应)同时满足叠加性和齐次性时称其为线性系统。 根据线性系统的定义,满足线性特性的元件称为线性元件,而构成系统的所有元件均为线性元件的,必为线性系统。 所谓线性特性,从几何上来看,是指元件的静态特性为一条通过坐标原点的直线。 线性系统常可以用微分方程来表示,若微分方程的系数均为常数,则称为线性定常系统。

3.1.2.2 非线性系统

凡是不满足线性系统特性的系统,统称为非线性系统。具体地讲,只要系统中存在一个或一个以上的非线性元件,那么,这个系统就是非线性系统。非线性系统用非线性方程来表示。 可以将非线性特性分为两大类,即非本质非线性和本质非线性。

(1)非本质非线性:对于某一类非线性特性,在某一区域内可以近似为线性关系,而在大范围工作区域时,这种近似的线性关系就不存在了。

(2)本质非线性:对于任意大小的输入信号,均呈现非线性特性的这类非线性特性。 典型的本质非线性如下:

非本质非线性系统可以通过对非本质非线性在工作点附近进行线性化处理而得到线性化后的系统数学模型,仍可按线性系统的理论进行分析和设计。而本质非线性特性,只能按照非线性系统的方法进行分析和设计

3.1.3 按信号传递的连续性划分

3.1.3.1 连续系统

这类系统中的所有元件的输入输出信号均为时间的连续函数,所以又常称为模拟系统。

3.1.3.2 离散系统

系统中只要有一处的信号是脉冲序列或数字信号时,该系统就是离散系统。这类系统常用差分方程来表示。离散系统实现上是将连续信号经过采样后离散化为脉冲或数字信号后送入计算机进行分析、处理、决策后,形成脉冲或数字式控制信号,并还原为相应的模拟量控制信号对被控对象实现控制。

3.1.4 按系统的输入/输出信号的数量分类

3.1.4.1 单变量系统(SISO)

所谓单变量系统是指系统只有一个输入和一个输出,它只注重系统的外部输入和输出,而不关心系统内部的状态变化,所以单输入单输出系统可以把系统看成为一个黑匣子。 经典控制理论研究的对象主要是单输入单输出的线性定常系统。

3.1.4.2 多变量系统(MIMO)

所谓多变量系统是指系统有多个输入或单个输出或多个输出,它不仅仅注重系统的输入和输出变量,还更多地关心系统结构内部各状态变量的变化和个状态变量之间的耦合关系。 多变量系统是现代控制理论研究的主要对象,在数学上以状态空间变量法和矩阵理论为主要研究工具。

3.2 自动控制系统的基本组成

 给定元件:其职能是给出与期望的输出相对应的系统输入量,是一类产生系统控制指

令的装置。

 测量元件:其职能是检测被控量(系统输出),并进行信号的变换(如非电量转换)

和传输,用于反馈被控量到比较元件与输入进行比较(形成偏差信号)。

 比较元件:其职能是把测量元件检测到的实际输出量与给定元件给出的输入量进行比

较,得到偏差信号。

 放大元件:其职能是将微弱的偏差信号进行放大,以足够的功率来推动执行机构或被

控对象。

 执行元件:其职能是直接控制被控对象,使其被控量发生变化,例如阀门、伺服机构

等。

 校正元件:其职能是为了改善或提高控制系统的性能(如稳定性、稳态精度、响应速

度等),在控制系统的基本结构上附加一定的装置(元件),这种附加的校正装置(元件)可以有多种形式,如串联校正、并联校正、反馈校正等。

3.3 对控制系统的要求和分析设计

3.3.1 对系统的要求

理想的控制系统,必须具备两方面的性能,即

(1)使系统的输出快速、准确地按输入信号要求的期望输出值变化; (2)使系统的输出尽量不受任何扰动的影响; 对自动控制系统性能的主要要求为:

(1)稳定性:要求系统稳定并具有一定的稳定裕度。 (2)瞬态质量:要求系统的瞬态响应快速且变化平稳。 (3)稳态精度:要求系统的稳态误差满足设计的要求。

上述三个要求往往很难同时满足,并且相互之间有一定的制约关系,例如,为保证系统有足够的精度,要求系统的开环放大倍数越大越好,但开环放大倍数的大小,却受制与闭环系统的稳定性,因此这些一切之间需要进行折中选择。 3.3.2 控制系统的分析和设计

3.3.2.1 系统分析

一般步骤:(1)建立数学模型;(2)分析系统的性能,计算起具体的性能指标;(3)分析系统参数变化对系统性能的影响,并决定选择合理的分析方法。

系统的分析方法往往随着数学模型的不同而不同,在经典控制理论中,常用的分析主要有时域分析法、复频域分析法、根轨迹分析法等。 3.3.2.2

系统设计

线性系统的频域分析方法

3.4 控制系统的稳定性分析

3.4.1 系统稳定及最小相位系统判据

 对于连续时间系统,如果闭环极点全部在S平面左半平面,则系统是稳定的。  对于离散时间系统,如果系统全部极点都位于Z 平面的单位圆内,则系统是稳定的。  若连续时间系统的全部零极点都位于S 左半平面;或若离散时间系统的全部零极点都位

于Z 平面单位圆内,则系统是最小相位系统。 3.4.2 系统稳定及最小相位系统的判别方法

3.4.2.1 间接判别(工程方法)

劳斯判据:劳斯表中第一列各值严格为正,则系统稳定,如果劳斯表第一列中出现小 于零的数值,系统不稳定。

胡尔维茨判据:当且仅当由系统分母多项式构成的胡尔维茨矩阵为正定矩阵时,系统 稳定。

3.4.2.2 直接判别

MATLAB 提供了直接求取系统所有零极点的函数,因此可以直接根据零极点的分布情况

对系统的稳定性及是否为最小相位系统进行判断。

3.4.2.3 对数稳定性判据

控制系统开环频率特性函数的极坐标图和对数频率特性图之间有如下的对应关系:极 坐标图上以原点为圆心的单位圆对应于对数频率特性图的0 分贝线;极坐标图的负实轴对应 于相频特性的1800。

对数判据之一:对于开环稳定的系统,如果系统开环对数幅频特性L(w)穿过0 分贝线 时,对应的相频特性相角大于1800,则闭环系统稳定;否则闭环系统不稳定。 对数判据之二:对于开环稳定的系统,闭环系统稳定的充要条件是——在开环对数幅 频特性L(w) >0 的所有频段内,其对数相频特性j(w)对1800线的正负穿越次数之差为0。

如果系统在右半S 平面有P 个开环极点,则开环稳定的系统的充要条件是L(w) >0 的所有频 段内,j(w)对1800线的正负穿越次数之差为P/2。

3.4.3 奈氏稳定性判据

 对于开环稳定的系统,闭环系统稳定的充要条件是系统开环频率特性函数的奈氏图不包

围复平面的(1, j0)点;

 设开环不稳定的系统在右半S 平面有P 个开环极点,闭环系统稳定的充要条件是当w 由

变为时,开环频率特性函数的奈氏图逆时针包围(1, j0)点P次。

第四章Visual Basic 与Matlab 通信交互方法

4.1 Visual Basic 与Matlab 通信介绍

Matlab 是一套集数值分析、矩阵运算、信号处理、图形显示于一体的高性能数值计算软件。它还包括各种强大的Toolbox ,可用于特定的科学问题。由于Matlab 擅长处理数值计算和系统模拟仿真,因此,它被广泛应用于研究和解决各种工程问题。但是Matlab 本身也存在一些缺点,这极大地了它的应用范围: ①人机交互界面的不友好使它不能广泛地应用于商业软件,而只能局限于数值分析和算法的软件包开发; ②它在底层硬件操作,数据传递,网络应用方面远远比不上VB、VC 等集成开发环境开发编制的软件。鉴于集成开发环境在商用软件开发上的优势,以及Matlab 在数值计算方面的强大功能,将两种软件的优点结合起来进行工程应用软件的开发便成了实际的需要。

本文旨在讨论在Visual Basic 的集成开发环境中使用Matlab 的数值计算功能的主要技术与方法,并比较了各种通信交互方法的优劣及适用情形。 4.1.1 文件调用法

如果已经在Matlab 中编好了数值计算的函数,文件调用法是一种比较简单而实用的方法。在VB程序中用标准文件读写方式,将要进行处理的数据存到一个文本文件中,可记为data In. txt 。然后编写一个calculate.m 文件, 用于读入data. txt 中的数据,调用已经编好的数值计算函数,最后将计算后的结果存到另一个文本文件中,可记为dataOut .txt 。VB 程序只要读入这个dataOut 文本文件就可获得

结果数据。在VB 中运行M 文件可使用shell 命令。Shell (“< matlab > \\ matlab. exe - r calculate”)命令行的说明:< matlab > 表示计算机中matlab 程序所在的路径。- r M - file 是让Matlab 启动后自动执行M -file 文件,这里的文件名不能带. m 后缀。运行完calculate 程序后自动关闭matlab (可通过M 文件中调用quit 命令的方式) 。文件调用法的优点是调用方式简单明了, 在VB 中只要用文件写入和读取操作,加上一条shell命令就可以利用Matlab 的数值计算功能。缺点是程序之间的交互性较差,每次调用shell 命令就必须把Matlab 重新打开,并且只能在Matlab 环境下运行计算程序。 4.1.2 ActiveX 自动化技术

ActiveX是一种应用程序开发技术和体系结构的总称[3 ] 。①用户可以通过一些小型的,快速的,可重用的组件更加适应商业和家用应用程序的开发; ②ActiveX代表一种新的应用程序集成开发策略。ActiveX 组件有多种类型,VB 和Matlab 之间通信主要用到自动化服务器和自动化控制器的技术[3 ] 。Matlab 作为自动化服务器,被作为自动化控

制器的VB 程序所调用。为了在VB 中请求Matlab的服务,必须获得Matlab 对象在系统注册表中定义的名字。一般来说,这个名字为“Matlab. Application”。启动服务器后,就可通过Matlab 提供的一些接口函数调用Matlab。这些函数不仅可执行任何合法命令,

而且可向Matlab 传送和获得数据。建立自动化控制器的方式十分简单,在VB 开发环境中,首先选择“工程”下的“引用”标签,选中Mablab Automation ServerType Library。然后用Object Browser 查看Mlapp ,就可看到Matlab 作为服务器提供的接口函数。下面介绍其中主要使用的3 个函数。

( 1 ) Function Exectue ( name As String ) asstring。此函数用于执行一个合法的Matlab 命令或者在Matlab 的工作空间中调用M 文件,并将绘图程序产生的图形显示在屏幕上。输入的name 字符

串可以是Matlab 的命令,也可以是调用的M 文件名,函数返回一个字符串。

( 2 ) Sub Get FullMat rix ( Name As St ring ,workspace As St ring , pr ( ) As Double) , pi ( ) AsDouble) 。通过Get FullMat rix 方法可从指定的Mat2lab 工作空间中获取指定名字的矩阵。pr ( ) ,pi( ) 分别是获得矩阵的实部和虚部。

( 3 ) Sub PutFullMatrix ( Name As String ,workspace As String ,pr () As Double , pi () As Double) 。通过Put FullMatrix 方法可将指定名字的矩阵输入到Matlab 的工作空间中。pr ( ) ,pi ( ) 分别是输入矩阵的实部和虚部。下面将通过一个矩阵求逆的例子说明ActiveX技术的使用, 输入矩阵为data In , 输出矩阵为dataOut 。Dim Matlab As Object Dim pReal (1 ,1) As Variant Dim p Imag () As Variant Dim result As St ring

Dim i As Integer ,j As Integer Rem 数组赋值 For i = 0 to 1 For j = 0 to 1 pReal (i ,j) = i + j Next Next

Rem 开启Matlab 自动化服务器

Set Matlab = CreateObject (“Matlab. Application”) Rem 向Matlab 输入数据

Call Matlab. Put FullMat rix (“data In”,“base”,pReal ,p Imag) Rem 执行计算(其间调用Matlab 的求逆函数)

Result = Matlab. Execute (“ dataOut = inv(data In) ”) Rem 返回数据

Call Matlab. Get FullMat rix (“dataOut”,“base”,pReal ,p Imag) 或者直接用

Result = Matlab. Execute (“calculate”) calculate 为文件调用法中的calculate. m 文件。 ActiveX 技术的特点是灵活多变,可在VB 程序 中用Execute 命令任意调用Matlab 中的命令和文 件。但其缺点是比较复杂,而且通常由于调用的命 令都是字符串形式,容易出错,查错也比较困难。 4.1.3 动态数据交换机制(DDE)

动态数据交换(DDE) 是一种进程间通信的机制[4 ] ,应用程序之间可以通过建立一个

DDE 会话来进行通信,启动对话的程序称客户,响应对话的程序称服务器。客户程序启动一个DDE 对话,它必须识

别两种服务器定义的参数: ①要对话的服务名Service Name ; ②对话的主题名Topic。当一个服务器程序获得客户程序一个会话的要

求,它响应这个要求,并建立一个DDE 会话。服务器和主题名唯一地定义了一个会话,在一个DDE 会话中,客户和服务器程序通过项目名交换数据,项目名是数据的一个引用。图1 为DDE 会话的结构示意图。Matlab 支持两种类型的主题,分别为System 和Engine 。System 主题允许用户浏览服务器提供的主题列表,系统主题项目列表和支持的格式。Engine主题对3 种客户端应用程序中可能的DDE 操作提供支持,包括发送命令到Matlab 中执行,从Matlab中请求数据以及Matlab 发送数据的操作: ①En2gEvalSt ring 用于在Matlab 中运行一个命令; ②En2 gSt ringResult 用来请求DDE 执行命令的字符串结果; ③EngFigureResult 用来请求DDE 执行命令的图形结果。

下面是Matlab 和VB 之间的DDE 会话通信的简例。在VB 窗体中创建两个文本编辑控件Text Input 和TextOutput 。Sub Text Input- KeyPress ( KeyAscii as Integer)If KeyAscii = vbKeyReturn then

Rem 对空间Text Input 和Matlab 之间进行初始化 Text Input .LinkMode = vbLinkNone

Text Input . LinkTopic =“MATLAB| Engine” Text INput . LinkItem =“EngEvalSt ring” Text Input . LinkMode = vbLinkManual Rem 从Text Input 控件中获得当前的Matlab 命令字符串并发送到Matlab

St r = Text Input . Text Rem 使用DDE 执行字符串命令 Text Input . LinkExecute St r Text Input . LinkMode = vbLinkNone Rem 对控件TextOutput 和Matlab 之间进行初 始化

TextOutput . LinkMode = vbLinkNone

TextOutput . LinkTopic =“MATLAB| Engine” TextOutput . LinkItem =“EngSt ringResult” TextOutput . LinkMode = vbLinkManual Rem 请求前一个EngEvalSt ring 命令执行的结 果赋值给控件TextOutput TextOutput . LinkRequest

TextOutput . LinkMode = vbLinkNone End If End Sub

DDE 的功能虽然没有ActiveX 那么强大,不过相对而言,DDE 可用于实现一些并不复杂的功能,编码方式也比较简单。

4.1.4 将Matlab 函数转换为DLL

Matcom 是MathTools 公司推出的一个从Matlab 到C + + 的编译器。它可以节省用户的运算时间和内存要求。MathTools 公司利用Matcom 技术编写了Mideva 工具软件[5 ] ,它可以借用C + + 编译器将Matlab 下的M 文件转换为可被Visual Basic 调用的Dll 文件,亦可编译成的标准可执行文件,而不需要装载任何附加产品。要注意的是,在Mideva 环境中把M 文件编译为一个DLL 文件,被编译的M 文件必须是一个函数。如果被编译的是一个脚本,则必须先将脚本处理为一个无输入输出的函数。编译结束后,将会产生几个文件。在这些文件中,用于VB 的主要有三个。Yourfile. dll (动态链接库文件) ,Yourfile. bas (函数声明文件) , Yourfile. cls (函数文件) 。为了在VB

工程中使用编译的DLL , 必须将Yourfile. bas 和Yourfile. cls 包含在工程中。可以将Yourfile. dll 放入工程所在目录,便于调用。在VB 开发环境的工程/ 引用标签中选中MMat rix ,它指向Mmat rix. dll文件,这个文件将在VB 开发环境和编译的DLL 中 起到通信代理的作用。通过Matcom 将Matlab 函数转换为VB 可调用

的DLL 的方式,既能使用Matlab 强大的数值计算能力,又能在程序运行时不依赖Matlab 本身的编译环境,而且提高了程序运行的速度。 4.1.5 MatrixVB 库

Mat rixVB 是Mathworks 公司开发的专门用于VB 的一个COM 库,是一个能增强VB 计算功能的函数集合[6 ] 。它允许用户在VB 编译环境中调用许多强大的计算算法和函数。Mat rixVB 库的调用方法,是在VB 的集成开发环境中选中菜单工程/ 引用中的MMat rix 后就可以 直接使用Mat rixVB 库中的命令。打开即时窗口,这个窗口允许直接将命令传递给VB 解释器而不需要完整的程序。在即时窗口中输入: x = erf (1) x. show

这个函数将计算一个误差函数, 不久就会在Matrix Viewer 窗口中看到计算结果。MatrixVB 实现的功能和上述的将Matlab 函数转化为DLL 的功能相同。只是不需要自己动手生成DLL 文件,MatrixVB 中已经包含了所要用到的计算函数。因此,MatrixVB 是最好的Visual Basic调用Matlab 计算函数的方式。

4.2 结 论

Visual Basic 和Matlab 通信有多种方法,具体使用应视实际情况而定。如果已经编好M 文件,可使用第一种文件调用法,最为方便和简单。如果不想用到Matlab 的编译环境,可将M 文件用上述的第五种方法编译成可被VB 调用的DLL 文件。ActiveX技术和MatrixVB 两种方法提供更为灵活多变的通信方式。一般而言,远程访问可使用ActiveX技术,本地访问或者发布软件可使用MatrixVB 库。但是由于本程序要绘制nyquist曲线和bode曲线,而MatrixVB 库中并没有在两个函数,调用函数后不能绘制出曲线出来。所以本程序采用了ActiveX技术,

第五章 设计过程

由于本软件设计按一般的软件设计方法,所有的软件设计说明书;软件使用说明书;软件测试分析报告;项目开发总结分别另附文件。

附录:

Nyquist和bode曲线绘制软件设计说明书.doc Nyquist和bode曲线绘制软件使用说明书.doc Nyquist和bode曲线绘制软件测试分析报告.doc Nyquist和bode曲线绘制软件项目开发总结.doc

参考文献

[ 1 ] 沈小燕, 王乘.COM/DCOM 接口技术及其在Matlab 中的应用[J ]. 计算机工程与设计, 20021 [ 2 ] 王富昌, 曹慧荣1VB与Matlab 的完美结合MatrixVB [J ]. 电脑学习, 20021

[ 3 ] 侯春生, 陈汝义, 袁爱进, 等.Matlab/VB/SQLServer 编程实现数据管理[M ] . 微型电脑应用,20021

[ 4 ] 文小琴, 赵志诚, 孙志毅VB与Matlab 的动态数据交换及其应用[J ]. 控制工程, 20021 [ 5 ] 郑君杰, 黄峰VB 6.0 和Matlab 的混合编程[J ]. 电脑学习, 2002167《现代电子技术》2004 年第12 期总第179 期电力电子技术

[ 6 ] 董玉红.机械控制工程基础.哈尔滨:哈尔滨工业大学出版社,2007. [ 7 ] 杨叔子主编.机械工程控制基础.武汉:华中科技大学出版社,2005. [ 8 ] 夏玮等.MATLAB控制系统仿真与实例详解.北京:人民邮电出版社,2008.

[ 9 ] 刘炳文. Visual Basic程序设计教程(新世纪计算机基础教育丛书.北京:清华大学出版社,2006. [ 10 ] 刘坤等.MATLAB自动控制原理习题精解.北京:国防工业出版社,2004.

谢辞

岁月如歌,光阴似箭,四年的大学生活即将结束。经历了找工作的喧嚣与坎坷,我深深体会到了写作论文时的那份宁静与思考。回首四年的求学历程,对那些引导我、帮助我、激励我的人,我心中充满了感激。

在论文完成之际,我的心情万分激动。在指导老师戴丽玲老师,以及四年来帮助和教育过我的 安宇老师,刘景阳老师,邓利君老师,副教授毕涛老师和班主任杨怡怀老师„„,从论文的选题、资料的收集到论文的撰写编排整个过程中,我得到了许多的热情帮助。四年寒窗,所收获的不仅仅是愈加丰厚的知识,更重要的是在阅读、实践中所培养的思维方式、表达能力和广阔视野。很庆幸这些年来我遇到了许多恩师益友,无论在学习上、生活上还是工作上都给予了我无私的帮助和热心的照顾,让我在诸多方面都有所成长。感恩之情难以用语言量度,谨以最朴实的话语致以最崇高的敬意。

在指导老师们严肃的科学态度,严谨的治学精神,精益求精的工作作风中,我深深地受到各位老师地感染和激励。从课题的选择到项目的最终完成,各位老师尤其是沈明秀老师都始终给予我细心的指导和不懈的支持。四年来,班主任杨怡怀老师不仅在学业上给我以精心

指导,同时还在思想、生活上给我以无微不至的关怀,在此谨向各位指导老师致以诚挚的谢意和崇高的敬意。

在此,我还要感谢在一起愉快的度过大学生生活的所有同学们,正是由于你们的帮助和支持,我才能克服一个一个的困难和疑惑,直至本文的顺利完成。

在论文即将完成之际,我的心情无法平静,从开始进入课题到论文的顺利完成,有多少可敬的师长、同学、朋友给了我无言的帮助,在这里请接受我诚挚的谢意!最后我还要感谢培养我长大含辛茹苦的父母,谢谢你们!

论文正代表着大学的终结,完成它既有一种收获感,又有一种失落感,可无论如何它代表着我四年的努力,代表了我四年的历程。当它终于完工的时候,我不禁想起了很多人,很多事,尤其是辛勤培养我的老师们,谢谢你们!

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- 69lv.com 版权所有 湘ICP备2023021910号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务