自动控制原理Matlab仿真应用Word文件下载.docx
- 文档编号:18019938
- 上传时间:2022-12-12
- 格式:DOCX
- 页数:20
- 大小:260.72KB
自动控制原理Matlab仿真应用Word文件下载.docx
《自动控制原理Matlab仿真应用Word文件下载.docx》由会员分享,可在线阅读,更多相关《自动控制原理Matlab仿真应用Word文件下载.docx(20页珍藏版)》请在冰豆网上搜索。
图3 MATLAB桌面平台
(3)MATLAB命令窗口
MATLAB可以认为是一种解释性语言。
在MATLAB命令窗口中,标志>
>
为命令提示符,在命令提示符后面键入一个MATLAB命令时,MATLAB会立即对其进行处理,并显示处理结果。
这种方式简单易用,但在编程过程中要修改整个程序比较困难,并且用户编写的程序不容易保存。
如果想把所有的程序输入完再运行调试,可以用鼠标点击快捷
或File|New|M-file菜单,在弹出的编程窗口中逐行输入命令,输入完毕后点击Debug|Run(或F5)运行整个程序。
运行过程中的错误信息和运行结果显示在命令窗口中。
整个程序的源代码可以保存为扩展名为“.m”的M文件。
在介绍MATLAB的强大计算和图象处理功能前,我们可以先运行一个简单的程序。
设系统的闭环传递函数为:
求系统的时域响应图,可输入下面的命令:
num=[1,4];
den=[1,2,8];
step(num,den)
图4 动态响应时域图
程序运行后会在一个新的窗口中显示出系统的时域动态响应曲线,如图4。
用鼠标左键点击动态响应曲线的某一点,系统会提示其响应时间和幅值。
按住左键在曲线上移动鼠标的位置可以很容易的根据幅值观察出上升时间、调节时间、峰值及峰值时间,进而求出超调量。
如果想求根轨迹,可将程序的第三行变为rlocus(num,den),求伯德图可改为bode(num,den)。
所不同的是,在根轨迹和伯德图中,G(s)为开环传递函数。
MATLAB的语法规则类似于C语言,变量名、函数名都与大小写有关,即变量A和a是两个完全不同的变量。
应该注意所有的函数名均由小写字母构成。
MATLAB是一个功能强大的工程应用软件,它提供了相当丰富的帮助信息,同时也提供了多种获得帮助的方法。
如果用户第一次使用MATLAB,则建议首先在>
提示符下键入DEMO命令,它将启动MATLAB的演示程序。
用户可以在此演示程序中领略MATLAB所提供的强大的运算和绘图功能。
2 MATLAB基本操作命令
本节简单介绍与本书内容相关的一些基本知识和操作命令。
(1)简单矩阵的输入
MATLAB是一种专门为矩阵运算设计的语言,所以在MATLAB中处理的所有变量都是矩阵。
这就是说,MATLAB只有一种数据形式,那就是矩阵,或者数的矩形阵列。
标量可看作为1×
1的矩阵,向量可看作为n×
1或1×
n的矩阵。
这就是说,MATLAB语言对矩阵的维数及类型没有限制,即用户无需定义变量的类型和维数,MATLAB会自动获取所需的存储空间。
输入矩阵最便捷的方式为直接输入矩阵的元素,其定义如下:
(1)元素之间用空格或逗号间隔;
(2)用中括号([])把所有元素括起来;
(3)用分号(;
)指定行结束。
例如,在MATLAB的工作空间中,输入:
则输出结果为:
矩阵a被一直保存在工作空间中,以供后面使用,直至修改它。
MATLAB的矩阵输入方式很灵活,大矩阵可以分成n行输入,用回车符代替分号或用续行符号(…)将元素续写到下一行。
例如:
以上三种输入方式结果是相同的。
一般若长语句超出一行,则换行前使用续行符号(…)。
在MATLAB中,矩阵元素不限于常量,可以采用任意形式的表达式。
同时,除了直接输入方式之外,还可以采用其它方式输入矩阵,如:
(1)利用内部语句或函数产生矩阵;
(2)利用M文件产生矩阵;
(3)利用外部数据文件装入到指定矩阵。
(2)MATLAB图形窗口
当调用了一个产生图形的函数时,MATLAB会自动建立一个图形窗口。
这个窗口还可分裂成多个窗口,并可在它们之间选择,这样在一个屏上可显示多个图形。
图形窗口中的图形可通过打印机打印出来。
若想将图形导出并保存,可用鼠标点击菜单File|Export,导出格式可选emp、bmp、jpg等。
命令窗口的内容也可由打印机打印出来:
如果事先选择了一些内容,则可打印出所选择的内容;
如果没有选择内容,则可打印出整个工作空间的内容。
(3)剪切板的使用
利用Windows的剪切板可在MATLAB与其它应用程序之间交换信息。
(1)要将MATLAB的图形移到其它应用程序,首先按Alt-PrintScreen键,将图形复制到剪切板中,然后激活其它应用程序,选择edit(编辑)中的paste(粘贴),就可以在应用程序中得到MATLAB中的图形。
当然还可以借助于copytoBitmap 或copytoMetafile 选项来传递图形信息。
(2)要将其它应用程序中的数据传递到MATLAB,应先将数据放入剪切板,然后在MATLAB中定义一个变量来接收。
如键入:
q=[
然后选择Edit中的paste,最后加上“]”,这样可将应用程序中的数据送入MATLAB的q变量中。
(4)MATLAB编程指南
MATLAB的编程效率比BASIC、C、FORTRAN和PASCAL等语言要高,且易于维护。
在编写小规模的程序时,可直接在命令提示符>
后面逐行输入,逐行执行。
对于较复杂且经常重复使用的程序,可按7.1.3介绍的方法进入程序编辑器编写M文件。
M文件是用MATLAB语言编写的可在MATLAB环境中运行的磁盘文件。
它为脚本文件(ScriptFile)和函数文件(FunctionFile),这两种文件的扩展名都是.m。
(1)脚本文件是将一组相关命令编辑在一个文件中,也称命令文件。
脚本文件的语句可以访问MATLAB工作空间中的所有数据,运行过程中产生的所有变量都是全局变量。
例如下述语句如果以.m为扩展名存盘,就构成了M脚本文件,我们不妨将其文件名取为“Step_Response”。
%用于求取一阶跃响应。
num=[14];
den=[128];
当你键入helpStep_Response时,屏幕上将显示文件开头部分的注释:
用于求取一阶跃响应。
很显然,在每一个M文件的开头,建立详细的注释是非常有用的。
由于MATLAB提供了大量的命令和函数,想记住所有函数及调用方法一般不太可能,通过联机帮助命令help可容易地对想查询的各个函数的有关信息进行查询。
该命令使用格式为:
help 命令或函数名
注意:
若用户把文件存放在自己的工作目录上,在运行之前应该使该目录处在MATLAB的搜索路径上。
当调用时,只需输入文件名,MATLAB就会自动按顺序执行文件中的命令。
(2)函数文件是用于定义专用函数的,文件的第一行是以function作为关键字引导的,后面为注释和函数体语句。
函数就像一个黑箱,把一些数据送进去,经加工处理,再把结果送出来。
在函数体内使用的除返回变量和输入变量这些在第一行functon语句中直接引用的变量外,其它所有变量都是局部变量,执行完后,这些内部变量就被清除了。
函数文件的文件名与函数名相同(文件名后缀为.m),它的执行与命令文件不同,不能键入其文件名来运行函数,M函数必须由其它语句来调用,这类似于C语言的可被其它函数调用的子程序。
M函数文件一旦建立,就可以同MATLAB基本函数库一样加以使用。
例1 求一系列数的平均数,该函数的文件名为“mean.m”
functiony=mean(x)
%这是一个用于求平均数的函数
w=length(x);
%length函数表示取向量x的长度
y=sum(x)/w;
%sun函数表示求各元素的和
该文件第一行为定义行,指明是mean函数文件,y是输出变量,x是输入变量,其后的%开头的文字段是说明部分。
真正执行的函数体部分仅为最后二行。
其中变量w是局部变量,程序执行完后,便不存在了。
在MATLAB命令窗口中键入
r=1:
10;
%表示r变量取1到10共10个数
mean(r)
运行结果显示
ans=
5.5000
该例就是直接使用了所建立的M函数文件,求取数列r的平均数。
3MATLAB在控制系统中的应用
MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都有MATLAB工具箱。
本节结合前面所学自控理论的基本内容,采用控制系统工具箱(ControlSystemsToolbox)和仿真环境(Simulink),学习MATLAB的应用。
(1)用MATLAB建立传递函数模型
1.有理函数模型
线性系统的传递函数模型可一般地表示为:
(1)
将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量
和
,就可以轻易地将传递函数模型输入到MATLAB环境中。
命令格式为:
;
(2)
(3)
在MATLAB控制系统工具箱中,定义了tf()函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。
从而使得系统模型的输入和处理更加方便。
该函数的调用格式为:
G=tf(num,den);
(4)
例2 一个简单的传递函数模型:
可以由下面的命令输入到MATLAB工作空间中去。
>
num=[1,5];
den=[1,2,3,4,5];
G=tf(num,den)
运行结果:
Transferfunction:
s+5
-----------------------------
s^4+2s^3+3s^2+4s+5
这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。
例3 一个稍微复杂一些的传递函数模型:
该传递函数模型可以通过下面的语句输入到MATLAB工作空间。
num=6*[1,5];
den=conv(conv([1,3,1],[1,3,1]),[1,6]);
tf(num,den)
运行结果
6s+30
-----------------------------------------
s^5+12s^4+47s^3+72s^2+37s+6
其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法当然也可以用这个函数来计算。
该函数允许任意地多层嵌套,从而表示复杂的计算。
2.零极点模型
线性系统的传递函数还可以写成极点的形式:
(5)将系统增益、零点和极点以向量的形式输入给三个变量
、Z和P,就可以将系统的零极点模型输入到MATLAB工作空间中,命令格式为:
(6)
(7)
(8)
在MATLAB控制工具箱中,定义了zpk()函数,由它可通过以上三个MATLAB变量构造出零极点对象,用于简单地表述零极点模型。
3.反馈系统结构图模型
设反馈系统结构图如图5所示。
图5 反馈系统结构图
控制系统工具箱中提供了feedback()函数,用来求取反馈连接下总的系统模型,该函数调用格式如下:
G=feedback(G1,G2,sign);
(10)
其中变量sign用来表示正反馈或负反馈结构,若sign=-1表示负反馈系统的模型,若省略sign变量,则仍将表示负反馈结构。
G1和G2分别表示前向模型和反馈模型的LTI(线性时不变)对象。
例5 若反馈系统图5中的两个传递函数分别为:
,
则反馈系统的传递函数可由下列的MATLAB命令得出
G1=tf(1,[1,2,1]);
G2=tf(1,[1,1]);
G=feedback(G1,G2)
运行结果:
s+1
---------------------
s^3+3s^2+3s+2
若采用正反馈连接结构输入命令
G=feedback(G1,G2,1)
则得出如下结果:
-----------------
s^3+3s^2+3s
5.Simulink建模方法
在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。
在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。
Simulink是由MathWorks软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。
它具有两个显著的功能:
Simul(仿真)与Link(连接),亦即可以利用鼠标在模型窗口上“画”出所需的控制系统模型。
然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。
与MATLAB中逐行输入命令相比,这样输入更容易,分析更直观。
下面简单介绍SIMULINK建立系统模型的基本步骤:
(1)SIMULINK的启动:
在MATLAB命令窗口的工具栏中单击按钮
或者在命令提示符>
下键入simulink命令,回车后即可启动Simulink程序。
启动后软件自动打开Simullink模型库窗口,如图7所示。
这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。
若想建立一个控制系统结构框图,则应该选择File|New菜单中的Model选项,或选择工具栏上newModel
按钮,打开一个空白的模型编辑窗口如图8所示。
图7 simulink模型库
图8 模型编辑窗口
(2)画出系统的各个模块:
打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖到模型编辑窗口的合适位置。
(3)给出各个模块参数:
由于选中的各个模块只包含默认的模型参数,如默认的传递函数模型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。
要修改模块的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。
(4)画出连接线:
当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整的系统。
模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。
若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。
(5)指定输入和输出端子:
在Simulink下允许有两类输入输出信号,第一类是仿真信号,可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。
第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。
例9 典型二阶系统的结构图如图9所示。
用SIMULINK对系统进行仿真分析。
图9 典型二阶系统结构图
按前面步骤,启动simulink并打开一个空白的模型编辑窗口。
(1)画出所需模块,并给出正确的参数:
●在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标左键双击该图标,打开参数设定的对话框,将参数steptime(阶跃时刻)设为0。
●在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图标将参数Listofsigns(符号列表)设为|+-(表示输入为正,反馈为负)。
●在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(TransferFcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。
●在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将之拖到编辑窗口中。
(3)将画出的所有模块按图9用鼠标连接起来,构成一个原系统的框图描述如图10所示。
(4)选择仿真算法和仿真控制参数,启动仿真过程。
●在编辑窗口中点击Simulation|Simulationparameters菜单,会出现一个参数对话框,在solver模板中设置响应的仿真范围StartTime(开始时间)和StopTime(终止时间),仿真步长范围Maxinumstepsize(最大步长)和Mininumstepsize(最小步长)。
对于本例,StopTime可设置为2。
最后点击Simulation|Start菜单或点击相应的热键启动仿真。
双击示波器,在弹出的图形上会“实时地”显示出仿真结果。
输出结果如图11所示。
图10二阶系统的simulink实现
在命令窗口中键入whos命令,会发现工作空间中增加了两个变量――tout和yout,这是因为Simulink中的Out1模块自动将结果写到了MATLAB的工作空间中。
利用MATLAB命令plot(tout,yout),可将结果绘制出来,如图12所示。
比较11和12,可以发现这两种输出结果是完全一致的。
图11仿真结果示波器显示
(2)利用MATLAB进行时域分析
1.线性系统稳定性分析
线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。
系统的零极点模型可以直接被用来判断系统的稳定性。
另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。
例11设传递函数为:
该传递函数的部分分式展开由以下命令获得:
num=[2,5,3,6];
den=[1,6,11,6];
[r,p,k]=residue(num,den)
命令窗口中显示如下结果
r=p=k=
-6.0000-3.00002
-4.0000-2.0000
3.0000-1.0000
中留数为列向量r,极点为列向量p,余项为行向量k。
由此可得出部分分式展开式:
例12设传递函数为:
则部分分式展开由以下命令获得:
v=[-1,-1,-1]
num=[0,1,2,3];
den=poly(v);
[r,p,k]=residue(num,den)
结果显示
r=
1.0000
0.0000
2.0000
p=
-1.0000
k=
[]
其中由poly()命令将分母化为标准降幂排列多项式系数向量den,k=[]为空矩阵。
由上可得展开式为:
(5)由传递函数求零点和极点。
在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:
Z=tzero(G)(18)
P=G.P{1}(19)
式19中要求的G必须是零极点模型对象,且出现了矩阵的点运算“.”和大括号{}表示的矩阵元素,详细内容参阅后面章节。
例13已知传递函数为:
输入如下命令:
num=[6.8,61.2,95.2];
den=[1,7.5,22,19.5,0];
G=tf(num,den);
G1=zpk(G);
Z=tzero(G)
P=G1.P{1}
Z=
-7
-2
P=
0
-3.0000+2.0000i
-3.0000-2.0000i
-1.5000
其结果与例8完全一致。
(6)零极点分布图。
在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:
pzmap(num,den)(20)
例14给定传递函数:
利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图13所示。
num=[3,2,5,4,6];
den=[1,3,4,2,7,2];
p
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自动控制 原理 Matlab 仿真 应用
![提示](https://static.bdocx.com/images/bang_tan.gif)