自控实验指导书MATLAB.docx
- 文档编号:9807363
- 上传时间:2023-02-06
- 格式:DOCX
- 页数:26
- 大小:457.97KB
自控实验指导书MATLAB.docx
《自控实验指导书MATLAB.docx》由会员分享,可在线阅读,更多相关《自控实验指导书MATLAB.docx(26页珍藏版)》请在冰豆网上搜索。
自控实验指导书MATLAB
自动控制原理
MATLAB仿真
《实验指导书》
(电子1301、1302做实验一、二、五)
2015年09月
实验一控制系统数学模型
一、实验目的
1、掌握控制系统数学模型——传递函数的求取方法;
2、利用MATLAB命令求取控制系统传递函数。
二、基础知识及MATLAB函数
在MATLAB命令窗口上,以命令的方式建立系统的传递函数。
在MATLAB下,系统的数学模型有3种描述方式,此实验用多项式模型。
(1)多项式模型:
线性定常系统的数学模型传递函数G(s)一般可以表示成:
其中分子分母多项式中的an与bm均为常系数。
MATLAB语言描述:
构造分子多项式:
num=[bm,bm-1,…,b1,b0];或num=[bmbm-1…b1b0]
构造分母多项式:
den=[an,an-1,…,a1,a0];或den=[anan-1…a1a0]
构造并显示传递函数:
printsys(num,den);
其中num与den是习惯用法,也可用其它变量名代替,但在显示时会出现num/den,这是通用输出显示格式,与输入变量名称无关。
例1-1:
>>num=[1124448];
>>den=[11686176105];
>>printsys(num,den)
显示:
num/den=
s^3+12s^2+44s+48
-----------------------------------
s^4+16s^3+86s^2+176s+105
例1-2:
系统开环传递函数为
写出多项式模型。
>>n=conv([5],[11]);
>>d=conv([100],conv([12],[1610]));
>>printsys(n,d)
显示:
num/den=
5s+5
-----------------------------
s^5+8s^4+22s^3+20s^2
(2)模型的连接
函数[num]=cloop()用于计算单位反馈时闭环传递函数多项式模型的参数向量,右变量为开环参数,左变量返回系统的闭环参数,反馈极性1为正反馈,-1为负反馈。
例1-3:
系统开环传递函数为
写出单位负反馈时闭环传递函数的多项式模型。
>>numo=conv([5],[11]);
>>deno=conv([100],[13]);
>>[numc,denc]=cloop(numo,deno,-1);
>>printsys(numc,denc)
显示:
num/den=
5s+5
---------------------
s^3+3s^2+5s+5
函数[]=feedback()用于计算一般反馈系统的闭环传递函数。
其格式为:
[num,den]=feedback(num1,den1,num2,den2,sign)前向传递函数G(s)为num1/den1,反馈传递函数H(s)为num2/den2,右变量为G(s)与H(s)的参数,左变量返回系统的闭环参数,反馈极性sign取1为正反馈,取-1为负反馈,缺省时作负反馈计算。
例4:
系统结构图如图所示:
+
-
写出闭环传递函数。
>>num1=[10];den1=[110];
>>num2=[0.21];den2=[0.011];
>>[num,den]=feedback(num1,den1,num2,den2,-1);
>>printsys(num,den)
显示:
num/den=
0.1s+10
------------------------------
0.01s^3+1.01s^2+3s+10
串联连接用函数series,格式:
[num,den]=series(num1,den1,num2,den2)
并联连接用函数parallel,格式:
[num,den]=parallel(num1,den1,num2,den2)
*系统模型其他形式描述及分析见教材71页。
三、实验步骤与内容:
1、开机执行MATLAB程序,进入MATLAB命令窗口:
“Commandwindow”。
2、建立简单的系统模型:
用MATLAB语言求取传递函数,要求熟练应用以下指令:
printsys(num,den);feedback;cloop;series;parallel;conv;tf;zpk;zp2tf;tf2zp;
(1)
;
(2)
;
(3)
-
编写指令在命令窗口中显示上列传递函数
利用指令进行传递函数模型的转换
四、实验报告
1.根据内容要求,写出调试好的MATLAB语言程序,及对应的结果。
2.按照实验内容题目顺序整理个体程序、列出仿真结果截图,一A4纸张word文档形式提交,字体均为校4号。
(注:
提交文档作业中的图形大小比例要与文字对应)--以下同
实验二控制系统的阶跃响应
一、实验目的
1.熟练掌握step()函数和impulse()函数的使用方法,研究线性系统在单位阶跃、单位脉冲及单位斜坡函数作用下的响应。
2.通过响应曲线观测特征参量
和
对二阶系统性能的影响。
3.熟练掌握系统的稳定性的判断方法。
。
二、基础知识及MATLAB函数
用MATLAB求系统的瞬态响应时,将传递函数的分子、分母多项式的系数分别以s的降幂排列写为两个数组num、den。
由于控制系统分子的阶次m一般小于其分母的阶次n,所以num中的数组元素与分子多项式系数之间自右向左逐次对齐,不足部分用零补齐,缺项系数也用零补上。
[wn,z]=damp(den)计算系统的无阻尼自然振荡频率wn和阻尼比z。
den为特征多项式系数向量(因为MATLAB语言中只用英文字母,而不用希腊字母,故用wn及z分别代替ω和ζ)。
1、阶跃响应
求系统阶跃响应的指令有:
step(num,den)时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出
step(num,den,t)时间向量t的范围可以由人工给定(例如t=0:
0.1:
10)
[y,x]=step(num,den)返回变量y为输出向量,x为状态向量
在MATLAB程序中,先定义num,den数组,并调用上述指令,即可生成单位阶跃输入信号下的阶跃响应曲线图。
例2-1求
的单位阶跃响应。
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];
den=[1425];
t=0:
0.1:
10;
step(num,den,t)
即可得到系统的单位阶跃响应曲线在0-10s间的部分,如图2-2所示。
2、脉冲响应
①求系统脉冲响应的指令有:
impulse(num,den)时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出
impulse(num,den,t)时间向量t的范围可以由人工给定(例如t=0:
0.1:
10)
[y,x]=impulse(num,den)返回变量y为输出向量,x为状态向量
[y,x,t]=impulse(num,den,t)向量t表示脉冲响应进行计算的时间
例2-2:
试求下列系统的单位脉冲响应:
在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-stepResponseofsG(s)=s/(s^2+0.2s+1)’)
3、斜坡响应
MATLAB没有直接调用求系统斜坡响应的功能指令。
在求取斜坡响应时,通常利用阶跃响应的指令。
基于单位阶跃信号的拉氏变换为1/s,而单位斜坡信号的拉氏变换为1/s2。
因此,当求系统G(s)的单位斜坡响应时,可以先用s除G(s),再利用阶跃响应命令,就能求出系统的斜坡响应。
例2-3试求下列闭环系统的单位斜坡响应。
对于单位斜坡输入量,R(s)=1/s2,因此
在MATLAB中输入以下命令,得到如图2-5所示的响应曲线:
num=[0001];den=[1110];
step(num,den)
title(‘Unit-RampResponseCuveforSystemG(s)=1/(s^2+s+1)’)
4、特征参量
和
对二阶系统性能的影响
标准二阶系统的闭环传递函数为:
设定无阻尼自然振荡频率
,考虑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];
t=0:
0.1:
10;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所示。
对二阶系统性能的影响
同理,设定阻尼比
时,当
分别取1,2,3时,利用MATLAB求取单位阶跃响应曲线,分析参数
对系统的影响。
num1=[001];den1=[10.51];
t=0:
0.1:
10;
step(num1,den1,t);
grid;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);holdon
text(0.5,1.4,’wn=3’)
由此得到的响应曲线如图2-7所示。
5.系统稳定性判断
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表可以看出,其第一列没有符号的变化,系统是稳定的。
例2-4:
系统传递函数为
,求阶跃响应,并作性能分析。
>>num=[4];den=[114];
>>step(num,den)
计算峰值时间:
>>[y,x,t]=step(num,den);
>>ymax=max(y);%求y的最大值。
>>tp=spline(y,t,ymax)%用插值算法计算峰值时间。
tp=
1.6062
计算系统无阻尼自然振荡频率和阻尼比:
>>[wn,z]=damp(den)
三、实验步骤与内容:
1.观察函数step()的调用格式,假设系统的传递函数模型为
绘制出系统的阶跃响应曲线?
2.对典型二阶系统
1)分别绘出
,
分别取0,0.25,0.5,1.0和2.0时的单位阶跃响应曲线,分析参数
对系统的影响,并计算
=0.25时的时域性能指标
。
2)绘制出当
=0.25,
分别取1,2,4,6时单位阶跃响应曲线,分析参数
对系统的影响。
3.系统的特征方程式为
,试判别该系统的稳定性。
四、实验报告
1.根据内容要求,写出调试好的MATLAB语言程序,及对应的MATLAB运算结果。
2.记录各种输出波形,根据实验结果分析参数变化对系统的影响。
3.总结判断闭环系统稳定的方法,说明增益K对系统稳定性的影响。
实验三SIMULINK环境下典型环节阶跃响应仿真及分析
一、实验目的
1、初步了解MATLAB中SIMULINK的使用方法
2、了解SIMULINK下实现典型环节阶跃响应方法。
3、定性了解各参数变化对典型环节动态特性的影响。
二、基础知识
1、熟悉SIMULINK
(1)进入MATLAB:
点击WIN窗口中MATLAB图标。
(2)进入SIMULINK:
在MATLAB窗口中键入SIMULINK命令,即可弹出SIMULINK模块库。
(3)建立自己的实验文件:
FILE\NEW。
FILE\SAVEAS。
(键入自己的文件名,文件名第一个字符必须是英文字母且不支持汉字文件名。
)
(4)从SIMULINK模块库中挑选所需的模块:
在SIMULINK窗中打开SOURCES模块库。
从SOURCES库(信号源模块库)中拖出STEPINPUT(单位阶跃输入)模块至自己的实验窗口。
从SINKS库中拖出scope模块。
从continuous库中拖出tranferfun(传递函数)等模块。
(5)通过tranferfun模块构造积分、惯性、振荡环节。
双击tranferfun模块,弹出如图6-1的对话框,其中Numerator为分子多项式的系数,Denominator为分母多项式的系数,通过修改多项式的系数实现不同环节的转变。
举例如下:
例3-1:
要实现传递函数
,则令Numerator为[1,2];
Denominator为[2,3,4];
例3-2:
要将传递函数变为积分环节:
,则令Numerator为[1];
Denominator为[1,0];
例3-3:
要将传递函数变为振荡环节:
,则令Numerator为[1];
Denominator为[1,1,1];
(在此传函中阻尼系数ζ为0.5)
例3-4:
要将传递函数变为实际微分环节:
,则令Numerator为[1,0];
Denominator为[1,1];
实际微分环节的传递函数为:
分子分母同除以Td,则为
因此,上式中分子s的系数即为Kd值,分母中常数项为Td的倒数.
(6)用鼠标将step、transferfcn及scope模块连接。
如下图所示:
(7)设仿真过程参数:
SIMULATION菜单\PARAMETERS菜单项。
其中:
StartTime为仿真开始时间,
Stoptime为仿真终止时间,
MixStepSize为仿真最小步长。
MaxStepSize为仿真最大步长。
,
Tolerance为仿真精度。
仿真开始前应对StopTime进行修改,如改为10秒,50秒或200秒,再根据实际情况进行调整。
(8)进行仿真:
SIMULATION菜单中START菜单项。
或点击
进行仿真。
注:
要使曲线光滑可以通过提高仿真精度或增加采样点来实现。
三、实验内容
1、按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。
①比例环节
和
;
②惯性环节
和
③积分环节
④微分环节
⑤比例+微分环节(PD)
和
⑥比例+积分环节(PI)
和
2、对典型二阶系统
进行仿真,ζ分别取0、0.2、0.5、0.7、1,观察
和ts的变化情况。
三、实验报告
1.画出各典型环节的SIMULINK仿真模型。
2.记录各环节的单位阶跃响应波形,并分析参数对响应曲线的影响。
3.对典型二阶系统绘制不同ζ下系统单位阶跃响应曲线。
4.对典型二阶系统分析ζ改变对
和ts及系统稳定性的影响
实验四线性系统根轨迹分析
一、实验目的
1.利用MATLAB语句绘制系统的根轨迹。
2.掌握用根轨迹分析系统性能的图解方法。
二、基础知识及MATLAB函数
根轨迹是指系统的某一参数从零变到无穷大时,特征方程的根在s平面上的变化轨迹。
这个参数一般选为开环系统的增益K。
课本中介绍的手工绘制根轨迹的方法,只能绘制根轨迹草图。
而用MATLAB可以方便地绘制精确的根轨迹图,并可观测参数变化对特征根位置的影响。
假设系统的开环传递函数表示为:
系统的闭环特征方程可以写成:
1、绘制零极点分布图
命令格式:
[p,z]=pzmap(sys)
当不带输出变量时,pzmap命令可直接在复平面内标出传递函数的零、极点。
在图中,几点用“×”表示,零点用“○”表示。
2、绘制系统的根轨迹
MATLAB中绘制根轨迹的函数调用格式为:
rlocus(num,den)开环增益k的范围自动设定。
rlocus(num,den,k)开环增益k的范围人工设定。
rlocus(p,z)依据开环零极点绘制根轨迹。
r=rlocus(num,den)不作图,返回闭环根矩阵。
[r,k]=rlocus(num,den)不作图,返回闭环根矩阵r和对应的开环增益向量k。
其中,num,den分别为系统开环传递函数的分子、分母多项式系数,按s的降幂排列。
K为根轨迹增益,可设定增益范围。
3、确定闭环根位置对应增益值K的函数rlocfind()
在MATLAB中,提供了rlocfind函数获取与特定的复根对应的增益K的值。
在求出的根轨迹图上,可确定选定点的增益值K和闭环根r(向量)的值。
该函数的调用格式为:
[k,r]=rlocfind(num,den)
执行前,先执行绘制根轨迹命令rlocus(num,den),作出根轨迹图。
执行rlocfind命令时,出现提示语句“Selectapointinthegraphicswindow”,即要求在根轨迹图上选定闭环极点。
将鼠标移至根轨迹图选定的位置,单击左键确定,根轨迹图上出现“+”标记,即得到了该点的增益K和闭环根r的返回变量值。
例4-1已知系统的开环传递函数
,绘制系统的根轨迹的matlab的调用语句如下:
num=[11];%定义分子多项式
den=[1429];%定义分母多项式
rlocus(num,den)%绘制系统的根轨迹
grid%画网格标度线
xlabel('RealAxis'),ylabel('ImaginaryAxis')%给坐标轴加上说明
title('RootLocus')%给图形加上标题名
则该系统的根轨迹如图4-1(a)所示。
若上例要绘制K在(1,10)的根轨迹图,则此时的matlab的调用格式如下,对应的根轨迹如图4-1(b)所示。
num=[11];den=[1429];
k=1:
0.5:
10;
rlocus(num,den,k)
例4-2系统的开环传递函数为
,试求:
(1)系统的根轨迹;
(2)系统稳定的K的范围;(3)K=1时闭环系统阶跃响应曲线。
则此时的matlab的调用格式为:
rlocus(G);%绘制系统的根轨迹
[k,r]=rlocfind(G)%确定临界稳定时的增益值k和对应的极点r
G_c=feedback(G,1);%形成单位负反馈闭环系统
step(G_c)%绘制闭环系统的阶跃响应曲线
则系统的根轨迹图和闭环系统阶跃响应曲线如图4-2所示。
其中,调用rlocfind()函数,求出系统与虚轴交点的K值,可得与虚轴交点的K值为0.0264,故系统稳定的K的范围为
。
三、实验内容
1.设单位负反馈系统开环传递函数如下
1)
2)
3)
4)
5)
6)
7)
8)
9)
10)
选择一个传递函数完成如下实验内容:
(1)绘制零极点分布图
(2)绘制根轨迹图(K从零变化到无穷大)
(3)绘制K在(5,30)的根轨迹图
(4)求出闭环系统稳定的K值的范围
(5)K=10时闭环系统单位阶跃响应曲线
2.设单位负反馈系统开环传递函数
(1)绘制根轨迹图(K从零变化到无穷大)
(2)求系统临界阻尼时对应的K值及其闭环极点。
四、实验报告
1.根据内容要求,写出调试好的MATLAB语言程序,及对应的结果。
2.记录显示的根轨迹图形,根据实验结果分析根轨迹的绘制规则。
3.根据实验结果分析闭环系统的性能,观察根轨迹上一些特殊点对应的K值,确定闭环系统稳定的范围。
实验五线性系统的频域分析
一、实验
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 自控 实验 指导书 MATLAB