自动控制原理实验指导书newb.docx
《自动控制原理实验指导书newb.docx》由会员分享,可在线阅读,更多相关《自动控制原理实验指导书newb.docx(60页珍藏版)》请在冰豆网上搜索。
![自动控制原理实验指导书newb.docx](https://file1.bdocx.com/fileroot1/2023-2/21/30f4274d-5676-45ee-b405-653474a758e6/30f4274d-5676-45ee-b405-653474a758e61.gif)
自动控制原理实验指导书newb
《自动控制原理》实验指导
目录
实验一控制系统的数学模型……………………………………………….1
实验二典型环节的模拟方法和动态特性………………………………….10
实验三控制系统的时域分析……………………………………………….11
实验四控制系统的根轨迹分析……………………………………………22
实验五控制系统的频域分析………………………………………………28
实验六串联校正环节的设计………………………………………………36
实验七离散控制系统分析…………………………………………………39
实验一控制系统的数学模型
一、实验目的
1、了解MATLAB软件的基本特点和功能;
2、掌握用MATLAB创建各种控制系统模型;
3、掌握多环节串联、并联、反馈连接时整体传递函数的求取方法。
二、实验原理
(一)用MATLAB建立传递函数模型
1.多项式模型
线性系统的传递函数模型可一般地表示为:
(1)
将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量
和
,就可以轻易地将传递函数模型输入到MATLAB环境中。
命令格式为:
;
(2)
; (3)
在MATLAB控制系统工具箱中,定义了tf()函数,它可由传递函数分子分母给出的变量构造出单个的传递函数对象。
从而使得系统模型的输入和处理更加方便。
该函数的调用格式为:
G=tf(num,den); (4)
例1-1 一个简单的传递函数模型:
可以由下面的命令输入到MATLAB工作空间中去。
>> num=[1,5];
den=[1,2,3,4,5];
G=tf(num,den)
运行结果:
Transferfunction:
s+5
-----------------------------
s^4+2s^3+3s^2+4s+5
这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。
例1-2 一个稍微复杂一些的传递函数模型:
该传递函数模型可以通过下面的语句输入到MATLAB工作空间。
>>num=6*[1,5];
den=conv(conv([1,3,1],[1,3,1]),[1,6]);
tf(num,den)
运行结果
Transferfunction:
6s+30
-----------------------------------------
s^5+12s^4+47s^3+72s^2+37s+6
其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法当然也可以用这个函数来计算。
该函数允许任意地多层嵌套,从而表示复杂的计算。
2.零极点模型
线性系统的传递函数还可以写成极点的形式:
(5)将系统增益、零点和极点以向量的形式输入给三个变量
、Z和P,就可以将系统的零极点模型输入到MATLAB工作空间中,命令格式为:
(6)
(7)
(8)
在MATLAB控制工具箱中,定义了zpk()函数,由它可通过以上三个MATLAB变量构造出零极点对象,用于简单地表述零极点模型。
该函数的调用格式为:
G=zpk(Z,P,K) (9)
例1-3 某系统的零极点模型为:
该模型可以由下面的语句输入到MATLAB工作空间中。
>>K=6;
Z=[-1.9294;-0.0353+0.9287j;-0.0353-0.9287j];
P=[-0.9567+1.2272j;-0.9567-1.2272j;0.0433+0.6412j;0.0433-0.6412j];
G=zpk(Z,P,K)
运行结果:
Zero/pole/gain:
6(s+1.929)(s^2+0.0706s+0.8637)
----------------------------------------------
(s^2-0.0866s+0.413)(s^2+1.913s+2.421)
注意:
对于单变量系统,其零极点均是用列向量来表示的,故Z、P向量中各项均用分号(;)隔开。
3.反馈系统结构图模型
设反馈系统结构图如图1-1所示。
控制系统工具箱中提供了feedback()函数,用来求取反馈连接下总的系统模型,该函数调用格式如下:
G=feedback(G1,G2,sign);(10)
其中变量sign用来表示正反馈或负反馈结构,若sign=-1表示负反馈系统的模型,若省略sign变量,则仍将表示负反馈结构。
G1和G2分别表示前向模型和反馈模型的LTI(线性时不变)对象。
图1-1 反馈系统结构图
例1-4 若反馈系统图5中的两个传递函数分别为:
,
则反馈系统的传递函数可由下列的MATLAB命令得出
>>G1=tf(1,[1,2,1]);
G2=tf(1,[1,1]);
G=feedback(G1,G2)
运行结果:
Transferfunction:
s+1
---------------------
s^3+3s^2+3s+2
若采用正反馈连接结构输入命令
>>G=feedback(G1,G2,1)
则得出如下结果:
Transferfunction:
s+1
-----------------
s^3+3s^2+3s
例1-5 若反馈系统为更复杂的结构如图1-2所示。
其中
,
,
则闭环系统的传递函数可以由下面的MATLAB命令得出:
>> G1=tf([1,7,24,24],[1,10,35,50,24]);
G2=tf([10,5],[1,0]);
H=tf([1],[0.01,1]);
G_a=feedback(G1*G2,H)
得到结果:
Transferfunction:
0.1s^5+10.75s^4+77.75s^3+278.6s^2+361.2s+120
--------------------------------------------------------------------
0.01s^6+1.1s^5+20.35s^4+110.5s^3+325.2s^2+384s+120
图1-2 复杂反馈系统
4.多项式模型与零极点模型的转换
有了传递函数的有理分式模型之后,求取零极点模型就不是一件困难的事情了。
在控制系统工具箱中,可以由zpk()函数立即将给定的LTI对象G转换成等效的零极点对象G1。
该函数的调用格式为:
G1=zpk(G)(11)
例1-6给定系统传递函数为:
对应的零极点格式可由下面的命令得出
>> num=[6.8,61.2,95.2];
den=[1,7.5,22,19.5,0];
G=tf(num,den);
G1=zpk(G)
显示结果:
Zero/pole/gain:
6.8(s+7)(s+2)
-------------------------
s(s+1.5)(s^2+6s+13)
可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。
同样,对于给定的零极点模型,也可以直接由MATLAB语句立即得出等效传递函数模型。
调用格式为:
G1=tf(G)(12)
例1-7 给定零极点模型:
可以用下面的MATLAB命令立即得出其等效的传递函数模型。
输入程序的过程中要注意大小写。
>> Z=[-2,-7];
P=[0,-3-2j,-3+2j,-1.5];
K=6.8;
G=zpk(Z,P,K);
G1=tf(G)
结果显示:
Transferfunction:
6.8s^2+61.2s+95.2
-------------------------------
s^4+7.5s^3+22s^2+19.5s
5.模型的连接
5.1并联:
parallel
格式:
[num,den]=parallel(num1,den1,num2,den2,out1,out2)
%将并联连接的传递函数进行相加。
out1和out2分别指定要作相加的输出端编号.
5.2串联:
series
格式:
[num,den]=series(num1,den1,num2,den2)
%将串联连接的传递函数进行相乘。
5.3闭环:
cloop(单位反馈)
格式:
[numc,denc]=cloop(num,den,sign)
%表示由传递函数表示的开环系统构成闭环系统,当sign=1时采用正反馈;当sign=-1时采用负反馈;sign缺省时,默认为负反馈。
6.Simulink建模方法
在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。
在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。
Simulink是由MathWorks软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。
它具有两个显著的功能:
Simul(仿真)与Link(连接),亦即可以利用鼠标在模型窗口上“画”出所需的控制系统模型。
然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。
与MATLAB中逐行输入命令相比,这样输入更容易,分析更直观。
下面简单介绍SIMULINK建立系统模型的基本步骤:
(1)SIMULINK的启动:
在MATLAB命令窗口的工具栏中单击按钮
或者在命令提示符>>下键入simulink命令,回车后即可启动Simulink程序。
启动后软件自动打开Simullink模型库窗口,如图1-3所示。
这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。
若想建立一个控制系统结构框图,则应该选择File|New菜单中的Model选项,或选择工具栏上newModel
按钮,打开一个空白的模型编辑窗口如图1-4所示。
图1-3 simulink模型库
图1-4 模型编辑窗口
(2)画出系统的各个模块:
打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖到模型编辑窗口的合适位置。
(3)给出各个模块参数:
由于选中的各个模块只包含默认的模型参数,如默认的传递函数模型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。
要修改模块的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。
(4)画出连接线:
当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整的系统。
模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。
若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。
(5)指定输入和输出端子:
在Simulink下允许有两类输入输出信号,第一类是仿真信号,可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。
第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。
例1-8 典型二阶系统的结构图如图1-5所示。
用SIMULINK对系统进行仿真分析。
图1-5 典型二阶系统结构图
按前面步骤,启动simulink并打开一个空白的模型编辑窗口。
(1)画出所需模块,并给出正确的参数:
●在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标左键双击该图标,打开参数设定的对话框,将参数steptime(阶跃时刻)设为0。
●在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图标将参数Listofsigns(符号列表)设为|+-(表示输入为正,反馈为负)。
●在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(TransferFcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。
●在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将之拖到编辑窗口中。
(3)将画出的所有模块按图1-6用鼠标连接起来,构成一个原系统的框图描述如图10所示。
(4)选择仿真算法和仿真控制参数,启动仿真过程。
●在编辑窗口中点击Simulation|Simulationparameters菜单,会出现一个参数对话框,在solver模板中设置响应的仿真范围StartTime(开始时间)和StopTime(终止时间),仿真步长范围Maxinumstepsize(最大步长)和Mininumstepsize(最小步长)。
对于本例,StopTime可设置为2。
最后点击Simulation|Start菜单或点击相应的热键启动仿真。
双击示波器,在弹出的图形上会“实时地”显示出仿真结果。
输出结果如图1-7所示。
图1-6二阶系统的simulink实现
在命令窗口中键入whos命令,会发现工作空间中增加了两个变量――tout和yout,这是因为Simulink中的Out1模块自动将结果写到了MATLAB的工作空间中。
利用MATLAB命令plot(tout,yout),可将结果绘制出来,如图1-8所示。
比较1-7和1-8,可以发现这两种输出结果是完全一致的。
图1-8MATLAB命令得出的系统响应曲线
图1-7仿真结果示波器显示
三、实验内容
1.系统的传递函数为:
写出零极点模型,并转换为多项式传递函数模型;
2.系统结构图如下所示,求其多项式传递函数模型
3.系统结构图如下所示,求其多项式传递函数模型
4.系统结构图如下所示,求其多项式传递函数模型
5.用Matlab产生下列系统的传递函数的多项式传递函数模型、零极点模型。
四、实验报告要求
1.写明实验目的和实验原理。
实验原理中简要说明求取传递函数的途径和采用的语句或函数。
2.在实验过程和结果中,要求按项目写清楚自定的传递函数,从屏幕上复制程序和运行结果,打印报告或打印粘贴在报告上。
不方便打印的同学,要求手动从屏幕上抄写和绘制。
3.简要写出实验心得和问题或建议。
sgma=0.25;i=0;
forwn=10:
20:
50;
num=wn^2;den=[1,2*sgma*wn,wn^2];
sys=tf(num,den);
i=i+1;
step(sys,2);
holdon,grid;
end
holdoff
title('wn±ä»¯Ê±ÏµÍ³µÄ½×Ô¾ÏìÓ¦ÇúÏß')
lab1='wn=10';text(0.35,1.4,lab1),
lab2='wn=30';text(0.12,1.3,lab2),
lab3='wn=50';text(0.05,1.2,lab3),
实验二典型环节的模拟方法及动态特性
一、实验目的
通过MATLAB控制系统工具箱和SIMULINK仿真工具箱研究典型环节的数学模型的搭建方法和其动态特性.
二、实验原理
1.典型环节:
如比例,积分,微分,惯性,振荡环节,不稳定环节的传递函数.(补充:
单纯的微分环节是不存在的,一般是微分加惯性环节.)
2.单位阶跃响应:
step(num,den).
3.利用SIMULINK仿真工具搭建系统数学模型,观察响应曲线,结果输出到MATLAB状态空间。
三、实验内容
1.分别构造上述6种典型环节的传递函数,求其单位阶跃响应,对比有何不同。
2.利用SIMULINK搭建如下系统的数学模型,观察其单位阶跃响
应。
电路图如下,R=1.4欧,L=2亨,C=0.32法,t=0时刻接入1V
的电压,求vo(t)的值与t的关系曲线。
四、实验报告要求
1.针对内容一记录单位阶跃响应并加以分析对比各环节的特性,要求各幅图都要画在同一界面内,便于比较。
2.针对内容二记录所搭建的SIMULINK仿真模型及响应曲线,说明其所代表的系统类型的阶跃响应特性。
.
实验三控制系统的时域分析
一、实验目的
学习利用MATLAB进行控制系统时域分析,包括典型响应、判断系统稳定性和分析系统的动态特性
二、实验原理
1.线性系统稳定性分析
线性系统稳定的充要条件是系统的特征根均位于S平面的左半部分。
系统的零极点模型可以直接被用来判断系统的稳定性。
另外,MATLAB语言中提供了有关多项式的操作函数,也可以用于系统的分析和计算。
(1)直接求特征多项式的根
设p为特征多项式的系数向量,则MATLAB函数roots()可以直接求出方程p=0在复数范围内的解v,该函数的调用格式为:
v=roots(p)(13)
例3-1已知系统的特征多项式为:
特征方程的解可由下面的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)(14)
如上例中:
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.00003.00002.00001.00001.0000
由此可见,函数roots()与函数poly()是互为逆运算的。
(3)多项式求值
在MATLAB中通过函数polyval()可以求得多项式在给定点的值,该函数的调用格式为:
polyval(p,v)(15)
对于上例中的p值,求取多项式在x点的值,可输入如下命令:
>>p=[1,0,3,2,1,1];
x=1
polyval(p,x)
结果显示
ans=
8
(4)部分分式展开
考虑下列传递函数:
式中
,但是
和
中某些量可能为零。
MATLAB函数可将
展开成部分分式,直接求出展开式中的留数、极点和余项。
该函数的调用格式为:
(16)
则
的部分分式展开由下式给出:
式中
…,
为极点,
…,
为各极点的留数,
为余项。
例3-2设传递函数为:
该传递函数的部分分式展开由以下命令获得:
>>num=[2,5,3,6];
den=[1,6,11,6];
[r,p,k]=residue(num,den)
命令窗口中显示如下结果
r=p=k=
-6.0000-3.00002
-4.0000-2.0000
3.0000-1.0000
中留数为列向量r,极点为列向量p,余项为行向量k。
由此可得出部分分式展开式:
该函数也可以逆向调用,把部分分式展开转变回多项式
之比的形式,命令格式为:
[num,den]=residue(r,p,k)(17)
对上例有:
>>[num,den]=residue(r,p,k)
结果显示
num=
2.00005.00003.00006.0000
den=
1.00006.000011.00006.0000
应当指出,如果p(j)=p(j+1)=…=p(j+m-1),则极点p(j)是一个m重极点。
在这种情况下,部分分式展开式将包括下列诸项:
例3-3设传递函数为:
则部分分式展开由以下命令获得:
>>v=[-1,-1,-1]
num=[0,1,2,3];
den=poly(v);
[r,p,k]=residue(num,den)
结果显示
r=
1.0000
0.0000
2.0000
p=
-1.0000
-1.0000
-1.0000
k=
[]
其中由poly()命令将分母化为标准降幂排列多项式系数向量den,k=[]为空矩阵。
由上可得展开式为:
(5)由传递函数求零点和极点
在MATLAB控制系统工具箱中,给出了由传递函数对象G求出系统零点和极点的函数,其调用格式分别为:
Z=tzero(G)(18)
P=G.P{1}(19)
注意:
式19中要求的G必须是零极点模型对象,且出现了矩阵的点运算“.”和大括号{}表示的矩阵元素。
例3-4已知传递函数为:
输入如下命令:
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
其结果与例8完全一致。
(6)零极点分布图
在MATLAB中,可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,该函数调用格式为:
pzmap(num,den)(20)
例3-5给定传递函数:
利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图3-1所示。
>>num=[3,2,5,4,6];
den=[1,3,4,2,7,2];
pzmap(num,den)
title(¹Pole-ZeroMap¹) %图形标题。
图3-1MATLAB函数零、极点分布图
2.系统动态特性分析
(1)时域响应解析算法――部分分式展开法
用拉氏变换法求系统的单位阶跃响应,可直接得出输出c(t)随时间t变化的规律,对于高阶系统,输出的拉氏变换象函数为:
(21)
对函数c(s)进行部分分式展开,我们可以用num,[den,0]来表示c(s)的分子和分母。
例3-6给定系统的传递函数:
用以下命令对
进行部分分式展开。
>>num=[1,7,24,24]