《自动控制原理》实验教案.docx
《《自动控制原理》实验教案.docx》由会员分享,可在线阅读,更多相关《《自动控制原理》实验教案.docx(20页珍藏版)》请在冰点文库上搜索。
《自动控制原理》实验教案
《自动控制原理》
武汉工程大学电气信息学院
2012年11月25日
《自动控制原理》实验说明
一、实验条件要求
硬件:
个人计算机;
软件:
MATLAB仿真软件(版本6.5或以上)。
带上课用教材和纸笔
二、实验内容
实验1认识MATLAB
实验2基于MATLAB的控制系统建模
实验3基于MATLAB的控制系统时域及稳定性分析
实验4基于MATLAB的控制系统频域及根轨迹分析
三、实验报告要求说明
认真阅读教材,深刻理解和掌握自动控制原理的基本概念和原理,掌握利用MATLAB对控制系统进行仿真分析和设计。
针对每个命令,查看帮助文件,加强练习,认真完成实验报告。
实验1认识MATLAB
一、实验目的
1.了解MATLAB的发展过程及MATLAB在自动控制中的用途。
2.掌握MATLAB的基本指令。
二、实验要求
实验前复习教材中的相关内容,做好实验预习报告。
三、实验内容及步骤
1.MATLAB的基本操作
(1)MATLAB命令窗口
计算机安装好MATLAB之后,双击MATLAB图标,即进入命令窗口,此时意味着系统处于准备接受命令的状态,可以在命令窗口中直接输入命令语句。
MATLAB语句形式为:
》变量=表达式
但键入回车时,该语句被执行。
该语句执行之后,窗口自动显示出执行语句的结果。
如果不希望结果显示在命令窗口,只需要在该语句之后加一个分号“;”即可。
此时尽管没有显示结果,但它依然被赋值并在MATLAB的工作空间中分配了内存。
注意:
a.用方向键和控制键可以编辑修改已输入的命令。
b.用命令窗口的分页输出“moreoff”表示不允许分页;“moreon”表示允许分页;“more(n)”指定每页输出的页数。
c.多行命令为“…”。
(2)变量
变量的名字必须以字母开头,之后可以是任意字母、数字或下划线;变量名称区分字母的大小写;变量中不能包含标点符号。
MATLAB规定了一些特殊的变量,如果没有特别定义,将其表示为默认值。
(3)数值显示格式
任何MATLAB语句执行的结果都可以显示在屏幕上,同时赋值给指定的变量;没有指定变量时,赋值给一个特殊的变量“ans”。
数据显示格式由“format”命令控制。
(4)简单的数学运算
常用的数学运算符有“+”,“-”,“*”,“\”(左除),“/”(右除),“^”(幂)。
在运算式中,MATLAB通常不需要考虑空格,多条指令可以放在一行中,它们之间需要用标点符号隔开,用逗号告诉MATLAB显示结果,而分号表示禁止结果显示。
(5)工作空间
MATLAB的工作空间包含了一组可以在命令窗口中调整的参数。
Who:
显示当前工作空间中所有变量的一个简单列表。
Whos:
列出变量的大小、数据格式等详细信息。
Clear:
清除工作空间所有的变量。
Clear变量名:
清除指定的变量。
Quilt或exit:
退出工作空间。
(6)帮助
使用帮助可以用菜单命令“help”,也可以在命令窗口中使用命令“help”在命令窗口显示特定帮助的内容。
2.MATLAB的绘图
(1)基本的绘图命令
Plot(x1,y1,’option’,x2,y2,’option’,…)
此绘图函数以逐点连折线的方式绘制了一个二维图,同时类似的绘制了第二个二维图等。
这是plot命令的完整格式,在实际应用中可以根据实际需要进行简化。
(2)选择图形命令
Figure
(1),figure
(2),……,figure(n):
打开不同的图形窗口,以绘制不同的图形。
(3)栅格控制命令
Gridon:
在所画的图形坐标中加入栅格。
Gridoff:
除去图形坐标中的栅格。
(4)图形保持命令
Holdon:
把当前图形保持在屏幕上不变,同时允许在这个坐标上绘制另外的图形。
Holdoff:
使新的图形覆盖旧的图形。
(5)设定轴的范围命令
Axis([xminxmaxyminymin]):
设定x,y轴的范围。
Axis(‘equal’):
将x坐标轴和y坐标轴的单位刻度大小调整为一致。
(6)文字表示命令
Text(x,y,’字符串’):
在图形的制定(x,y)处,标示单引号中的字符串。
Gtext(‘字符串’):
利用鼠标在图形的某一位置表示字符串。
title(‘字符串’):
在所画图形中的最上端显示说明的标题。
xlabel(‘字符串’),ylabel(‘字符串’):
设置x,y坐标轴的名称。
(7)分割图形显示窗口
Subplot(m,n,k):
m为上下分割的个数,n为左右分割的个数,k为子图的标号。
3.绘图举例
具体程序如下:
%用不同的线型在同一坐标系内绘图
clear;
t=0:
pi/100:
2*pi;
y1=sin(t);
y2=sin(t–0.35);
y3=sin(t–0.7);
plot(t,y1,’:
’,t,y2,‘--’,t,y3,‘-’);
holdon;
y4=sin(t–1.05);
plot(t,y4,‘-.’);
axis([-17-1.21.2]);
四、实验报告要求
实验2基于MATLAB的系统建模
一、实验目的
1.熟悉如何建立简单的控制系统的数学模型。
2.掌握连续系统的传递函数的各种表示方法。
3.掌握运用各种不同的典型环节组成。
二、实验要求
1.根据MATLAB所提供的描述传递函数的相关指令,自己可构建各种传递函数的数学模型,并学会多种传递函数的转换指令。
2.根据实验目的,推导出各环节的传递函数。
三、实验内容及步骤
在线性系统理论中,一般常用的数学模型形式有:
传递函数模型(系统的外部模型)、状态方程模型(系统的内部模型)、零极点增益模型和部分分式模型等。
这些模型之间可以相互转化。
1.连续系统的传递函数模型
该系统在MATLAB中可以方便地由分子和分母系数构成的两个向量唯一地确定出来,这两个向量分别由“num”和“den”表示,如:
num=[b1,b2,……,bm];
den=[a1,a2,……,am];
2.零极点增益模型
零极点增益模型实际上是传递函数模型的另一种表示方法。
其传递函数为:
在MATLAB中,零极点增益模型用[z,p,k]矢量表示,即
z=[z1,z2,……zm];
p=[p1,p2,……,pn];
k=[k];
函数tf2zp()可以用来求传递函数的零极点和增益。
3.模型的转换及连接
例:
已知一个系统的传递函数模型为:
num=[00-2;0-1-5;120];den=[16116];
[A,B,C,D]=tf2ss(num,den)
A=-6-11-6B=1C=00-2D=0
10000-1-50
01001200
(1)并联:
parallel
格式:
[a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2)%并联连接两个状态空间系统。
[a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2,inp1,inp2,out1,out2)%inp1和inp2分别指定两系统中要连接在一起的输入端编号,从u1,u2,…,un依次编号为1,2,…,n;out1和out2分别指定要作相加的输出端编号,编号方式与输入类似。
inp1和inp2既可以是标量也可以是向量。
out1和out2用法与之相同。
如inp1=1,inp2=3表示系统1的第一个输入端与系统2的第三个输入端相连接。
若inp1=[13],inp2=[21]则表示系统1的第一个输入与系统2的第二个输入连接,以及系统1的第三个输入与系统2的第一个输入连接。
[num,den]=parallel(num1,den1,num2,den2)%将并联连接的传递函数进行相加。
(2)串联:
series
格式:
[a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2)%串联连接两个状态空间系统。
[a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2,out1,in2)%out1和in2分别指定系统1的部分输出和系统2的部分输入进行连接。
[num,den]=series(num1,den1,num2,den2)%将串联连接的传递函数进行相乘。
(3)反馈:
feedback
格式:
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2)%将两个系统按反馈方式连接,一般而言系统1为对象,系统2为反馈控制器。
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,sign)%系统1的所有输出连接到系统2的输入,系统2的所有输出连接到系统1的输入,sign用来指示系统2输出到系统1输入的连接符号,sign缺省时,默认为负,即sign=-1。
总系统的输入/输出数等同于系统1。
[a,b,c,d]=feedback(a1,b1,c1,d1,a2,b2,c2,d2,inp1,out1)%部分反馈连接,将系统1的指定输出out1连接到系统2的输入,系统2的输出连接到系统1的指定输入inp1,以此构成闭环系统。
[num,den]=feedback(num1,den1,num2,den2,sign)%可以得到类似的连接,只是子系统和闭环系统均以传递函数的形式表示。
sign的含义与前述相同。
(4)闭环:
cloop(单位反馈)
格式:
[ac,bc,cc,dc]=cloop(a,b,c,d,sign)%通过将所有的输出反馈到输入,从而产生闭环系统的状态空间模型。
当sign=1时采用正反馈;当sign=-1时采用负反馈;sign缺省时,默认为负反馈。
[ac,bc,cc,dc]=cloop(a,b,c,d,outputs,inputs)%表示将指定的输出outputs反馈到指定的输入inputs,以此构成闭环系统的状态空间模型。
一般为正反馈,形成负反馈时应在inputs中采用负值。
[numc,denc]=cloop(num,den,sign)%表示由传递函数表示的开环系统构成闭环系统,sign意义与上述相同。
四、思考题
试将该传递函数转化为零极点形式。
五、实验报告要求
实验3基于MATLAB的时域及稳定性分析
一、实验目的
1.熟悉各种典型控制系统的阶跃响应曲线。
2.掌握如何用MATLAB对典型控制系统进行仿真和分析。
3.熟悉用MATLAB/simulink对典型控制系统模拟电路进行仿真。
二、实验要求
1.观测不同参数下二阶系统的阶跃响应。
2.学会利用MATLAB对典型控制系统的仿真。
三、实验内容及步骤
1.典型二阶系统的时域分析
多项式建模方法创建单个方框模块,用MATLAB控制系统工具箱中的连接函数进行控制系统的建模,用阶跃响应、冲激响应和任意函数对其进行仿真。
例:
典型二阶系统如下
分析:
(1)单位冲激响应
t=[0:
0.1:
40]
num=[1]
den=[1,0.3,1]
impulse(num,den,t)
gridon
其响应曲线如下图所示:
图1单位冲激响应曲线图
(2)单位阶跃响应
t=[0:
0.1:
40]
num=[1]
den=[1,0.3,1]
u=sin(t)
y=tf(num,den)
step(num,den,t)
gridon
图2单位阶跃响应曲线
(3)任意函数响应
t=[0:
0.1:
40]
num=[1]
den=[1,0.3,1]
u=sin(t)
y=tf(num,den)
lsim(y,u,t)
gridon
图3任意函数响应曲线
2.控制系统的稳定性分析
在控制系统的稳定性分析中,用劳斯判据和赫尔维茨判据分析系统的稳定性比较简单,但计算机编程较为复杂。
MATLAB提供了直接求取系统所有零极点的函数,因此可以直接根据系统的零极点分布情况来分析系统的稳定性。
指令函数如下:
i=find(real()):
用来求取满足条件的向量的下标量,以列向量表示。
pzmap(p,z):
根据系统已知的零极点p和z绘制系统的零极点图。
例:
控制系统传递函数如下示
分析:
num=[1,-1,2,1];
den=[1,2,3,1,4];
sys=tf(num,den);
pzmap(sys);
图4系统的零极点图
四、思考题
请分析该传递函数的稳定性。
五、实验报告要求
实验4基于MATLAB的频域及根轨迹分析
一、实验目的
1.掌握控制系统的根轨迹和频率特性两大分析和设计方法。
2.熟悉用MATLAB对根轨迹和频率特性进行仿真和分析。
二、实验要求
1.观察给定传递函数的根轨迹图和频率特性曲线。
2.分析同一传递函数形式,当K值不同时,系统闭环极点和单位阶跃响应的变化情况;K值的大小对系统的稳定性和稳态误差的影响。
3.分析增加系统开环零点或极点对系统的根轨迹和性能的影响。
三、实验内容及步骤
1.使用MATLAB控制系统工具箱“rlocus”命令来计算及绘制根轨迹。
会出根轨迹后,可以交互地使用“rlocfind”命令来确定点击鼠标所选择的根轨迹上任意点所对应的K值,K值所对应的所有闭环极点值也可以使用形如“[K,PCL]=rlocfind(G1)”命令来显示。
2.波特图:
bode(G1,omga)
3.奈奎斯特图:
nuquist(G,omega)
例:
按照该实验的要求,绘制出bode和nyquist图,控制系统的传递函数如下示:
G11=zpk([-10],[-5;-1-I;-1+i],2)
G12=G11*15
t=0:
0.1:
10
y11=step(G11,t)
y12=step(G12,t)
subplot(2,2,1)
plot(t,y11,‘k’,t,y12)
title(‘step’)
xlabel(‘time(sec)’)
ylabel(‘voltage(V)’)
subplot(2,2,2)
rlocus(G11)
subplot(2,2,3)
bode(G11)
grid
subplot(2,2,4)
nyquist(G11)
grid
图5系统频域及根轨迹图
四、思考题
请绘制下述传递函数的bode图和nyquist图。
五、实验报告要求
printsyszp2tf,tf2zp
feedbackseriesparallel
helpcontrol非常重要
传递函数数学模型
零极点数学模型
实验报告
1.试利用程序显示如下传递函数(编程)。
>>z=[10]
z=10
>>p=[-5-169]
p=
-5-169
>>sys=zpk(z,p,200)
sys=
200(s-10)
------------------
(s+5)(s+16)(s-9)
2.试说明你如何利用matlab来进行控制系统分析和设计。
解:
在分析控制系统的性能指标时,经常用到的方法有时域分析法、根轨迹法以及频域分析法。
时域法通过直接求解控制系统的响应曲线来分析系统性能;而根轨迹法则是分析研究某些参数变化对闭环特征根的影响;频域法则是根据系统的开环频率特性判断闭环系统的影响,同时分析参数对暂态的影响。
在上述几种方法中,图解法有很重要的作用。
通过matlab,我们可以轻松地描绘出系统的响应曲线,根轨迹以及幅频特性曲线来分析系统性能。
3.试求出G(s)的阶跃响应,单位脉冲响应,Bode图。
(1)单位阶跃响应:
t=[0:
0.1:
40]
num=[1]
den=[111]
u=sin(t)
y=tf(num,den)
step(num,den,t)
gridon
(2)单位脉冲响应:
>>t=[0:
0.1:
40]
>>num=[1]
>>den=[111]
>>impulse(num,den,t)
>>gridon
(3)Bode图:
num=[1]
den=[111]
y=tf(num,den)
bode(y)
4.试利用零极点图判断G(s)系统的稳定性。
z=[10]
p=[-5-169]
y=zpk(z,p,200)
pzmap(y)
如图s平面的右半边有零极点,所以系统不稳定