基于VISUAL BASIC与MATLAB的自动控制系统的设计

  • 格式:pdf
  • 大小:523.80 KB
  • 文档页数:19

2.1
BSTR Execute(in BSTR Command)方法
BSTR 表示宽字符串类型,该方法接收字符串命令,将调用 Matlab ,执行一条由
Command 字符串所决定的一条 Matlab 命令, 同时返回命令的执行情况, 如将由 “surf(peaks)” 生成的图形显示在屏幕上,在 VB 的命令按钮中输入如下程序: Dim Matlab As Object Dim Result As String Set Matlab = CreateObject("Matlab.Application") Cmd=text1.text Result = matlab.execute("print -f1 -dbitmap e:\bode.bmp") Picture1.Picture = LoadPicture("e:\bode.bmp")
在 MATLAB 中,直接用分子/分母的系数表示, 即
num [b1 , b2 , b3 ,..., bm ]
den [ a1 , a 2 , a 3 ,..., a n ]
则该系统的频率响应数据可由
G ( j ) H ( j )
得出。
b1 ( j ) m b2 ( j ) m 1 ... bm ( j ) bm 1 a1 ( j ) n a 2 ( j ) n 1 ... a n ( j ) a n 1
自动控制系统函数的频域分析法
频域分析法又称频率法,它所研究的问题是自动控制系统控制过程的性能,即稳定
性、快速性及稳定精度。频域分析法能较简单迅速地判断出某个环节或参数对系统性能的 影响,并能指明改进方法。它研究的依据是系统的一种数学模型—频率特性,即在线性控 制系统中,输入正弦信号时,其稳态输出随频率变化( 由 0 变到 )的特性。
6
自动控制系统函数的时域分析法
根轨迹法、频域法等,各种方法综合的本质是一种“分析+图解”的方法,其最大的特点 是依靠试探,即根据系统的一组性能指标,通过逐步试探和调整,以达到全部性能指标的 要求。 一个控制系统的全部性质都取决于其闭环传递函数,如稳定性取决于其极点,稳定精 度取决于其比例系数,动态性能既取决于其极点,又与零点有关。闭环传递函数的零点和 开环传递函数的零点相同,比例系数之间也有简单的关系,都不难确定。唯有闭环传递函 数的极点,即闭环特征方程的根,计算比较困难。控制系统的这些基本性能在经典控制理 论中主要通过时域响应曲线分析法、根轨迹法与频率响应法等对系统进行设计、分析,为 此我们借助 Matlab 强大的专业绘图功能(如响应曲线、 Bode 图、Nyquist 图、 Frequency
(4.1.2)
4.2
零极点增益模型
G ( s ) H s num ( s ) den ( s ) ( S Z1 )(S Z 2 )...(S Z m ) ( S P1 )(S P2 )...(S Pn )
(4.2.1)
k
在 MATLAB 中,用[z,p,k]矢量组表示, 即
(5.2.1)
上式的辅助函数的幅角变化关系可写为:
G ( j ) H ( j ) ( j ) M ( j )] N ( j ) [1 ] [N :0 :0 :0

i 1
n
( j si ) :0
:0j
j 1
2.4
Void Minimize Command Window()方法
该方法使 Matlab 的命令窗口最小化。
2.5
Void Maximum Command Window()方法
该方法使 Matlab 的命令窗口最大化[3]。
3
基于 MATLAB 的自动控制系统性能分析
自动控制理论是较成熟的经典的控制理论,其对控制系统常用的分析方法有时域法、
2
基于 Visual Basic 与 Matlab 的自动控制系统的设计
各参数的含义及调用的方法与 GetFullMatrix 方法类似。 示例代码如下: Dim Matlab as object `声明对象 Dim MReal1(5,5) As Double `声明存放实部的 Double 型数组 Dim MImag1(5,5) As Double `声明存放虚部的 Double 型数组 Set Matlab = CreatObject(“Matlab.Application”) `初始化对象 Matlab.Execute(“a=hilb(5)”) `执行 Matlab 命令 Call Matlab. GetFullMatrix(“a”,“base”,Mreal1,MImag) `将结果分别存入实部、虚部数组
2
借助 Active X 部件
Microsoft 公司所有以 COM 为基础的技术统称为 Active X 技术。它是一种用于模块
集成的新协议,是 VB 工具箱的扩充部分。Active X 部件是一些遵循 Active X 规范编写的 可执行代码,比如一个.exe、.dll 或.ocx 文件。它允许应用程序或组件控制另一个应用程序 或组件的运行,它包括自动化服务器和自动化控制器。在程序中加入 Active X 部件后,它 将成为开发和运行环境的一部分,并为应用程序提供新的功能。Active X 部件保留了一些 普通 VB 控制的属性、事件和方法。Active X 部件特有的方法和属性大大地增强了程序设 计者的能力和灵活性,Active X 实际上是在调用一种部件,而无需要求该部件对应的程序 正在运行,这会使得其功能更加强大。在 VB 中创建 MATLAB 的 Active X 对象后,就可 以使用这个对象所包含的各种方法,实现对 MATLAB 的调用[2]。
z z1 , z 2 ,..., z m ; p p1 , p2 ,..., pn ;
k k ;
4
基于 Visual Basic 与 Matlab 的自动控制系统的设计
4.3
状态空间模型

5
x ax bu y cx du
(4.2.2)
在 MATLAB 中,用(a,b,c,d)矩阵组表示[5]。
基于 Visual Basic 与 Matlab 的自动控制系统的设计
1
引言
Visual Basic 是一个可视化的程序设计语言,是一种非常方便的 Windows 应用程序开
发平台。VB 一方面继承了 Basic 语言简单易学的特点,另一方面在其编程环境中采用了面 向对象的可视化设计工具、事件驱动的编程机制、动态数据驱动等先进的软件开发技术, 为用户提供了一种所见即所得的可视化程序设计方法。 VB 最有力的一面就是快速创建用户界面,把复杂而完善的 Windows 操作系统的使用 融于易于学习和使用的高级语言中,因而受到广大工程技术人员的普遍欢迎。但是它的数 值计算能力不是很强,而由美国 MathWorks 公司推向市场的 MATLAB 软件恰好弥补了这 一缺陷。该软件是一种面向科学和工程计算的解释性语言,具有强大的数值分析、矩阵运 算、信号处理和图形显示能力,为用户提供了一个强有力的科学及工程问题分析计算及程 序设计的工具,可根据不同处理对象的需要,通过简单的编程,方便地完成相应的功能。 但 MATLAB 编写可视化界面的能力较弱[1]。 基于 VB 和 MATLAB 的上述特点,本文利用 VB 来设计界面作为主程序,调用由 MATLAB 编写的子程序,从而实现对自动控制系统中系统的稳定性的分析,还可以画出相 应的 Frequency 图、Nichols 图、Nyquist 图、Bode 图,进行自动控制系统的性能分析。 作者在学习、使用 VB 和 MATLAB 的基础之上,熟练掌握了两个软件的界面设计和 程序编程,在接口问题中,大量参阅了相关的书籍,加之自己的亲身实践,终于完成了本 设计。本文的研究重点就是两个软件的接口链接。
5.1
频率特性的表示方法
频率特性 G ( j ) 是复数,它即可用实部、虚部来表示,也可用幅值和相角来表示,即

G ( j ) Re[ G ( j )] j Im[G ( j )]U ( ) jV ( ) G ( j ) |G ( j )|e jH ( j )
(5.1.1)
1
咸阳师范学院 2007 届本科毕业设计
在 VB 中创建 MATLAB Active X 的方法如下: Dim Matlab As Object Set Matlab = CreatObject(“Matlab.Application”) 在创建 Matlab Active X 对象后。 就可以利用该对象所包含的各种方法实现对 MATLAB 的调用。常用的 Matlab.Application 方法有:
中,其中 Name 指定了 Matlab 中的矩阵变量名,Workspace 指定了该矩阵所在的 Matlab 所 在的工作区,pr 是 VB 是程序中的实部,pi 是 VB 是程序中的虚部。
2.3
Void PutFullMatrix 方法
PutFullMatrix([in] BSTR Name, [in] BSTR Workspace, [in,out] SAFEARRAY (double) *pr, [in,out] SAFEARRAY (double) *pi) ; PutFullMatrix 方法是将 VB 程序中的一个一维或二维数组传递到指定的 Matlab 空间,
3
咸阳师范学院 2007 届本科毕业设计
图、Nichols 图等) ,对系统的各种性能进行分析
4
4.1
控制系统模型
传递函数模型
G( s) H ( s) num( s ) den( s )
(4.1.1)
b1 S m b2 S m1 ... bm1 a1 S n a2 S n1 ... an1