资源描述
MATLAB在控制系统中的应用
结课论文
所在学院: 信息工程学院
专业名称: 自动化10-3
学 生 姓 名: 王思嘉
学 号 代 码: 1005130315
指导教师: 崔新忠
MATLAB在控制系统中的应用
1 MATLAB简介
MATLAB是Mathworks公司开发的一种集数值计算、符号计算和图形可视化三大基本功能于一体的功能强大、操作简单的优秀工程计算应用软件。MATLAB不仅可以处理代数问题和数值分析问题,而且还具有强大的图形处理及仿真模拟等功能。从而能够很好的帮助工程师及科学家解决实际的技术问题。
MATLAB的含义是矩阵实验室(Matrix Laboratory),最初主要用于方便矩阵的存取,其基本元素是无需定义维数的矩阵。经过十几年的扩充和完善,现已发展成为包含大量实用工具箱(Toolbox)的综合应用软件,不仅成为线性代数课程的标准工具,而且适合具有不同专业研究方向及工程应用需求的用户使用。
MATLAB最重要的特点是易于扩展。它允许用户自行建立完成指定功能的扩展MATLAB函数(称为M文件),从而构成适合于其它领域的工具箱,大大扩展了MATLAB的应用范围。目前,MATLAB已成为国际控制界最流行的软件,控制界很多学者将自己擅长的CAD方法用MATLAB加以实现,出现了大量的MATLAB配套工具箱,如控制系统工具箱(control systems toolbox),系统识别工具箱(system identification toolbox),鲁棒控制工具箱(robust control toolbox),信号处理工具箱(signal processing toolbox)以及仿真环境SIMULINK等。
2 MATLAB在控制系统中的应用
1.稳定性分析模块:包含系统的稳定性的判断和显示闭环系统所有的特征根,很直观地显示系统的稳定性判断是否正确,快捷地表示已知系统的稳定性。
2.时域分析响应模块:包括了一阶系统、典型二阶系统、任意阶系统三个主要界面,可以通过此界面绘制时域的响应曲线并且计算相关参数。
3.根轨迹分析模块:包含了绘制根轨迹的函数计算,可以通过此界面绘制系统的根轨迹。
MATLAB是国际控制界目前使用最广的工具软件,几乎所有的控制理论与应用分支中都有MATLAB工具箱。本节结合前面所学自控理论的基本内容,采用控制系统工具箱(Control Systems Toolbox)和仿真环境(Simulink),学习MATLAB的应用。
(1) 用MATLAB建立传递函数模型
有理函数模型
线性系统的传递函数模型可一般地表示为:
将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量和,就可以轻易地将传递函数模型输入到MATLAB环境中。命令格式为:
;
;
在MATLAB控制系统工具箱中,定义了tf() 函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。从而使得系统模型的输入和处理更加方便。
该函数的调用格式为:
G=tf(num,den);
我们来看一个简单的传递函数模型:
可以由下面的命令输入到MATLAB工作空间中去。
>> num=[1,5];
den=[1,2,3,4,5];
G=tf(num,den)
运行结果:
Transfer function:
s + 5
-----------------------------
s^4 + 2s^3 + 3s^2 + 4s + 5
这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。
(2) 利用MATLAB进行时域分析
1. 线性系统稳定性分析
线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。系统的零极点模型可以直接被用来判断系统的稳定性。另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。
(1)直接求特征多项式的根
设p为特征多项式的系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内的解v,该函数的调用格式为:
v=roots(p)
已知系统的特征多项式为:
特征方程的解可由下面的MATLAB命令得出。
>> p=[1,0,3,2,1,1];
v=roots(p)
结果显示:
v =
0.3202 + 1.7042i
0.3202 - 1.7042i
-0.7209
0.0402 + 0.6780i
0.0402 - 0.6780i
利用多项式求根函数roots(),可以很方便的求出系统的零点和极点,然后根据零极点分析系统稳定性和其它性能。
(2)由根创建多项式
如果已知多项式的因式分解式或特征根,可由MATLAB函数poly()直接得出特征多项式系数向量,其调用格式为:
p=poly(v)
如上例中:
v=[0.3202+1.7042i;0.3202-1.7042i;
-0.7209;0.0402+0.6780i; 0.0402-0.6780i];
>> p=poly(v)
结果显示
p =
1.0000 -0.0000 3.0000 2.0000 1.0000 1.0000
由此可见,函数roots()与函数poly()是互为逆运算的。
(3)多项式求值
在MATLAB 中通过函数polyval()可以求得多项式在给定点的值,该函数的调用格式为:
polyval(p,v)
对于上例中的p值,求取多项式在x点的值,可输入如下命令:
>> p=[1,0,3,2,1,1];
x=1
polyval(p,x)
结果显示
ans =
8
(4)部分分式展开
考虑下列传递函数:
式中,但是和中某些量可能为零。
MATLAB函数可将展开成部分分式,直接求出展开式中的留数、极点和余项。该函数的调用格式为:
则的部分分式展开由下式给出:
式中,,…, ,为极点,
,,…, 为各极点的留数,为余项。
(5)由传递函数求零点和极点。
在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:
Z=tzero(G)
P=G.P{1}
注意:式中要求的G必须是零极点模型对象,且出现了矩阵的点运算“.”和大括号{}表示的矩阵元素,
已知传递函数为:
输入如下命令:
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
(6)零极点分布图。
在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:
pzmap(num,den)
给定传递函数:
利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图13所示。
>> num=[3,2,5,4,6];
den=[1,3,4,2,7,2];
pzmap(num,den)
title(¹Pole-Zero Map¹) % 图形标题。
MATLAB函数零、极点分布图
已知系统的开环传递函数模型为:
利用下面的MATLAB命令可容易地验证出系统的根轨迹如图所示。
>> G=tf(1,[conv([1,1],[1,2]),0]);
rlocus(G);
grid
title(¹Root_Locus Plot of G(s)=K/[s(s+1)(s+2)]¹)
xlabel(¹Real Axis¹) % 给图形中的横坐标命名。
ylabel(¹Imag Axis¹) % 给图形中的纵坐标命名。
[K,P]=rlocfind(G)
用鼠标点击根轨迹上与虚轴相交的点,在命令窗口中可发现如下结果
select_point=0.0000+1.3921i
K=5.8142
p= -2.29830
-0.0085+1.3961i
-0.0085-1.3961i
所以,要想使此闭环系统稳定,其增益范围应为0<K<5.81。
参数根轨迹反映了闭环根与开环增益K的关系。我们可以编写下面的程序,通过K的变化,观察对应根处阶跃响应的变化。考虑K=0.1,0.2,…,1,2,…,5,这些增益下闭环系统的阶跃响应曲线。可由以下MATLAB命令得到。
>> hold off; % 擦掉图形窗口中原有的曲线。
系统的根轨迹
t=0:0.2:15;
Y=[ ];
for K=[0.1:0.1:1,2:5]
GK=feedback(K*G,1);
y=step(GK,t);
Y=[Y,y];
end
plot(t,Y)
对于for循环语句,循环次数由K给出。系统画出的图形如图所示。可以看出,当K的值增加时,一对主导极点起作用,且响应速度变快。一旦K接近临界K值,振荡加剧,性能变坏。
不同K值下的阶跃响应曲线
参考文献:
1、《MATLAB 程序设计与应用》 李盛德编著 大连海事大学出版社
2、《MATLAB与仿真系统实验指导书》 崔新忠主编 大连海洋大学
3、《自动控制原理》 孟华 机械工业出版社
4、《 MATLAB 6.0 与科学计算》王沫然编著 北京:电子工业出版社 2001
5、《 MATLAB 6 使用教程》郝红伟 编著 北京:中国电力出版社 2001
展开阅读全文