昆明学院自动控制原理课程设计报告.docx
《昆明学院自动控制原理课程设计报告.docx》由会员分享,可在线阅读,更多相关《昆明学院自动控制原理课程设计报告.docx(28页珍藏版)》请在冰豆网上搜索。
![昆明学院自动控制原理课程设计报告.docx](https://file1.bdocx.com/fileroot1/2023-8/14/659c8d6d-b227-4e40-97cf-76a07f8952b8/659c8d6d-b227-4e40-97cf-76a07f8952b81.gif)
昆明学院自动控制原理课程设计报告
自动控制原理课程设计报告
课程名称:
自动控制原理
设计题目:
自动控制原理MATLAB仿真
院系:
自动控制与机械工程学院
班级:
2013级电气工程及其自动化3班
姓名:
烤火卡
学号:
指导教师:
李云娟
自动控制原理课程设计报告
一.实验目的和意义:
1.了解matlab软件的基本特点和功能,熟悉其界面,菜单和工具条;掌握线性系统模型的计算机表示方法,变换以及模型间的相互转换。
了解控制系统工具箱的组成,特点及应用;掌握求线性定常连续系统输出响应的方法,运用连续系统时域响应函数(impulse,step,lsim),得到系统的时域响应曲线。
2.掌握使用MATLAB软件作出系统根轨迹;利用根轨迹图对控制系统进行分析;掌握使用MATLAB软件作出开环系统的波特图,奈奎斯图;观察控制系统的开环频率特性,对控制系统的开环频率特性进行分析。
3.掌握MATLAB软件中simulink工具箱的使用;熟悉simulink中的功能模块,学会使用simulink对系统进行建模;掌握simulink的方真方法。
二.实验原理
(1)MATLAB语言的特点及其主要功能:
MATLAB是矩阵实验室(Matrix Laboratory)的简称,是美MathWorks公司出品的商业数学软件,用于算法开发、数据可视化、数据分析以及数值计算的高级技术计算语言和交互式环境,主要包括MATLAB和Simulink两大部分它将数值分析,矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平
MATLAB和Mathematica、Maple并称为三大数学软它在数学类科技应用软件中在数值计算方面首屈一指。
MATLAB可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连 matlab开发工作界面接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图中处理、信号检测、金融建模设计与分析等领域。
(2)控制系统仿真时常用的方法和指令
1、控制系统仿真时常用的方法
a、数学仿真
也称计算机仿真,就是在计算机上实现描写系统物理过程的数学模型,并在这个模型上对系统进行定量的研究和实验。
这种仿真方法常用于系统的方案设计和某些不适合做实物仿真的场合(包括某些故障模式)。
它的特点是重复性好、精度高、灵活性大、使用方便、成本较低、可以是实时的、也可以是非实时的。
数学仿真的逼真度和精度取决于仿真计算机的精度和数学模型的正确性与精确性。
学仿真可采用模拟计算机、数字计算机和数字-模拟混合计算机。
b、半物理仿真
即采用部分物理模型和部分数学模型的仿真。
其中物理模型采用控制系统中的实物,系统本身的动态过程则采用数学模型。
半物理仿真统常由满足实时性要求的仿真计算机、运动模拟器(一般采用三轴机械台)、目标模拟器、控制台和部分实物组成。
c、全物理仿真
即全部采用物理模型的仿真,又称实物模拟。
全物理仿真技术复杂,一般只在必要时才采用。
、控制系统仿真时常用的指令
1)、Bode图
①、绘制Bode图
bode函数绘制控制系统幅频和相频图
[调用格式]bode(sys) bode(sys, w) bode(sys1,sys2..sysn)bode(sys1,sys2..sysn,w)
bode(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’p
lotstylen’,)[mag, phase, w]=bode(sys) w
—频率区间矢量,控制频率起止范围[mag, phase, w]
—输出幅值矢量输出相角输出频率区间绘制系统幅频图[调用格式] bodemag(sys) bodemag(sys, w) bodemag(sys1,sys2..sysn) bodemag(sys1,sys2..sysn,w) bodemag(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)
②、系统的增益裕度和相角裕度
增益裕度定义:
正好使系统频率响应穿过临界点的增益与实际系统增益的值。
相角裕度:
为了使系统的频率响应通过临界点必须引入的纯相位滞后量。
[gm pm wcg wcp ]=margin(mag, phase, w) Gm—系统增益裕度 pm
—系统相角裕度wcg wcp---表示交叉频率
2)、Nichols图
对数幅相特性图(Nichols图)是描述系统频率特性的图示方法。
该图纵坐标表示频率特性的对数幅值,以分贝为单位;横坐标表示频率特性的相位角。
[调用格式] nichols(sys) nichols(sys, w) nichols(sys1,sys2..sysn) nichols(sys1,sys2..sysn,w) nichols(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)[mag, phase, w]=nichols(sys) [mag, phase]=nichols(sys, w)
3)、Nyquist图
系统频率特性的极坐标图——Nyquist图 [调用格式]
nyquist(sys) nyquist(sys, w) nyquist(sys1,sys2..sysn) nyquist(sys1,sys2..sysn,
nyquist(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)[mag, phase, w]=nyquist(sys) [mag, phase]=nyquist(sys, w)
4)、一般频率响应图
[调用格式]h=freqs(num , den, w) [h ,w]=freqs(num, den)
[h ,w]=freqs(num ,den, f) freqs(num ,den) Num—传递函数分子矢量 den—传递函数分母矢量 W—频率区间矢量
5)、频率响应的奇异值图
[调用格式] sigma(sys) sigma(sys, w) sigma(sys ,w, type)
sigma(sys1,sys2..sysn) sigma(sys1,sys2..sysn,w) sigma(sys1,sys2..sysn,w, type
sigma(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,) [sv, w]=sigma(sys) sv=sigma(sys, w) Type—绘制奇异值图的类型 Type=1 控制系统的频率响应H的奇异值图Type=2 控制系统的频率响应I+H的奇异 Type=3
控制系统的频率响应I+H-1的奇异值图Sv—频率的奇异值plotstyle—绘制奇异值曲线的特性
6)、绘制根轨迹
1、求系统的零点、极点、增益
[调用格式] p=pole(sys) 计算控制系统的极点 Z=zero(sys)
计算控制系统的零点 [z, gain]=zero(sys)
计算控制系统的零点、增益。
②、绘制系统极点、零点图
[调用格式] pzmap(sys) pzmap(sys1,sys2,„sysn)
[p z]=pzmap(sys)
③、绘制根轨迹图
[调用格式] rlocus(sys) rlocus(sys ,k) Rlocus(sys1,sys2,„)
[r k]=rlocus(sys) r=rlocus(sys,k) k—表示增益 r—系统的极点
三.实训内容
1.用matlab语言编制程序,实现以下系统:
1)
#程序如下:
num=[5,24,0,18];
den=[1,4,6,2,2];
G=tf(num,den)
Transferfunction:
5s^3+24s^2+18
-----------------------------
s^4+4s^3+6s^2+2s+2
2)
#程序如下#:
num=4*conv([1,2],conv([1,6,6],[1,6,6]));
den=conv([1,0],conv([1,1],conv([1,1],conv([1,1],[1,3,2,5]))));
G=tf(num,den)
Transferfunction:
4s^5+56s^4+288s^3+672s^2+720s+288
-----------------------------------------------------
s^7+6s^6+14s^5+21s^4+24s^3+17s^2+5s
2.两环节G1、G2串联,求等效的整体传递函数G(s)
【实验原理】:
若假定两环节均为单输入单输出的系统SA和SB。
两个环节级联:
sys=series(SA,SB)
#程序如下#:
G1=tf(2,[1,3]);
G2=tf(7,[1,2,1]);
sys=series(G1,G2)
Transferfunction:
14
---------------------
s^3+5s^2+7s+3
3.两环节G1、G2并联,求等效的整体传递函数G(s)
【实验原理】:
若假定两环节均为单输入单输出的系统SA和SB。
两个环节并联:
sys=parallel(SA,SB)
#程序如下#:
G1=tf(2,[1,3]);
G2=tf(7,[1,2,1]);
sys=parallel(G1,G2)
Transferfunction:
2s^2+11s+23
---------------------
s^3+5s^2+7s+3
4.已知系统结构如图,求闭环传递函数。
其中的两环节G1、G2分别为
【实验原理】:
若假定两环节均为单输入单输出的系统SA和SB。
A环节前向,B环节反馈:
S=feedback(SA,SB)
#程序如下#:
G1=tf([3,100],[1,2,81]);
G2=tf(2,[2,5]);
G=feedback(G1,G2)
Transferfunction:
6s^2+215s+500
---------------------------
2s^3+9s^2+178s+605
G=feedback(G1,G2,1)
Transferfunction:
6s^2+215s+500
---------------------------
2s^3+9s^2+166s+205
5.已知某闭环系统的传递函数为
,求其单位阶跃响应曲线,单位脉冲响应曲线。
#实验原理#:
LTI模型的阶跃响应函数step()
格式:
step(sys)
功能:
绘制系统sys(sys由函数tf、zpk或ss产生)的阶跃响应,结果不返回数据,只返回图形。
对多输入多输出模型,将自动求每一输入的阶跃响应。
LTI模型的单位冲激响应函数impulse()
格式:
impulse(sys)
功能:
绘制系统sys(sys由函数tf、zpk或ss产生)的单位冲激响应,结果不返回数据,返回图形。
#程序如下#:
sys=tf([10,25],[0.16,1.96,10,25]);
step(sys);
title('阶越响应');
grid
图5.1单位阶跃响应曲线
sys=tf([10,25],[0.16,1.96,10,25]);
impulse(sys);
title('脉冲响应');
grid
图5.2脉冲响应曲线
6.典型二阶系统的传递函数为,为自然频率,为阻尼比,试绘出当
=0.5,
分别取-2、0、2、4、6、8、10时该系统的单位阶跃响应曲线;分析阻尼比分别为–0.5、–1时系统的稳定性。
【实验原理】:
=0.5时,利用阶跃响应函数step()绘制
分别取0、2、4、6、8、10时的阶跃响应曲线。
解:
(1),
=0.5,
分别取-2、0、2、4、6、8、10时该系统的单位阶跃响应曲线
#程序如下#:
>>G0=tf([0,4],[1,-2,4]);%
=0.5Wn=-2
>>G1=tf([0,4],[1,2,4]);%
=0.5Wn=2
>>G2=tf([0,16],[1,4,16]);%
=0.5Wn=4
>>G3=tf([0,36],[1,6,36]);%
=0.5Wn=6
>>G4=tf([0,64],[1,8,64]);%
=0.5Wn=8
>>G5=tf([0,100],[1,10,100]);%
=0.5Wn=10
>>step(G0,G1,G2,G3,G4,G5);%计算并绘制系统的单位阶跃响应
title('单位阶跃响应')
grid
图6.1单位阶跃响应曲线
(2)
=-0.5,
=-1时的阶跃响应曲线
#程序如下#:
>>G6=tf([0,100],[1,-10,100]);%§=-0.5,Wn=10时的单位阶跃响应
>>G7=tf([0,100],[1,-20,100]);%§=-1,Wn=10时的单位阶跃响应
>>step(G6,G7);
title('§=-0.5,§=-1时的阶跃响应')
分析稳定性:
从§=-0.5,§=-1时的阶跃响应曲线图可以看出,曲线不收敛,而是发散的,说明系统是不稳定的。
7.设有一高阶系统开环传递函数为
,试绘制该系统的零极点图和闭环根轨迹图。
#实验原理#:
1求系统的零点、极点、增益
[调用格式]p=pole(sys)
计算控制系统的极点Z=zero(sys)
计算控制系统的零点[z,gain]=zero(sys)
计算控制系统的零点、增益
2绘制系统极点、零点图
[调用格式]pzmap(sys)pzmap(sys1,sys2,„sysn)[pz]=pzmap(sys)
3绘制根轨迹图
[调用格式]rlocus(sys)rlocus(sys,k)Rlocus(sys1,sys2,„)[rk]=rlocus(sys)r=rlocus(sys,k)k—表示增益r—系统的极点
#程序如下#:
1)系统的零极点
#输入如下指令#:
num=[0.016,0.218,1.436,9.359];
den=[0.06,0.268,0.635,6.271];
[z,p,k]=tf2zp(num,den)
Pzmap(num,den)
运行结果:
z=
-10.4027
-1.6111+7.3235i
-1.6111-7.3235i
p=
-5.7710
0.6522+4.2054i
0.6522-4.2054i
k=0.2667
图7.1系统的零极点图
2)系统的闭环根轨迹
#输入如下指令#:
num=[0.0160.2181.4369.359];
den=[0.060.2680.6356.271];
rlocus(num,den)
图7.2系统的闭环根轨迹图
8.单位反馈系统前向通道的传递函数为:
,试绘制该系统的Bode图和Nyquist曲线,说明软件绘制曲线与手动绘制曲线的异同。
#实验原理#:
1)、Bode图
[调用格式]bode(sys)bode(sys,w)bode(sys1,sys2..sysn)bode(sys1,sys2..sysn,w)bode(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)
[mag,phase,w]=bode(sys)w—频率区间矢量,控制频率起止范围
[mag,phase,w]—输出幅值矢量输出相角输出频率区间
增益裕度定义:
正好使系统频率响应穿过临界点的增益与实际系统增益的比值。
相角裕度:
为了使系统的频率响应通过临界点必须引入的纯相位滞后量。
[调用格式][gmpmwcgwcp]=margin(sys)
[gmpmwcgwcp]=margin(mag,phase,w)Gm—系统增益裕度pm—系统相角裕度wcgwcp---表示交叉频率
2)、Nyquist图
[调用格式]nyquist(sys)nyquist(sys,w)nyquist(sys1,sys2..sysn)nyquist(sys1,sys2..sysn,w)
nyquist(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)
[mag,phase,w]=nyquist(sys)[mag,phase]=nyquist(sys,w)
#程序如下#
num=[2,8,12,8,2];
den=[1,5,10,10,5,1];
Bode(num,den)
grid
图8.1Bode图
num=[2,8,12,8,2];
den=[1,5,10,10,5,1];
nyquist(num,den)
v=[-2,2,-2,2];
axis(v)
grid
title('Nyquist曲线')
图8.2Nyquist曲线
软件绘制曲线与手动绘制曲线的异同:
软件绘制曲线能准确的显示函数的图像,有利于分析计算。
手动绘制曲线是采用对数幅频渐进线的方法得到。
这种方法省去了逐点连线的繁琐,有利于分析系统稳定性等方面的问题。
9.已知某控制系统的开环传递函数
,试绘制系统的开环频率特性曲线,并求出系统的幅值与相位裕量。
【实验原理】:
Nichols图
对数幅相特性图(Nichols图)是描述系统频率特性的图示方法。
该图纵坐标表示频率特性的对数幅值,以分贝为单位;横坐标表示频率特性的相位角。
[调用格式]nichols(sys)nichols(sys,w)nichols(sys1,sys2..sysn)
nichols(sys1,sys2..sysn,w)nichols(sys1,’plotstyle1’,sys2,’plotstyle2’,..sysn,’plotstylen’,)
[mag,phase,w]=nichols(sys)[mag,phase]=nichols(sys,w)
#程序如下#:
>>G=tf(1.5,conv(conv([1,0],[1,1]),[1,2]));
>>bode(G)
grid
[Gm,Pm,Wcg,Wcp]=margin(G)
#输出结果#
Gm=
4.0000
Pm=
41.5340相角裕度
Wcg=
1.4142
Wcp=
0.6118
图9.1Bode图
10.在SIMULINK中建立系统,该系统阶跃输入时的连接示意图如下。
k为学生学号后三位。
绘制其单位阶跃响应曲线,分析其峰值时间tp、延迟时间td、上升时间tr、调节时间ts及超调量。
【实验原理】:
[y,t]=step(G)
该函数还同时返回了自动生成的时间变量t,对返回的这一对变量y和t的值进行计算,可以得到时域性能指标。
①峰值时间(timetopeak)可由以下命令获得:
[Y,k]=max(y);timetopeak=t(k)
应用取最大值函数max()求出y的峰值及相应的时间,并存于变量Y和k中。
然后在变量t中取出峰值时间,并将它赋给变量timetopeak。
②最大(百分比)超调量(percentovershoot)可由以下命令得到:
C=dcgain(G);
[Y,k]=max(y);percentovershoot=100*(Y-C)/Cdcgain()函数用于求取系统的终值,将终值赋给变量C,然后依据超调量的定义,由Y和C计算出百分比超调量。
③上升时间(risetime)可利用MATLAB中控制语句编制M文件来获得。
首先简单介绍一下循环语句while的使用。
C=dcgain(G);n=1;
whiley(n)risetime=t(n)
在阶跃输入条件下,y的值由零逐渐增大,当以上循环满足y=C时,退出循环,此时对应的时刻,即为上升时间。
④调节时间(setllingtime)可由while语句编程得到:
C=dcgain(G);
i=length(t);
while(y(i)>0.98*C)&(y(i)<1.02*C)
i=i-1;
end
setllingtime=t(i)
用向量长度函数length()可求得t序列的长度,将其设定为变量i的上限值。
本人学号后三位为231,所以K=231.
图10.1连接示意图
图10.2
#程序如下#:
num1=[1];
den1=[10];
sys1=tf(num1,den1);
num2=[231];
den2=[19];
sys2=tf(num2,den2);
sys12=sys1*sys2;
G=feedback(sys12,1);
step(G)
grid
图10.2单位阶跃响应曲线
分析峰值时间:
#程序:
num=[231];
den=[19231];
[y,x,t]=step(num,den);
[peak,k]=max(y);
overshoot=(peak-1)*100
16tp,延迟时间td,上升时间tr,调节时间ts及超调量:
tp=t(k)
n=1;
whiley(n)<1
n=n+1;
end
tr=y(n)
m=length(t)
while((y(m)>0.98)&(y(m)<1.02))
m=m-1;
end
ts=t(m)
运行结果
overshoot=
37.6526
tp=
0.2215
tr=
1.0886
m=
104
ts=
0.8743:
*11.给定系统如下图所示,设计一个串联校正装置,使幅值裕度大于h>10分贝,相位裕度
大