自动控制原理实验指导书解析Word格式.docx
《自动控制原理实验指导书解析Word格式.docx》由会员分享,可在线阅读,更多相关《自动控制原理实验指导书解析Word格式.docx(47页珍藏版)》请在冰豆网上搜索。
![自动控制原理实验指导书解析Word格式.docx](https://file1.bdocx.com/fileroot1/2023-1/26/7aa7da3a-5628-4a26-836c-fbc9c01c6f57/7aa7da3a-5628-4a26-836c-fbc9c01c6f571.gif)
稳定性判据:
传递函数的极点在虚轴左半平面时系统稳定。
p=[1525];
r=roots(p);
r
r=
可以看出,传递函数的极点均在虚轴左半平面,因此该开环系统稳定。
(2)首先求闭环反馈系统的传递函数,源程序如下:
num=10;
[numc,denc]=cloop(num,den)
numc=
0010
denc=
1535
则系统的闭环传递函数为:
。
p=[1535];
r=roots(p)
-2.5000+5.3619i
-2.5000-5.3619i
根据稳定性判据,传递函数的极点均在虚轴左半平面,因此该闭环系统稳定。
numc=[10];
denc=[1535];
t=[0:
0.1:
10];
y1=impulse(numc,denc,t);
y2=step(numc,denc,t);
plot(t,y1,'
b-'
t,y2,'
r:
'
);
grid;
Time[sec]t'
y'
脉冲响应和单位阶跃相应曲线'
脉冲响应曲线'
单位阶跃响应曲线'
绘制出的响应曲线如图所示:
三、某单位负反馈系统如下图所示,(20分)
(1)当比例控制器增益K=1时,在Simulink中搭建系统,当输入为阶跃函数时,用示波器观察系统的输出,绘出输出曲线。
(2)把
(1)中的对象输出和时钟输出输入Workspace中,通过在命令窗口中执行M文件求出系统在阶跃输入下的超调量(
)和峰值时间(
),写出源程序。
(3)调节控制器增益,使超调量
且稳态误差
,给出此时K值的范围。
(1)在Simulink中搭建系统,构建的模型如图所示:
点击示波器,观察输出的波形如图所示:
(2)在simulink中建立如下模型:
编写M文件如下:
%计算闭环系统的传递函数:
num=[10];
den=[1510];
[numc,denc]=cloop(num,den);
[y,t,x]=step(numc,denc)%求系统的阶跃响应
执行结果:
1520
%即闭环系统的传递函数为:
y=
0
0.0023
0.0090
0.0196
0.0334
0.0502
0.0693
0.0904
0.1130
0.1369
0.1616
0.1869
0.2124
0.2379
0.2632
0.2880
0.3121
0.3355
0.3579
0.3794
0.3996
0.4187
0.4366
0.4531
0.4684
0.4824
0.4950
0.5064
0.5165
0.5255
0.5332
0.5399
0.5454
0.5500
0.5536
0.5564
0.5584
0.5596
0.5601
0.5600
0.5594
0.5583
0.5568
0.5549
0.5527
0.5502
0.5475
0.5447
0.5418
0.5388
0.5357
0.5326
0.5296
0.5266
0.5236
0.5208
0.5180
0.5154
0.5129
0.5106
0.5084
0.5063
0.5044
0.5027
0.5011
0.4997
0.4984
0.4973
0.4963
0.4955
0.4948
0.4942
0.4937
0.4933
0.4931
0.4929
0.4928
0.4936
0.4939
0.4945
0.4952
0.4956
0.4959
0.4967
0.4970
0.4974
0.4977
0.4980
0.4983
0.4986
0.4989
0.4992
0.4994
0.4996
0.4998
0.5000
0.5001
0.5003
0.5004
0.5005
0.5006
0.5007
0.5008
由y的值可以看出,系统阶跃响应的稳态值约为0.5008。
计算系统的超调量:
y_stable=0.5008;
%阶跃响应的稳态值
max_response=max(y);
%闭环系统阶跃响应的最大值
sigma=(max_response-y_stable)/y_stable%阶跃响应的超调量
sigma=
0.1184
即系统阶跃响应的超调量
为11.84。
计算系统的峰值时间:
[max_response,index]=may(y);
%查找系统阶跃响应的最大值
tp=x(index)%计算此时对应的时间,就是阶跃响应的峰值
运行结果:
tp=
0.8393
(3)常按开环传递函数中所含的积分环节个数来对系统进行分类。
该系统为0型系统,则系统静态位置误差系数Kp为Kp=K。
ess=
若使稳态误差ess<
0.2,则K>
4。
num1=[10];
den1=[1,5,10];
G1=tf(num1,den1);
%此时输入不同情况下K的值
G2=K*G1;
G=feedback(G2,1)%系统为反馈连接,求其传递函数
[y,t]=step(G);
%单位阶跃响应的响应值y及相应时间t
[Y,k]=max(y)%求y的峰值及相应的时间
C=dcgain(G);
%求系统终值
sigma=(Y-C)/C
通过改变K的值,观察超调量的变化。
K值增大,则超调量增大。
逐渐增大K的值,当K=4.39时,sigma=0.3199,即
=31.99。
当K=4.4时,sigma=0.3202。
则K<
=4.39。
综上所述,增益K的值的范围为4<
K<
4.39。
实验二典型环节的MATLAB仿真
一、实验目的
1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。
2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。
3.定性了解各参数变化对典型环节动态特性的影响。
二、SIMULINK的使用
MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。
利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。
1.运行MATLAB软件,在命令窗口栏“>
”提示符下键入simulink命令,按Enter键或在工具栏单击
按钮,即可进入如图1-1所示的SIMULINK仿真环境下。
2.选择File菜单下New下的Model命令,新建一个simulink仿真环境常规模板。
3.在simulink仿真环境下,创建所需要的系统。
以图1-2所示的系统为例,说明基本设计步骤如下:
1)进入线性系统模块库,构建传递函数。
点击simulink下的“Continuous”,再将右边窗口中“TransferFen”的图标用左键拖至新建的“untitled”窗口。
2)改变模块参数。
在simulink仿真环境“untitled”窗口中双击该图标,即可改变传递函数。
其中方括号内的数字分别为传递函数的分子、分母各次幂由高到低的系数,数字之间用空格隔开;
设置完成后,选择OK,即完成该模块的设置。
3)建立其它传递函数模块。
按照上述方法,在不同的simulink的模块库中,建立系统所需的传递函数模块。
例:
比例环节用“Math”右边窗口“Gain”的图标。
4)选取阶跃信号输入函数。
用鼠标点击simulink下的“Source”,将右边窗口中“Step”图标用左键拖至新建的“untitled”窗口,形成一个阶跃函数输入模块。
5)选择输出方式。
用鼠标点击simulink下的“Sinks”,就进入输出方式模块库,通常选用“Scope”的示波器图标,将其用左键拖至新建的“untitled”窗口。
6)选择反馈形式。
为了形成闭环反馈系统,需选择“Math”模块库右边窗口“Sum”图标,并用鼠标双击,将其设置为需要的反馈形式(改变正负号)。
7)连接各元件,用鼠标划线,构成闭环传递函数。
8)运行并观察响应曲线。
用鼠标单击工具栏中的“
”按钮,便能自动运行仿真环境下的系统框图模型。
运行完之后用鼠标双击“Scope”元件,即可看到响应曲线。
三、实验原理
1.比例环节的传递函数为
其对应的模拟电路及SIMULINK图形如图1-3所示。
2.惯性环节的传递函数为
其对应的模拟电路及SIMULINK图形如图1-4所示。
3.积分环节(I)的传递函数为
其对应的模拟电路及SIMULINK图形如图1-5所示。
4.微分环节(D)的传递函数为
其对应的模拟电路及SIMULINK图形如图1-6所示。
5.比例+微分环节(PD)的传递函数为
其对应的模拟电路及SIMULINK图形如图1-7所示。
6.比例+积分环节(PI)的传递函数为
其对应的模拟电路及SIMULINK图形如图1-8所示。
四、实验内容
按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。
①比例环节
和
;
②惯性环节
③积分环节
④微分环节
⑤比例+微分环节(PD)
⑥比例+积分环节(PI)
五、实验报告
1.画出各典型环节的SIMULINK仿真模型。
2.记录各环节的单位阶跃响应波形,并分析参数对响应曲线的影响。
3.写出实验的心得与体会。
六、预习要求
1.熟悉各种控制器的原理和结构,画好将创建的SIMULINK图形。
2.预习MATLAB中SIMULINK的基本使用方法。
实验三线性系统时域响应分析
1.熟练掌握step()函数和impulse()函数的使用方法,研究线性系统在单位阶跃、单位脉冲及单位斜坡函数作用下的响应。
2.通过响应曲线观测特征参量
对二阶系统性能的影响。
3.熟练掌握系统的稳定性的判断方法。
二、基础知识及MATLAB函数
(一)基础知识
时域分析法直接在时间域中对系统进行分析,可以提供系统时间响应的全部信息,具有直观、准确的特点。
为了研究控制系统的时域特性,经常采用瞬态响应(如阶跃响应、脉冲响应和斜坡响应)。
本次实验从分析系统的性能指标出发,给出了在MATLAB环境下获取系统时域响应和分析系统的动态性能和稳态性能的方法。
用MATLAB求系统的瞬态响应时,将传递函数的分子、分母多项式的系数分别以s的降幂排列写为两个数组num、den。
由于控制系统分子的阶次m一般小于其分母的阶次n,所以num中的数组元素与分子多项式系数之间自右向左逐次对齐,不足部分用零补齐,缺项系数也用零补上。
1.用MATLAB求控制系统的瞬态响应
1)阶跃响应
求系统阶跃响应的指令有:
step(num,den)时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出
step(num,den,t)时间向量t的范围可以由人工给定(例如t=0:
10)
[y,x]=step(num,den)返回变量y为输出向量,x为状态向量
在MATLAB程序中,先定义num,den数组,并调用上述指令,即可生成单位阶跃输入信号下的阶跃响应曲线图。
考虑下列系统:
该系统可以表示为两个数组,每一个数组由相应的多项式系数组成,并且以s的降幂排列。
则matlab的调用语句:
num=[0025];
%定义分子多项式
den=[1425];
%定义分母多项式
step(num,den)%调用阶跃响应函数求取单位阶跃响应曲线
grid%画网格标度线
xlabel(‘t/s’),ylabel(‘c(t)’)%给坐标轴加上说明
title(‘Unit-stepRespinseofG(s)=25/(s^2+4s+25)’)%给图形加上标题名
则该单位阶跃响应曲线如图2-1所示:
为了在图形屏幕上书写文本,可以用text命令在图上的任何位置加标注。
例如:
text(3.4,-0.06,’Y1’)和text(3.4,1.4,’Y2’)
第一个语句告诉计算机,在坐标点x=3.4,y=-0.06上书写出’Y1’。
类似地,第二个语句告诉计算机,在坐标点x=3.4,y=1.4上书写出’Y2’。
若要绘制系统t在指定时间(0-10s)内的响应曲线,则用以下语句:
num=[0025];
t=0:
10;
step(num,den,t)
即可得到系统的单位阶跃响应曲线在0-10s间的部分,如图2-2所示。
2)脉冲响应
①求系统脉冲响应的指令有:
impulse(num,den)时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出
impulse(num,den,t)时间向量t的范围可以由人工给定(例如t=0:
[y,x]=impulse(num,den)返回变量y为输出向量,x为状态向量
[y,x,t]=impulse(num,den,t)向量t表示脉冲响应进行计算的时间
试求下列系统的单位脉冲响应:
在matlab中可表示为
num=[001];
den=[10.21];
impulse(num,den)
grid
title(‘Unit-impulseResponseofG(s)=1/(s^2+0.2s+1)’)
由此得到的单位脉冲响应曲线如图2-3所示:
②求脉冲响应的另一种方法
应当指出,当初始条件为零时,G(s)的单位脉冲响应与sG(s)的单位阶跃响应相同。
考虑在上例题中求系统的单位脉冲响应,因为对于单位脉冲输入量,R(s)=1所以
因此,可以将G(s)的单位脉冲响应变换成sG(s)的单位阶跃响应。
向MATLAB输入下列num和den,给出阶跃响应命令,可以得到系统的单位脉冲响应曲线如图2-4所示。
num=[010];
den=[10.21];
step(num,den)
grid
title(‘Unit-stepResponseof
sG(s)=s/(s^2+0.2s+1)’)
3)斜坡响应
MATLAB没有直接调用求系统斜坡响应的功能指令。
在求取斜坡响应时,通常利用阶跃响应的指令。
基于单位阶跃信号的拉氏变换为1/s,而单位斜坡信号的拉氏变换为1/s2。
因此,当求系统G(s)的单位斜坡响应时,可以先用s除G(s),再利用阶跃响应命令,就能求出系统的斜坡响应。
例如,试求下列闭环系统的单位斜坡响应。
对于单位斜坡输入量,R(s)=1/s2,因此
在MATLAB中输入以下命令,得到如图2-5所示的响应曲线:
num=[0001];
den=[1110];
step(num,den)
title(‘Unit-RampResponseCuveforSystemG(s)=1/(s^2+s+1)’)
2.特征参量
对二阶系统性能的影响
标准二阶系统的闭环传递函数为:
二阶系统的单位阶跃响应在不同的特征参量下有不同的响应曲线。
1)
设定无阻尼自然振荡频率
,考虑5种不同的
值:
=0,0.25,0.5,1.0和2.0,利用MATLAB对每一种
求取单位阶跃响应曲线,分析参数
对系统的影响。
为便于观测和比较,在一幅图上绘出5条响应曲线(采用“hold”命令实现)。
num=[001];
den1=[101];
den2=[10.51];
den3=[111];
den4=[121];
den5=[141];
step(num,den1,t)
grid
text(4,1.7,’Zeta=0’);
hold
step(num,den2,t)
text(3.3,1.5,’0.25’)
step(num,den3,t)
text(3.5,1.2,’0.5’)
step(num,den4,t)
text(3.3,0.9,’1.0’)
step(num,den5,t)
text(3.3,0.6,’2.0’)
title(‘Step-ResponseCurvesforG(s)=1/[s^2+2(zeta)s+1]’)
由此得到的响应曲线如图2-6所示:
2)
同理,设定阻尼比
时,当
分别取1,2,3时,利用MATLAB求取单位阶跃响应曲线,分析参数
num1=[001];
den1=[10.51];
step(num1,den1,t);
holdon
text(3.1,1.4,’wn=1’)
num2=[004];
den2=[114];
step(num2,den2,t);
holdon
text(1.7,1.4,’wn=2’)
num3=[009];
den3=[11.59];
step(num3,den3,t);
text(0.5,1.4,’wn=3’)
由此得到的响应曲线如图2-7所示:
3.系统稳定性判断
1)直接求根判稳roots()
控制系统稳定的充要条件是其特征方程的根均具有负实部。
因此,为了判别系统的稳定性,就要求出系统特征方程的根,并检验它们是否都具有负实部。
MATLAB中对多项式求根的函数为roots()函数。
若求以下多项式的根
,则所用的MATLAB指令为:
>
roots([1,10,35,50,24])
ans=
-4.0000
-3.0000
-2.0000
-1.0000
特征方程的根都具有负实部,因而系统为稳定的。
2)劳斯稳定判据routh()
劳斯判据的调用格式为:
[r,info]=routh(den)
该函数的功能是构造系统的劳斯表。
其中,den为系统的分母多项式系数向量,r为返回的routh表矩阵,info为返回的routh表的附加信息。
以上述多项式为例,由routh判据判定系统的稳定性。
den=[1,10,35,50,24];
[r,info]=routh(den)
r=
13524
10500
30240
4200
2400
info=
[]
由系统返回的routh表可以看出,其第一列没有符号的变化,系统是稳定的。
3)赫尔维茨判据hurwitz()
赫尔维茨的调用格式为:
H=hurwitz(den)。
该函数的功能是构造hurwitz矩阵。
其中,den为系统的分母多项式系数向量。
以上述多项式为例,由hurwitz判据判定系统的稳定性。
H=hurwitz(den)
H=
105000
135240
010500
013524
由系统返回的hurwitz矩阵可以看出,系统是稳定的。
与前面的分析结果完全一致。
注意:
routh()和hurwitz()不是MATLAB中自带的功能函数,须加载ctrllab3.1文件夹(自编)才能运行。
三、实验内容
1.观察函数step()和impulse()的调用格式,假设系统的传递函数模型为
可以用几种方法绘制出系统的阶跃响应曲线?
试分别绘制。
2.对典型二阶系统
1)分别绘出
,
分别取0,0.25,0.5,1.0和2.0时的单位阶跃响应曲线,分析参数
对系统的影响,并计算
=0.25时的时域性能指标
2)绘制出当
=0.25,
分别取1,2,4,6时单位阶跃响应曲线,分析参数
3.系统的特征方程式为
,试用三种判稳方式判别该系统的稳定性。
4.单位负反馈系统的开环模型为
试分别用劳斯稳定判据和赫尔维茨稳定判据判断系统的稳定性,并求出使得闭环系统稳定的K值范围。
四、实验报告
1.根据内容要求,写出调试好的MATLAB语言程序,及对应的MATLAB运算结果。
2.记录各种输出波形,根据实验结果分析参数变化对系统的影响。
3.总结判断闭环系统稳定的方法,说明增益K对系统稳定性的影响。
4.写出实验的心得与体会。
五、预习要求
1.预习实验中基础知识,运行编制好的MATLAB语句,熟悉MATLAB指令及step()和impulse()函数。
2.结合实验内容,提前编制