实验二用MATLAB建立传递函数模型Word文档格式.docx

上传人:b****6 文档编号:19479558 上传时间:2023-01-06 格式:DOCX 页数:74 大小:1,005.10KB
下载 相关 举报
实验二用MATLAB建立传递函数模型Word文档格式.docx_第1页
第1页 / 共74页
实验二用MATLAB建立传递函数模型Word文档格式.docx_第2页
第2页 / 共74页
实验二用MATLAB建立传递函数模型Word文档格式.docx_第3页
第3页 / 共74页
实验二用MATLAB建立传递函数模型Word文档格式.docx_第4页
第4页 / 共74页
实验二用MATLAB建立传递函数模型Word文档格式.docx_第5页
第5页 / 共74页
点击查看更多>>
下载资源
资源描述

实验二用MATLAB建立传递函数模型Word文档格式.docx

《实验二用MATLAB建立传递函数模型Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验二用MATLAB建立传递函数模型Word文档格式.docx(74页珍藏版)》请在冰豆网上搜索。

实验二用MATLAB建立传递函数模型Word文档格式.docx

图1-3

(2)模拟电路图:

如图1-4所示。

图1-4

系统的开环传函为:

系统的特征方程为:

(4)实验内容

实验前由Routh判断得Routh行列式为:

S3

S2

S1

S0

为了保证系统稳定,第一列各值应为正数,因此可以确定

系统稳定K值的范围

系统临界稳定K

系统不稳定K值的范围

四、实验步骤

1)将信号源单元的“ST”端插针与“S”端插针用“短路块”短接。

由于每个运放单元均设置了锁零场效应管,所以运放具有锁零功能。

将开关分别设在“方波”档和“500ms~12s”档,调节调幅和调频电位器,使得“OUT”端输出的方波幅值为1V,周期为10s左右。

2.)典型二阶系统瞬态性能指标的测试

(1)按模拟电路图1-2接线,将1中的方波信号接至输入端,取R=10KΩ。

(2)用示波器观察系统响应曲线C(t),测量并记录超调MP、峰值时间tp和调节时间tS。

(3)分别按R=20KΩ;

40KΩ;

100KΩ;

改变系统开环增益,观察响应曲线C(t),测量并记录性能指标MP、tp和tS,及系统的稳定性。

并将测量值和计算值进行比较(实验前必须按公式计算出)。

将实验结果填入表1-1中。

3)典型三阶系统的性能

(1)按图1-4接线,将1中的方波信号接至输入端,取R=30KΩ。

(2)观察系统的响应曲线,并记录波形。

(3)减小开环增益(R=41.7KΩ;

100KΩ),观察响应曲线,并将实验结果填入表1-3中。

表1-3中已填入了一组参考测量值,供参照。

五、实验现象分析

1)典型二阶系统瞬态性能指标实验测试值

表1-1

参数

项目

R

(KΩ)

K

ωn

ξ

C

(tp)

(∞)

MP(%)

tP(s)

tS(s)

响应

情况

0<

ξ<

1

欠阻尼

10

50

ξ=1

临界

阻尼

160

ξ>

1

过阻尼

200

其中

2)典型三阶系统在不同开环增益下的响应情况

表1-2

R(KΩ)

开环增益K

稳定性

表1-3

30

16.7

不稳定发散

41.7

12

临界稳定等幅振荡

100

5

稳定衰减收敛

注意:

在做实验前一定要进行对象整定,否则将会导致理论值和实际测量值相差较大。

实验二用MATLAB建立传递函数模型

(1)熟悉MATLAB实验环境,掌握MATLAB命令窗口的基本操作;

(2)掌握MATLAB建立控制系统数学模型的命令及模型相互转换的方法;

(3)掌握使用MATLAB命令化简模型基本连接的方法;

(4)学会使用Simulink模型结构图化简复杂控制系统模型的方法。

二、实验原理及内容

控制系统常用的数学模型有四种:

传递函数模型(tf对象)、零极点增益模型(zpk对象)、结构框图模型和状态空间模型(ss对象)。

经典控制理论中数学模型一般使用前三种模型,状态空间模型属于现代控制理论范畴。

1、有理函数模型

线性连续系统的传递函数模型可一般地表示为:

(1)

将系统的分子和分母多项式的系数按降幂的方式以向量的形式输入给两个变量

,就可以轻易地将传递函数模型输入到MATLAB环境中。

命令格式为:

;

       

(2)

    (3)

用函数tf()来建立控制系统的传递函数模型,该函数的调用格式为:

G=tf(num,den);

              (4)

例1 一个简单的传递函数模型:

 

可以由下面的命令输入到MATLAB工作空间中去。

>

 num=[1,2];

den=[1,2,3,4,5];

G=tf(num,den)

运行结果:

Transferfunction:

s+2

-----------------------------

s^4+2s^3+3s^2+4s+5

这时对象G可以用来描述给定的传递函数模型,作为其它函数调用的变量。

例2 一个稍微复杂一些的传递函数模型:

num=6*[1,5];

 den=conv(conv([1,3,1],[1,3,1]),[1,6]);

 tf(num,den)

运行结果

6s+30

-----------------------------------------

s^5+12s^4+47s^3+72s^2+37s+6

其中conv()函数(标准的MATLAB函数)用来计算两个向量的卷积,多项式乘法也可以用这个函数来计算。

该函数允许任意地多层嵌套,从而表示复杂的计算。

【自我实践1】建立控制系统的传递函数模型:

2、零极点模型

线性系统的传递函数还可以写成极点的形式:

将系统增益K、零点-zi和极点-pj以向量的形式输入给三个变量

、Z和P,命令格式为:

(6)

(7)

(8)

用函数命令zpk()来建立系统的零极点增益模型,其函数调用格式为:

G=zpk(Z,P,KGain) (9)

例3 某系统的零极点模型为:

KGain=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,KGain)

运行结果:

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向量中各项均用分号(;

)隔开。

【自我实践2】建立控制系统的零极点模型:

3、控制系统模型间的相互转换

零极点模型转换为传递函数模型:

[num,den]=zp2tf(z,p,k)

传递函数模型转化为零极点模型:

[z,p,k]=tf2zp(num,den)

例4给定系统传递函数为:

        

对应的零极点模型可由下面的命令得出

 num=[6.8,61.2,95.2];

  den=[1,7.5,22,19.5,0];

  G=tf(num,den);

  G1=zpk(G)

显示结果:

6.8(s+7)(s+2)

------------------------------

s(s+1.5)(s^2+6s+13)

可见,在系统的零极点模型中若出现复数值,则在显示时将以二阶因子的形式表示相应的共轭复数对。

例5 给定零极点模型:

         

可以用下面的MATLAB命令立即得出其等效的传递函数模型。

输入程序时要注意大小写。

 Z=[-2,-7];

P=[0,-3-2j,-3+2j,-1.5];

K=6.8;

G=zpk(Z,P,K);

G1=tf(G)

结果显示:

6.8s^2+61.2s+95.2

---------------------------------------

s^4+7.5s^3+22s^2+19.5s

【自我实践3】已知系统传递函数

,求其等效的零极点模型。

【自我实践4】建立控制系统的多项式模型:

4、反馈系统结构图模型

设反馈系统结构图如图2-1所示。

图2-1反馈系统结构图

两个环节反馈连接后,其等效传递函数可用feedback()函数求得,其调用格式为:

sys=feedback(G1,G2,sign)

其中sign是反馈极性,sign缺省时,默认为负反馈,sign=-1;

正反馈时,sign=1;

单位反馈时,G2=1,且不能省略。

series()函数:

实现两个模型的串联;

多于两个必须嵌套使用。

parallel()函数:

实现两个模型的并联;

例6 若反馈系统如图2-1中的两个传递函数分别为:

    

,  

则反馈系统的传递函数:

G1=tf(1,[1,2,1]);

G2=tf(1,[1,1]);

G=feedback(G1,G2)

s+1

-------------------------

s^3+3s^2+3s+2

若采用正反馈连接结构输入命令

G=feedback(G1,G2,1)

则得出如下结果:

---------------------

s^3+3s^2+3s

例7 若反馈系统为更复杂的结构如图2-2所示。

图2-2复杂反馈系统

则闭环系统的传递函数:

 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)

结果为:

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

【自我实践5】已知系统前向通道的传递函数

,求其单位负反馈闭环传递函数。

5、Simulink建模方法

在一些实际应用中,如果系统的结构过于复杂,不适合用前面介绍的方法建模。

在这种情况下,功能完善的Simulink程序可以用来建立新的数学模型。

Simulink是由MathWorks软件公司1990年为MATLAB提供的新的控制系统模型图形输入仿真工具。

它具有两个显著的功能:

Simul(仿真)与Link(连接),即可以利用鼠标在模型窗口上“画”出所需的控制系统模型。

然后利用SIMULINK提供的功能来对系统进行仿真或线性化分析。

与MATLAB中逐行输入命令相比,输入更容易,分析更直观。

下面简单介绍SIMULINK建立系统模型的基本步骤:

(1)SIMULINK的启动:

在MATLAB命令窗口的工具栏中单击按钮

或者在命令提示符>

下键入simulink命令,回车后即可启动Simulink程序。

启动后软件自动打开Simullink模型库窗口,如图2-3所示。

这一模型库中含有许多子模型库,如Sources(输入源模块库)、Sinks(输出显示模块库)、Nonlinear(非线性环节)等。

若想建立一个控制系统结构框图,则应该选择File|New菜单中的Model选项,或选择工具栏上newModel

按钮,打开一个空白的模型编辑窗口如图2-4所示。

图2-3simulink模型库图2-4模型编辑窗口

(2)画出系统的各个模块:

打开相应的子模块库,选择所需要的元素,用鼠标左键点中后拖到模型编辑窗口的合适位置。

(3)给出各个模块参数:

由于选中的各个模块只包含默认的模型参数,如默认的传递函数模型为1/(s+1)的简单格式,必须通过修改得到实际的模块参数。

要修改模块的参数,可以用鼠标双击该模块图标,则会出现一个相应对话框,提示用户修改模块参数。

(4)画出连接线:

当所有的模块都画出来之后,可以再画出模块间所需要的连线,构成完整的系统。

模块间连线的画法很简单,只需要用鼠标点按起始模块的输出端(三角符号),再拖动鼠标,到终止模块的输入端释放鼠标键,系统会自动地在两个模块间画出带箭头的连线。

若需要从连线中引出节点,可在鼠标点击起始节点时按住Ctrl键,再将鼠标拖动到目的模块。

(5)指定输入和输出端子:

在Simulink下允许有两类输入输出信号,第一类是仿真信号,可从source(输入源模块库)图标中取出相应的输入信号端子,从Sink(输出显示模块库)图标中取出相应输出端子即可。

第二类是要提取系统线性模型,则需打开Connection(连接模块库)图标,从中选取相应的输入输出端子。

例8典型二阶系统的结构图如图2-5所示。

用SIMULINK对系统进行仿真分析。

图2-5典型二阶系统结构图

按前面步骤,启动simulink并打开一个空白的模型编辑窗口。

(1)画出所需模块,并给出正确的参数:

●在sources子模块库中选中阶跃输入(step)图标,将其拖入编辑窗口,并用鼠标左键双击该图标,打开参数设定的对话框,将参数steptime(阶跃时刻)设为0。

●在Math(数学)子模块库中选中加法器(sum)图标,拖到编辑窗口中,并双击该图标将参数Listofsigns(符号列表)设为|+-(表示输入为正,反馈为负)。

●在continuous(连续)子模块库中、选积分器(Integrator)和传递函数(TransferFcn)图标拖到编辑窗口中,并将传递函数分子(Numerator)改为〔900〕,分母(Denominator)改为〔1,9〕。

●在sinks(输出)子模块库中选择scope(示波器)和Out1(输出端口模块)图标并将之拖到编辑窗口中。

(3)将画出的所有模块按图25用鼠标连接起来,构成一个原系统的框图描述如图2-6所示。

(4)选择仿真算法和仿真控制参数,启动仿真过程。

●在编辑窗口中点击Simulation|Simulationparameters菜单,出现参数对话框,在solver模板中设置响应的仿真范围StartTime(开始时间)和StopTime(终止时间),仿真步长范围Maxinumstepsize(最大步长)和Mininumstepsize(最小步长)。

对于本例,StopTime可设置为2。

最后点击Simulation|Start菜单或点击相应的热键启动仿真。

双击示波器,在弹出的图形上会“实时地”显示出仿真结果。

输出结果如图2-7所示。

图2-6二阶系统的simulink实现

图2-7仿真结果示波器显示图2-8MATLAB命令得出的系统响应曲线

命令窗口中键入whos命令,会发现工作空间中增加了两个变量――tout和yout,这是因为Simulink中的Out1模块自动将结果写到了MATLAB的工作空间中。

利用MATLAB命令plot(tout,yout),可将结果绘制出来,如图2-8所示。

比较图2-7和图2-8,可以发现这两种输出结果是完全一致的。

三、实验能力要求

(1)熟练使用各种函数命令建立控制系统数学模型。

(2)完成实验的范例题和自我实践,并记录结果。

实验三利用MATLAB进行时域分析

(1)学会使用MATLAB编程绘制控制系统的单位阶跃响应曲线;

(2)研究二阶控制系统中,、n对系统动态特性和时域指标的影响;

(3)掌握准确读取动态特性指标的方法;

(4)分析二阶系统闭环极点和闭环零点对系统动态性能的影响;

(5)研究三阶系统单位阶跃响应及其动态性能指标与其闭环极点的关系;

(6)研究闭环极点和闭环零点对高阶系统动态性能的影响;

(7)了解高阶系统中主导极点与偶极子的作用;

(8)了解系统阶跃响应、脉冲响应和斜坡响应输出曲线之间的联系与差别。

1.求系统的特征根

若已知系统的特征多项式D(s),利用roots()函数可以求其特征根。

若已知系统的传递函数,利用eig()函数可以直接求出系统的特征根。

2、求系统的闭环根、和ωn

函数damp()可以计算出系统的闭环根、和n。

3、零极点分布图

可利用pzmap()函数绘制连续系统的零、极点图,从而分析系统的稳定性,调用格式为:

pzmap(num,den)

【范例3-1】给定传递函数:

利用下列命令可自动打开一个图形窗口,显示该系统的零、极点分布图,如图3-1所示。

num=[3,2,5,4,6];

den=[1,3,4,2,7,2];

pzmap(num,den)

title(¹

Pole-ZeroMap¹

) %图形标题。

图3-1MATLAB函数零、极点分布图

4、求系统的单位阶跃响应

step()函数可以计算连续系统单位阶跃响应(impulse()函数可以计算连续系统单位脉冲响应):

step(sys)或step(sys,t)或step(num,den)

函数在当前图形窗口中直接绘制出系统的单位阶跃响应曲线,对象sys可以由tf(),zpk()函数中任何一个建立的系统模型。

第二种格式中t可以指定一个仿真终止时间,也可以设置为一个时间矢量(如t=0:

dt:

Tfinal,即dt是步长,Tfinal是终止时刻)。

如果需要将输出结果返回到MATLAB工作空间中,则采用以下调用格式:

c=step(sys)

此时,屏上不会显示响应曲线,必须利用plot()命令查看响应曲线。

plot可以根据两个或多个给定的向量绘制二维图形。

【范例3-2】已知传递函数为:

利用以下MATLAB命令可得阶跃响应曲线如图3-2所示。

num=[0,0,25];

  den=[1,4,25];

step(num,den)

grid %绘制网格线。

Unit-StepResponseofG(s)=25/(s^2+4s+25)¹

)%图像标题

图3-2MATLAB绘制的响应曲线

还可以用下面的语句来得出阶跃响应曲线

G=tf([0,0,25],[1,4,25]);

t=0:

0.1:

5;

 %从0到5每隔0.1取一个值。

c=step(G,t);

 %动态响应的幅值赋给变量c

plot(t,c) %绘二维图形,横坐标取t,纵坐标取c。

Css=dcgain(G) %求取稳态值。

系统显示的图形类似于上一个例子,在命令窗口中显示了如下结果

Css=

  1

5、求阶跃响应的性能指标

MATLAB提供了强大的绘图计算功能,可以用多种方法求取系统的动态响应指标。

首先介绍一种最简单的方法――游动鼠标法。

对于例2,在程序运行完毕后,在曲线中空白区域,单击鼠标右键,在快捷菜单中选择”characteristics”,包含:

Peakresponse(峰值);

settlingtime(调节时间);

Risetime(上升时间);

steadystate(稳态值);

在相应位置出现相应点,用鼠标单击后,相应性能值就显示出来。

用鼠标左键点击时域响应曲线任意一点,系统会自动跳出一个小方框,小方框显示了这一点的横坐标(时间)和纵坐标(幅值)。

这种方法简单易用,但同时应注意它不适用于用plot()命令画出的图形。

【自我实践1】若已知单位负反馈前向通道的传递函数为:

,试作出其单位阶跃响应曲线,准确读出其动态性能指标,并记录数据。

另一种比较常用的方法就是用编程方式求取时域响应的各项性能指标。

与游动鼠标法相比,编程方法稍微复杂,但可以获取一些较为复杂的性能指标。

若将阶跃响应函数step()获得系统输出量返回到变量y中,可以调用如下格式

[y,t]=step(G)

该函数还同时返回了自动生成的时间变量t,对返回变量y和t进行计算,可以得到时域性能指标。

峰值时间(timetopeak)可由以下命令获得:

[Y,k]=max(y);

timetopeak=t(k)

最大(百分比)超调量(percentovershoot)可由以下命令得到:

C=dcgain(G);

[Y,k]=max(y);

percentovershoot=100*(Y-C)/C

dcgain()函数用于求取系统的终值。

上升时间(risetime)可利用MATLAB中控制语句编制M文件来获得。

要求出上升时间,可以用while语句编写以下程序得到:

n=1;

whiley(n)<

C 

n=n+1;

end

risetime=t(n)

在阶跃输入条件下,y的值由零逐渐增大,当以上循环满足y=C时,退出循环,此时对应的时刻,即为上升时间。

对于输出无超调的系统响应,上升时间定义为输出从稳态值的10%上升到90%所需时间,则计算程序如下:

whiley(n)<

0.1*C

end

m=1;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1