自动控制原理MATLAB仿真实验(于海春) 下载本文

自动控制原理MATLAB仿真实验

实验一 典型环节的MATLAB仿真

一、实验目的

1.熟悉MATLAB桌面和命令窗口,初步了解SIMULINK功能模块的使用方法。 2.通过观察典型环节在单位阶跃信号作用下的动态特性,加深对各典型环节响应曲线的理解。

3.定性了解各参数变化对典型环节动态特性的影响。 二、SIMULINK的使用

MATLAB中SIMULINK是一个用来对动态系统进行建模、仿真和分析的软件包。利用SIMULINK功能模块可以快速的建立控制系统的模型,进行仿真和调试。

1.运行MATLAB软件,在命令窗口栏“>>”提示符下键入simulink命令,按Enter键或在工具栏单击

按钮,即可进入如图1-1所示的SIMULINK仿真环境下。

2.选择File菜单下New下的Model命令,新建一个simulink仿真环境常规模板。

图1-1 SIMULINK仿真界面 图1-2 系统方框图

3.在simulink仿真环境下,创建所需要的系统。 以图1-2所示的系统为例,说明基本设计步骤如下:

1)进入线性系统模块库,构建传递函数。点击simulink下的“Continuous”,再将右边窗口中“Transfer Fen”的图标用左键拖至新建的“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.比例环节的传递函数为

G(s)??Z2R??2??2Z1R1R1?100K,R2?200K

其对应的模拟电路及SIMULINK图形如图1-3所示。

图1-3 比例环节的模拟电路及SIMULINK图形

2.惯性环节的传递函数为

G(s)??Z2R12????Z1R2C1?10.2s?1R2R1?100K,R2?200K,C1?1uf

其对应的模拟电路及SIMULINK图形如图1-4所示。

图1-4 惯性环节的模拟电路及SIMULINK图形

3.积分环节(I)的传递函数为

G(s)??Z211????Z1R1C1s0.1sR1?100K,C1?1uf

其对应的模拟电路及SIMULINK图形如图1-5所示。

图1-5 积分环节的模拟电路及及SIMULINK图形

4.微分环节(D)的传递函数为

G(s)??Z2??R1C1s??sZ1R1?100K,C1?10uf C2??C1?0.01uf

其对应的模拟电路及SIMULINK图形如图1-6所示。

图1-6 微分环节的模拟电路及及SIMULINK图形

5.比例+微分环节(PD)的传递函数为

G(s)??Z2R??2(R1C1s?1)??(0.1s?1)Z1R1C2??C1?0.01uf

R1?R2?100K,C1?10uf其对应的模拟电路及SIMULINK图形如图1-7所示。

图1-7 比例+微分环节的模拟电路及SIMULINK图形

6.比例+积分环节(PI)的传递函数为

R2?1ZC1s1G(s)??2????(1?) R1?R2?100K,C1?10uf

Z1R1s其对应的模拟电路及SIMULINK图形如图1-8所示。

图1-8 比例+积分环节的模拟电路及SIMULINK图形

四、实验内容

按下列各典型环节的传递函数,建立相应的SIMULINK仿真模型,观察并记录其单位阶跃响应波形。

① 比例环节G1(s)?1和G1(s)?2; ② 惯性环节G1(s)?11和G2(s)? s?10.5s?1③ 积分环节G1(s)?1

s④ 微分环节G1(s)?s

⑤ 比例+微分环节(PD)G1(s)?s?2和G2(s)?s?1 ⑥ 比例+积分环节(PI)G1(s)?1?1和G2(s)?1?1s2s

五、实验报告

1.画出各典型环节的SIMULINK仿真模型。

2. 记录各环节的单位阶跃响应波形,并分析参数对响应曲线的影响。 3. 写出实验的心得与体会。 六、预习要求

1.熟悉各种控制器的原理和结构,画好将创建的SIMULINK图形。 2.预习MATLAB中SIMULINK的基本使用方法。

实验二 线性系统时域响应分析

一、实验目的

1.熟练掌握step( )函数和impulse( )函数的使用方法,研究线性系统在单位阶跃、单位脉冲及单位斜坡函数作用下的响应。

2.通过响应曲线观测特征参量?和?n对二阶系统性能的影响。 3.熟练掌握系统的稳定性的判断方法。 二、基础知识及MATLAB函数 1. 基础知识

时域分析法直接在时间域中对系统进行分析,可以提供系统时间响应的全部信息,具有直观、准确的特点。为了研究控制系统的时域特性,经常采用瞬态响应(如阶跃响应、脉冲响应和斜坡响应)。本次实验从分析系统的性能指标出发,给出了在MATLAB环境下获取系统时域响应和分析系统的动态性能和稳态性能的方法。

用MATLAB求系统的瞬态响应时,将传递函数的分子、分母多项式的系数分别以s的降幂排列写为两个数组num、den。由于控制系统分子的阶次m一般小于其分母的阶次n,所以num中的数组元素与分子多项式系数之间自右向左逐次对齐,不足部分用零补齐,缺项系数也用零补上。

用MATLAB求控制系统的瞬态响应 阶跃响应

求系统阶跃响应的指令有:

step(num,den) 时间向量t的范围由软件自动设定,阶跃响应曲线随即绘出

step(num,den,t) 时间向量t的范围可以由人工给定(例如t=0:0.1:10) [y,x]=step(num,den) 返回变量y为输出向量,x为状态向量

在MATLAB程序中,先定义num,den数组,并调用上述指令,即可生成单位阶跃输入信号下的阶跃响应曲线图。

考虑下列系统:

C(s)25?2 R(s)s?4s?25该系统可以表示为两个数组,每一个数组由相应的多项式系数组成,并且以s的降幂排列。则matlab的调用语句:

num=[0 0 25]; %定义分子多项式 den=[1 4 25]; %定义分母多项式

step(num,den) %调用阶跃响应函数求取单位阶跃响应曲线 grid %画网格标度线

xlabel(‘t/s’),ylabel(‘c(t)’) %给坐标轴加上说明 title(‘Unit-step Respinse of G(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’。

图2-1 二阶系统的单位阶跃响应 图2-2 定义时间范围的单位阶跃响应 若要绘制系统t在指定时间(0-10s)内的响应曲线,则用以下语句:

num=[0 0 25]; den=[1 4 25]; t=0:0.1:10;

step(num,den,t)

即可得到系统的单位阶跃响应曲线在0-10s间的部分,如图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 表示脉冲响应进行计算的时间 例:试求下列系统的单位脉冲响应:

C(s)1?G(s)?2 R(s)s?0.2s?1在matlab中可表示为

num=[0 0 1]; den=[1 0.2 1]; impulse(num,den) grid

title(‘Unit-impulse Response of G(s)=1/(s^2+0.2s+1)’) 由此得到的单位脉冲响应曲线如图2-3所示。 ② 求脉冲响应的另一种方法

应当指出,当初始条件为零时,G (s)的单位脉冲响应与sG(s)的单位阶跃响应相同。考虑在上例题中求系统的单位脉冲响应,因为对于单位脉冲输入量,R(s)=1所以

C(s)1s1?C(s)?G(s)?2?2? R(s)s?0.2s?1s?0.2s?1s因此,可以将G(s)的单位脉冲响应变换成sG(s)的单位阶跃响应。

向MATLAB输入下列num和den,给出阶跃响应命令,可以得到系统的单位脉冲响应曲线如图2-4所示。

num=[0 1 0]; den=[1 0.2 1]; step(num,den) grid

title(‘Unit-step Response of sG(s)=s/(s^2+0.2s+1)’)

图2-3 二阶系统的单位脉冲响应 图2-4 单位脉冲响应的另一种表示法

斜坡响应

MATLAB没有直接调用求系统斜坡响应的功能指令。在求取斜坡响应时,通常利用阶跃响应的指令。基于单位阶跃信号的拉氏变换为1/s,而单位斜坡信号的拉氏变换为1/s2。因此,当求系统G(s)的单位斜坡响应时,可以先用s除G(s),再利用阶跃响应命令,就能求出系统的斜坡响应。

例如,试求下列闭环系统的单位斜坡响应。

C(s)1?2R(s)s?s?1

对于单位斜坡输入量,R(s)=1/s2 ,因此

C(s)?

1111???s2?s?1s2(s2?s?1)ss

在MATLAB中输入以下命令,得到如图2-5所示的响应曲线:

num=[0 0 0 1]; den=[1 1 1 0]; step(num,den)

title(‘Unit-Ramp Response Cuve for System G(s)=1/(s^2+s+1)’)

图2-5 单位斜坡响应

2. 特征参量?和?n对二阶系统性能的影响 标准二阶系统的闭环传递函数为:

2?nC(s)? 2R(s)s2?2??ns??n二阶系统的单位阶跃响应在不同的特征参量下有不同的响应曲线。 ?对二阶系统性能的影响

设定无阻尼自然振荡频率?n?1(rad/s),考虑5种不同的?值:?=0,0.25,0.5,1.0和2.0,利用MATLAB对每一种?求取单位阶跃响应曲线,分析参数?对系统的影响。 为便于观测和比较,在一幅图上绘出5条响应曲线(采用“hold”命令实现)。 num=[0 0 1]; den1=[1 0 1]; den2=[1 0.5 1]; den3=[1 1 1]; den4=[1 2 1]; den5=[1 4 1];

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-Response Curves for G(s)=1/[s^2+2(zeta)s+1]') 由此得到的响应曲线如图2-6所示。

图2-6 ?不同时系统的响应曲线

图2-7 ?n不同时系统的响应曲线

?n对二阶系统性能的影响

同理,设定阻尼比??0.25时,当?n分别取1,2,3时,利用MATLAB求取单位阶跃响应曲线,分析参数?n对系统的影响。

num1=[0 0 1]; den1=[1 0.5 1]; t=0:0.1:10;

step(num1,den1,t); grid; hold on

text(3.1,1.4,’wn=1’)

num2=[0 0 4]; den2=[1 1 4]; step(num2,den2,t); hold on

text(1.7,1.4,’wn=2’)

num3=[0 0 9]; den3=[1 1.5 9]; step(num3,den3,t); hold on text(0.5,1.4,’wn=3’)

由此得到的响应曲线如图2-7所示。 3. 系统稳定性判断

1)直接求根判稳roots()

控制系统稳定的充要条件是其特征方程的根均具有负实部。因此,为了判别系统的稳定性,就要求出系统特征方程的根,并检验它们是否都具有负实部。MATLAB中对多项式求根的函数为roots()函数。

若求以下多项式的根s4?10s3?35s2?50s?24,则所用的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=

1 35 24 10 50 0 30 24 0 42 0 0 24 0 0 info=

[ ]

由系统返回的routh表可以看出,其第一列没有符号的变化,系统是稳定的。 3)赫尔维茨判据hurwitz()

赫尔维茨的调用格式为:H=hurwitz(den)。该函数的功能是构造hurwitz矩阵。其中,den为系统的分母多项式系数向量。

以上述多项式为例,由hurwitz判据判定系统的稳定性。

>>den=[1,10,35,50,24]; H=hurwitz(den) H=

10 50 0 0 1 35 24 0 0 10 50 0 0 1 35 24

由系统返回的hurwitz矩阵可以看出,系统是稳定的。与前面的分析结果完全一致。 注意:routh()和hurwitz()不是MATLAB中自带的功能函数,须加载ctrllab3.1文件夹(自编)才能运行。

三、实验内容

1.观察函数step( )和impulse( )的调用格式,假设系统的传递函数模型为 s2?3s?7 G(s)?4

s?4s3?6s2?4s?1可以用几种方法绘制出系统的阶跃响应曲线?试分别绘制。 2.对典型二阶系统

?n2G(s)?2

s?2??ns??n21)分别绘出?n?2(rad/s),?分别取0,0.25,0.5,1.0和2.0时的单位阶跃响应曲线,分析参数?对系统的影响,并计算?=0.25时的时域性能指标?p,tr,tp,ts,ess。

2)绘制出当?=0.25, ?n分别取1,2,4,6时单位阶跃响应曲线,分析参数?n对系统的影响。

3.系统的特征方程式为2s4?s3?3s2?5s?10?0,试用三种判稳方式判别该系统的稳定性。

4.单位负反馈系统的开环模型为

G(s)?K

(s?2)(s?4)(s2?6s?25)试分别用劳斯稳定判据和赫尔维茨稳定判据判断系统的稳定性,并求出使得闭环系统稳定的K值范围。

四、实验报告

1.根据内容要求,写出调试好的MATLAB语言程序,及对应的MATLAB运算结果。 2. 记录各种输出波形,根据实验结果分析参数变化对系统的影响。 3.总结判断闭环系统稳定的方法,说明增益K对系统稳定性的影响。 4.写出实验的心得与体会。 五、预习要求

1. 预习实验中基础知识,运行编制好的MATLAB语句,熟悉MATLAB指令及step( )和impulse( )函数。

2. 结合实验内容,提前编制相应的程序。

3.思考特征参量?和?n对二阶系统性能的影响。

4.熟悉闭环系统稳定的充要条件及学过的稳定判据。

实验三 线性系统的根轨迹

一、实验目的

1. 熟悉MATLAB用于控制系统中的一些基本编程语句和格式。 2. 利用MATLAB语句绘制系统的根轨迹。 3. 掌握用根轨迹分析系统性能的图解方法。 4. 掌握系统参数变化对特征根位置的影响。 二、基础知识及MATLAB函数

根轨迹是指系统的某一参数从零变到无穷大时,特征方程的根在s平面上的变化轨迹。这个参数一般选为开环系统的增益K。课本中介绍的手工绘制根轨迹的方法,只能绘制根轨迹草图。而用MATLAB可以方便地绘制精确的根轨迹图,并可观测参数变化对特征根位置的影响。

假设系统的对象模型可以表示为

b1sm?b2sm?1???bms?bm?1G(s)?KG0(s)?Kn

s?a1sn?1???bn?1s?an系统的闭环特征方程可以写成

1?KG0(s)?0

对每一个K的取值,我们可以得到一组系统的闭环极点。如果我们改变K的数值,则可以得到一系列这样的极点集合。若将这些K的取值下得出的极点位置按照各个分支连接起来,则可以得到一些描述系统闭环位置的曲线,这些曲线又称为系统的根轨迹。

绘制系统的根轨迹rlocus()

MATLAB中绘制根轨迹的函数调用格式为:

rlocus(num,den) 开环增益k的范围自动设定。 rlocus(num,d en,k) 开环增益k的范围人工设定。 rlocus(p,z) 依据开环零极点绘制根轨迹。 r=rlocus(num,den) 不作图,返回闭环根矩阵。 [r,k]=rlocus(num,den) 不作图,返回闭环根矩阵r和对应的开环增益向

量k。

其中,num,den分别为系统开环传递函数的分子、分母多项式系数,按s的降幂排列。K为根轨迹增益,可设定增益范围。

例3-1:已知系统的开环传递函数G(s)?K?(s?1),绘制系统的根轨迹的matlab

s3?4s2?2s?9的调用语句如下:

num=[1 1]; %定义分子多项式 den=[1 4 2 9]; %定义分母多项式 rlocus (num,den) %绘制系统的根轨迹 grid %画网格标度线

xlabel(‘Real Axis’),ylabel(‘Imaginary Axis’) %给坐标轴加上说明 title(‘Root Locus’) %给图形加上标题名 则该系统的根轨迹如图3-1(a)所示。

若上例要绘制K在(1,10)的根轨迹图,则此时的matlab的调用格式如下,对应的根轨迹如图3-1(b)所示。

num=[1 1]; den=[1 4 2 9];

k=1:0.5:10;

rlocus (num,den,k)

(a) 完整根轨迹图形 (b)特定增益范围内的根轨迹图形

图3-1 系统的根轨迹图形

1)确定闭环根位置对应增益值K的函数rlocfind()

在MATLAB中,提供了rlocfind函数获取与特定的复根对应的增益K的值。在求出的根轨迹图上,可确定选定点的增益值K和闭环根r(向量)的值。该函数的调用格式为:

[k,r]=rlocfind(num,den)

执行前,先执行绘制根轨迹命令rlocus(num,den),作出根轨迹图。执行rlocfind命令时,出现提示语句“Select a point in the graphics window”,即要求在根轨迹图上选定闭环极点。将鼠标移至根轨迹图选定的位置,单击左键确定,根轨迹图上出现“+”标记,即得到了该点的增益K和闭环根r的返回变量值。

?s2?5s?6例3-2:系统的开环传递函数为G(s)?K3,试求:(1)系统的根轨迹;2s?8s?3s?25(2)系统稳定的K的范围;(3)K=1时闭环系统阶跃响应曲线。则此时的matlab的调用格式为:

G=tf([1,5,6],[1,8,3,25]);

rlocus (G); %绘制系统的根轨迹

[k,r]=rlocfind(G) %确定临界稳定时的增益值k和对应的极点r G_c=feedback(G,1); %形成单位负反馈闭环系统

step(G_c) %绘制闭环系统的阶跃响应曲线

则系统的根轨迹图和闭环系统阶跃响应曲线如图3-2所示。

其中,调用rlocfind()函数,求出系统与虚轴交点的K值,可得与虚轴交点的K值为0.0264,故系统稳定的K的范围为K?(0.0264,?)。

2)绘制阻尼比?和无阻尼自然频率?n的栅格线sgrid( )

当对系统的阻尼比?和无阻尼自然频率?n有要求时,就希望在根轨迹图上作等?或等?n线。matlab中实现这一要求的函数为sgrid( ),该函数的调用格式为:

sgrid(?,?n) 已知?和?n的数值,作出等于已知参数的等值线。 sgrid(‘new’) 作出等间隔分布的等?和?n网格线。

例3-3:系统的开环传递函数为G(s)?1,由rlocfind函数找出能产生主导

s(s?1)(s?2)极点阻尼?=0.707的合适增益,如图3-3(a)所示。

G=tf(1,[conv([1,1],[1,2]),0]); zet=[0.1:0.2:1];wn=[1:10]; sgrid(zet,wn);hold on;rlocus(G) [k,r]=rlocfind(G)

Select a point in the graphics window selected_point = -0.3791 + 0.3602i k =

0.6233 r =

-2.2279 -0.3861 + 0.3616i -0.3861 - 0.3616i

(a)根轨迹图形 (b)K=1时的阶跃响应曲线

图3-2 系统的根轨迹和阶跃响应曲线

(a)根轨迹上点的选择 (b)闭环系统阶跃响应 同时我们还可以绘制出该增益下闭环系统的阶跃响应,如图 3-3(b)所示。事实上,等?图3-3 由根轨迹技术设计闭环系统

或等?n线在设计系补偿器中是相当实用的,这样设计出的增益K=0.6233将使得整个系统的阻尼比接近0.707。由下面的MATLAB语句可以求出主导极点,即r(2.3)点的阻尼比和自然频率为

G_c=feedback(G,1); step(G_c)

dd0=poly(r(2:3,:));

wn=sqrt(dd0(3));zet=dd0(2)/(2*wn);[zet,wn] ans =

0.7299 0.5290

我们可以由图3-3(a)中看出,主导极点的结果与实际系统的闭环响应非常接近,设计的效果是令人满意的。

3)基于根轨迹的系统设计及校正工具rltool

matlab中提供了一个系统根轨迹分析的图形界面,在此界面可以可视地在整个前向通路中添加零极点(亦即设计控制器),从而使得系统的性能得到改善。实现这一要求的工具为rltool,其调用格式为:

rltool 或 rltool(G)

例3-4:单位负反馈系统的开环传递函数

G(s)?s?0.125

s2(s?5)(s?20)(s?50)输入系统的数学模型,并对此对象进行设计。

den=[conv([1,5],conv([1,20],[1,50])),0,0]; num=[1,0.125]; G=tf(num,den); rltool(G)

该命令将打开rltool工具的界面,显示原开环模型的根轨迹图,如图3-4(a)所示。单击该图形菜单命令Analysis中的Response to Step Command 复选框,则将打开一个新的窗口,绘制系统的闭环阶跃响应曲线,如图3-4(b)所示。可见这样直接得出的系统有很强的振荡,就需要给这个对象模型设计一个控制器来改善系统的闭环性能。

a)原对象模型的根轨迹 (b)闭环系统阶跃响应

图3-4 根轨迹设计工具界面及阶跃响应分析

单击界面上的零点和极点添加的按钮,可以给系统添加一对共轭复极点,两个稳定零点,调整它们的位置,并调整增益的值,通过观察系统的闭环阶跃响应效果,则可以试凑地设计出一个控制器:

GC(s)?181307.29(s?38.31)(s?10.26)

(s?61.3?j0.84)(s?61.3?j0.84)在此控制器下分别观察系统的根轨迹和闭环系统阶跃响应曲线。可见,rltool可以作为系统综合的实用工具,在系统设计中发挥作用。

三、实验内容

1.请绘制下面系统的根轨迹曲线

G(s)?G(s)?G(s)?K

s(s?2s?2)(s2?6s?13)2K(s?12)

(s?1)(s2?12s?100)(s?10)K(0.05?1)

s(0.0714s?1)(0.012s2?0.1s?1)同时得出在单位阶跃负反馈下使得闭环系统稳定的K值的范围。

2. 在系统设计工具rltool界面中,通过添加零点和极点方法,试凑出上述系统,并观察增加极、零点对系统的影响。

四、实验报告

1.根据内容要求,写出调试好的MATLAB语言程序,及对应的结果。 2. 记录显示的根轨迹图形,根据实验结果分析根轨迹的绘制规则。

3. 根据实验结果分析闭环系统的性能,观察根轨迹上一些特殊点对应的K值,确定闭环系统稳定的范围。

4.根据实验分析增加极点或零点对系统动态性能的影响。 5.写出实验的心得与体会。 五、预习要求

1. 预习实验中的基础知识,运行编制好的MATLAB语句,熟悉根轨迹的绘制函数rlocus()及分析函数rlocfind(),sgrid()。

2. 预习实验中根轨迹的系统设计工具rltool,思考该工具的用途。

3. 掌握用根轨迹分析系统性能的图解方法,思考当系统参数K变化时,对系统稳定性的影响。

4.思考加入极点或零点对系统动态性能的影响。

实验四 线性系统的频域分析

一、实验目的

1.掌握用MATLAB语句绘制各种频域曲线。 2.掌握控制系统的频域分析方法。 二、基础知识及MATLAB函数

频域分析法是应用频域特性研究控制系统的一种经典方法。它是通过研究系统对正弦信号下的稳态和动态响应特性来分析系统的。采用这种方法可直观的表达出系统的频率特性,分析方法比较简单,物理概念明确。

1.频率曲线主要包括三种:Nyquist图、Bode图和Nichols图。 1)Nyquist图的绘制与分析

MATLAB中绘制系统Nyquist图的函数调用格式为:

nyquist(num,den) 频率响应w的范围由软件自动设定 nyquist(num,den,w) 频率响应w的范围由人工设定

[Re,Im]= nyquist(num,den) 返回奈氏曲线的实部和虚部向量,不作图

例4-1:已知系统的开环传递函数为G(s)?2s?6,试绘制Nyquist图,并32s?2s?5s?2判断系统的稳定性。

num=[2 6]; den=[1 2 5 2];

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

极点的显示结果及绘制的Nyquist图如图4-1所示。由于系统的开环右根数P=0,系统的Nyquist曲线没有逆时针包围(-1,j0)点,所以闭环系统稳定。

p =

-0.7666 + 1.9227i -0.7666 - 1.9227i -0.4668

若上例要求绘制??(10,10)间的Nyquist图,

?23图4-1 开环极点的显示结果及Nyquist图

则对应的MATLAB语句为:

num=[2 6]; den=[1 2 5 2];

w=logspace(-1,1,100); 即在10-1和101之间,产生100个等距离的点 nyquist(num,den,w)

2)Bode图的绘制与分析

系统的Bode图又称为系统频率特性的对数坐标图。Bode图有两张图,分别绘制开环频率特性的幅值和相位与角频率?的关系曲线,称为对数幅频特性曲线和对数相频特性曲线。

MATLAB中绘制系统Bode图的函数调用格式为:

bode(num,den) 频率响应w的范围由软件自动设定 bode(num,den,w) 频率响应w的范围由人工设定

[mag,phase,w]=bode(num,den,w) 指定幅值范围和相角范围的伯德图

例4-2:已知开环传递函数为G(s)?30(0.2s?1),试绘制系统的伯德图。 2s(s?16s?100)num=[0 0 15 30]; den=[1 16 100 0]; w=logspace(-2,3,100); bode(num,den,w) grid

绘制的Bode图如图4-2(a)所示,其频率范围由人工选定,而伯德图的幅值范围和相角

范围是自动确定的。当需要指定幅值范围和相角范围时,则需用下面的功能指令:

[mag,phase,w]=bode(num,den,w)

图4-2(a) 幅值和相角范围自动确定的Bode图

图4-2(b) 指定幅值和相角范围的Bode图

mag,phase是指系统频率响应的幅值和相角,由所选频率点的w值计算得出。其中,幅值的单位为dB,它的算式为magdB=20lg10(mag)。

指定幅值范围和相角范围的MATLAB调用语句如下,图形如图4-2(b)所示。

num=[0 0 15 30]; den=[1 16 100 0]; w=logspace(-2,3,100);

[mag,phase,w]=bode(num,den,w); %指定Bode图的幅值范围和相角范围 subplot(2,1,1); %将图形窗口分为2*1个子图,在第1个子图处绘制图形

semilogx(w,20*log10(mag)); %使用半对数刻度绘图,X轴为log10刻度,Y轴为线

性刻度

grid on

xlabel(‘w/s^-1’); ylabel(‘L(w)/dB’);

title(‘Bode Diagram of G(s)=30(1+0.2s)/[s(s^2+16s+100)]’);

subplot(2,1,2);%将图形窗口分为2*1个子图,在第2个子图处绘制图形 semilogx(w,phase); grid on

xlabel(‘w/s^-1’); ylabel(‘?(0)’);

注意:半Bode图的绘制可用semilgx函数实现,其调用格式为semilogx(w,L),其中L=20*log10(abs(mag))。

3)Nichols图的绘制

在MATLAB中绘制Nichols图的函数调用格式为:

[mag,phase,w]=nichols(num,den,w) Plot(phase,20*log10(mag)) 例4-3:单位负反馈的开环传递函数为G(s)?10,绘制Nichols图。对应的32s?3s?9sMATLAB语句如下,所得图形如图4-3所示:

num=10; den=[1 3 9 0]; w=logspace(-1,1,500);

[mag,phase]=nichols(num,den,w); plot(phase,20*log10(mag))

ngrid %绘制nichols图线上的网格 2.幅值裕量和相位裕量

幅值裕量和相位裕量是衡量控制系统相对稳定性的重要指标,需要经过复杂的运算求取。应用MATLAB功能指令可以方便地求解幅值裕量和相位裕量。

其MATLAB调用格式为:

图4-3 Nichols图 [Gm,Pm,Wcg,Wcp]=margin(num,den)

其中,Gm,Pm分别为系统的幅值裕量和相位裕量,而Wcg,Wcp分别为幅值裕量和相位裕量处相应的频率值。

另外,还可以先作bode图,再在图上标注幅值裕量Gm和对应的频率Wcg,相位裕量Pm和对应的频率Wcp。其函数调用格式为:

margin(num,den)

例4-4:对于例4-3中的系统,求其稳定裕度,对应的MATLAB语句如下:

num=10; den=[1 3 9 0];

[gm,pm,wcg,wcp]=margin(num,den); gm,pm,wcg,wcp gm = 2.7000 pm = 64.6998 wcg = 3.0000 wcp = 1.1936

如果已知系统的频域响应数据,还可以由下面的格式调用函数:

[Gm,Pm,Wcg,Wcp]=margin(mag,phase,w)

其中(mag,phase,w)分别为频域响应的幅值、相位与频率向量。 三、实验内容 1.典型二阶系统

2?nG(s)?2 2s?2??ns??n绘制出?n?6,??0.1,0.3,0.5,0.8,2的bode图,记录并分析?对系统bode图的影响。

2.系统的开环传递函数为

G(s)?G(s)?10

s(5s?1)(s?5)28(s?1)

s(s?15)(s2?6s?10)2G(s)?4(s/3?1)

s(0.02s?1)(0.05s?1)(0.1s?1)绘制系统的Nyquist曲线、Bode图和Nichols图,说明系统的稳定性,并通过绘制阶跃响应曲线验证。

3.已知系统的开环传递函数为G(s)?s?1。求系统的开环截止频率、穿越频率、

s2(0.1s?1)幅值裕度和相位裕度。应用频率稳定判据判定系统的稳定性。

四、实验报告

1.根据内容要求,写出调试好的MATLAB语言程序,及对应的结果。 2. 记录显示的图形,根据实验结果与各典型环节的频率曲线对比分析。

3. 记录并分析?对二阶系统bode图的影响。

4.根据频域分析方法分析系统,说明频域法分析系统的优点。 5.写出实验的心得与体会。 五、预习要求

1. 预习实验中的基础知识,运行编制好的MATLAB语句,熟悉绘制频率曲线的三种图形函数nyquist()、bode()和nichols()。

2. 掌握控制系统的频域分析方法,理解系统绝对稳定性和相对稳定性的判断方法。

实验五 线性系统串联校正

一、实验目的

1.熟练掌握用MATLAB语句绘制频域曲线。 2.掌握控制系统频域范围内的分析校正方法。

3.掌握用频率特性法进行串联校正设计的思路和步骤。 二、基础知识

控制系统设计的思路之一就是在原系统特性的基础上,对原特性加以校正,使之达到要求的性能指标。最常用的经典校正方法有根轨迹法和频域法。而常用的串联校正装置有超前校正、滞后校正和超前滞后校正装置。本实验主要讨论在MATLAB环境下进行串联校正设计。

1.基于频率法的串联超前校正

超前校正装置的主要作用是通过其相位超前效应来改变频率响应曲线的形状,产生足够大的相位超前角,以补偿原来系统中元件造成的过大的相位滞后。因此校正时应使校正装置的最大超前相位角出现在校正后系统的开环截止频率?c处。

例5-1:单位反馈系统的开环传递函数为G(s)?K,试确定串联校正装置的特性,s(s?1)0使系统满足在斜坡函数作用下系统的稳态误差小于0.1,相角裕度r?45。

解:根据系统静态精度的要求,选择开环增益

1s2k1?s(s?1)?0.1?K?10

ess?LimsE(s)?Lims?s?0s?0取K?12,求原系统的相角裕度。

>>num0=12; den0=[2,1,0]; w=0.1:1000; [gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1]

margin(num0,den0) %计算系统的相角裕

度和幅值裕度,并绘制出Bode图 grid; ans =

Inf 11.6548 Inf 2.4240 由结果可知,原系统相角裕度r?11.6,?c?2.4rad/s,不满足指标要求,系统的Bode图如图5-1

0图5-1 原系统的Bode图

所示。考虑采用串联超前校正装置,以增加系统的相角裕度。

确定串联装置所需要增加的超前相位角及求得的校正装置参数。

?c????0??,??450,?0为原系统的相角裕度,?取50,令?m??c,。

??1?sin?m(1?sin?m),

>>e=5; r=45; r0=pm1; phic=(r-r0+e)*pi/180;

alpha=(1+sin(phic))/(1-sin(phic));

将校正装置的最大超前角处的频率?m作为校正后系统的剪切频率?c。则有:

20lgGc(j?c)G0(j?c)?0?G0(j?c)?1?

即原系统幅频特性幅值等于?20lg?时的频率,选为?c。

根据?m=?c,求出校正装置的参数T。即T?1?c?。

[il,ii]=min(abs(mag1-1/sqrt(alpha)));

wc=w( ii); T=1/(wc*sqrt(alpha)); numc=[alpha*T,1]; denc=[T,1];

[num,den]=series(num0,den0,numc,denc); %原系统与校正装置串联

[gm,pm,wcg,wcp]=margin(num,den); %返回系统新的相角裕度和幅值裕度 printsys(numc,denc) %显示校正装置的传递函数 disp(’校正之后的系统开环传递函数为:’);

printsys(num,den) %显示系统新的传递函数

[mag2,phase2]=bode(numc,denc,w); %计算指定频率内校正装置的相角范围和幅

值范围

[mag,phase]=bode(num,den,w); %计算指定频率内系统新的相角范围和幅值

范围

subplot(2,1,1);semilogx(w,20*log10(mag),w,20*log10(mag1),’--’,w,20*log10(mag2),’-.’)

;

grid; ylabel(’幅值(db)’); title(’--Go,-Gc,GoGc’);

subplot(2,1,2); semilogx(w,phase,w,phase1,’--’,w,phase2,’-’,w,(w-180-w),’:’); grid; ylabel(’相位(0)’); xlabel(’频率(rad/sec)’);

title([‘校正前:幅值裕量=’,num2str(20*log10(gm1)),’db’,’相位裕量

=’,num2str(pm1),’0’;

’校正后:幅值裕量=’,num2str(20*log10(gm)),’db’,’相位裕量=’,num2str(pm),’0’]);

2.基于频率法的串联滞后校正 滞后校正装置将给系统带来滞后相角。引入滞后装置的真正目的不是为了提供一个滞后相角,而是要使系统增益

图5-2 系统校正前后的传递函数及Bode图

适当衰减,以便提高系统的稳态精度。

滞后校正的设计主要是利用它的高频衰减作用,降低系统的截止频率,以便能使得系统获得充分的相位裕量。

例5-2:单位反馈系统的开环传递函数为G(s)?K,试确定串联校正装

s(0.1s?1)(0.2s?1)0置的特性,使校正后系统的静态速度误差系数等于30/s,相角裕度r?40,幅值裕量不小于10dB,截止频率不小于2.3rad/s。

解:根据系统静态精度的要求,选择开环增益

Kv?LimsG(s)?Lims?s?0s?0K?30?K?30

s(0.1s?1)(0.2s?1)利用MATLAB绘制原系统的bode图和相应的稳定裕度。 num0=30;

den0=conv([1,0],conv([0.1,1],[0.2,1])); w=logspace(-1,1.2);

[gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1] margin(num0,den0) grid; ans =

0.5000 -17.2390 7.0711 9.7714

由结果可知,原系统不稳定,且截止频率远大于要求值。系统的Bode图如图5-3所示,考虑采用串联超前校正无法满足要求,故选用滞后校正装置。

图5-3 原系统的Bode图

根据对相位裕量的要求,选择相角为???1800????(??50~100,??400)处的频率作为校正后系统的截止频率?c。确定原系统在新?c处的幅值衰减到0dB时所需的衰减量为

?20lg?。一般取校正装置的转折频率分别为

1111。 ?(~)?c和

T510?Te=10; r=40; r0=pm1; phi=(-180+r+e);

[il,ii]=min(abs(phase1-phi));wc=w( ii); beit=mag1(ii); T=10/wc; numc=[ T,1]; denc=[ beit*T,1];

[num,den]=series(num0,den0,numc,denc); %原系统与校正装置串联

[gm,pm,wcg,wcp]=margin(num,den); %返回系统新的相角裕度和幅值裕度 printsys(numc,denc) %显示校正装置的传递函数 disp(’校正之后的系统开环传递函数为:’);

printsys(num,den) %显示系统新的传递函数

[mag2,phase2]=bode(numc,denc,w); %计算指定频率内校正装置的相角范围和幅

值范围

[mag,phase]=bode(num,den,w); %计算指定频率内系统新的相角范围和幅值

范围

subplot(2,1,1);semilogx(w,20*log10(mag),w,20*log10(mag1),’--’,w,20*log10(mag2),’-

.’);

grid; ylabel(’幅值(db)’); title(’--Go,-Gc,GoGc’);

subplot(2,1,2); semilogx(w,phase,w,phase1,’--’,w,phase2,’-’,w,(w-180-w),’:’); grid; ylabel(’相位(0)’); xlabel(’频率(rad/sec)’);

title([‘校正前:幅值裕量=’,num2str(20*log10(gm1)),’db’,’相位裕量

=’,num2str(pm1),’0’;

’校正后:幅值裕量=’,num2str(20*log10(gm)),’db’,’相位裕量

=’,num2str(pm),’0’]);

图5-4 系统校正前后的传递函数及Bode图

3.基于频率法的串联滞后-超前校正

滞后-超前校正装置综合了超前校正和滞后校正的优点,从而改善了系统的性能。 例5-3:单位反馈系统的开环传递函数为G(s)?K,若要求相角裕度r?450,

s(s?1)(0.4s?1)幅值裕量大于10dB,Kv?10(1/s),试确定串联校正装置的特性。

解:根据系统静态精度的要求,选择开环增益

Kv?LimsG(s)?K?10

s?0利用MATLAB绘制原系统的bode图和相应的稳定裕度,如图5-5所示。 >>num0=10; den0=conv([1,0],conv([1,1],[0.4,1])); w=logspace(-1,1.2); [gm1,pm1,wcg1,wcp1]=margin(num0,den0); [mag1,phase1]=bode(num0,den0,w); [gm1,pm1,wcg1,wcp1]

margin(num0,den0) grid; ans =

0.3500 -24.1918 1.5811 2.5520

由结果可以看出,单级超前装置难以满足要求,故设计一个串联滞后-超前装置。

选择原系统?1800的频率为新的截止频率?c,则

图5-5 原系统的Bode图

可以确定滞后部分的T2和?。其中

111??c?T2?,??10。由原系统,?c?1.58rad/s,此时的幅值为9.12dB。 T2100.1?c根据校正后系统在新的幅值交接频率处的幅值必须为0dB,确定超前校正部分的T1。在原系统(?c,?20lgG0(j?c)),即(1.58,-9.12)处画一条斜率为20dB/dec的直线,此直线与0dB线及-20dB线的交点分别为超前校正部分的两个转折频率。

wc=1.58; beit=10; T2=10/wc;lw=20*log10(w/1.58)-9.12; [il,ii]=min(abs(lw+20)); w1=w(ii); numc1=[1/w1,1];denc1=[1/ (beit*w1),1]; numc2=[ T2,1];denc2=[ beit*T2,1];

[numc,denc]=series(numc1,denc1,numc2,denc2);

[num,den]=series(num0,den0,numc,denc);printsys(numc,denc) disp(’校正之后的系统开环传递函数为:’);printsys(num,den) [mag2,phase2]=bode(numc,denc,w); [mag,phase]=bode(num,den,w);

[gm,pm,wcg,wcp]=margin(num,den);

subplot(2,1,1);semilogx(w,20*log10(mag),w,20*log10(mag1),’--’,w,20*log10(mag2),’-.’);

grid; ylabel(’幅值(db)’); title(’--Go,-Gc,GoGc’);

subplot(2,1,2); semilogx(w,phase,w,phase1,’--’,w,phase2,’-’,w,(w-180-w),’:’); grid; ylabel(’相位(0)’); xlabel(’频率(rad/sec)’);

title([‘校正后:幅值裕量=’,num2str(20*log10(gm)),’db’,’相位裕量

=’,num2str(pm),’0’]);

图5-6 系统校正前后的传递函数及Bode图

三、实验内容

1.某单位负反馈控制系统的开环传递函数为G(s)?

4,试设计一超前校正装置,s(s?1)使校正后系统的静态速度误差系数Kv?20s?1,相位裕量??500,增益裕量20lgKg?10dB。

2.某单位负反馈控制系统的开环传递函数为G(s)?k,试设计一个合适的滞后校(s?1)3K,试设计一滞后-超前

s(s?1)(s?2)0正网络,使系统阶跃响应的稳态误差约为0.04,相角裕量约为450。

3.某单位负反馈控制系统的开环传递函数为G(s)?校正装置,使校正后系统的静态速度误差系数Kv?10s?1,相位裕量??50,增益裕量

20lgKg?10dB。

四、实验报告要求

1.用MATLAB绘制原系统的Bode图,求出原系统的相位及幅值裕量。 2.根据求出的稳定裕度情况,判定采用何种校正网络来校正原有系统。 3.根据采用的校正网络类型,求出各校正环节的传递函数。

4.利用MATLAB程序校验校正后系统的稳定裕度,检验设计是否满足要求。

5.用SIMULINK 创建未校正系统的模块图,观察其超调量,并将校正环节串入原系统,观察其超调量。

6.写出实验的心得与体会。 五、预习要求

1.熟悉基于频率法的串联校正装置的校正设计过程。 2.熟练利用MATLAB绘制系统频域特性的语句。

实验六 数字PID控制

一、实验目的

1.了解PID控制器中P、I、D三种基本控制作用对控制系统性能的影响。 2.进行PID控制器参数工程整定技能训练。 二、实验原理

比例-积分-微分(PID)控制器是工业控制中常见的一种控制装置,它广泛用于化工、冶金、机械等工业过程控制系统中。PID有几个重要的功能:提供反馈控制;通过积分作用消除稳态误差;通过微分作用预测将来以减小动态偏差。PID控制器作为最常用的控制器,在控制系统中所处的位置如图6-1所示。

R(s) ? e - Gc(s) G(s) C(s)图6-1 PID控制系统

PID控制器的传递函数表达式为:Gc(s)?Kp(1?

1?Kds) KisPID控制器的整定就是针对具体的控制对象和控制要求调整控制器参数,求取控制质量最好的控制器参数值。即确定最适合的比例系数Kp、积分时间TI和微分时间TD。

1. PID控制器模型的建立

按图6-2组成PID控制器,其传递函数表达式为Gc(s)?Kp(1?1KdTds?)。对于实际的Tis1?Tds微分环节,可将分子、分母同除以Td,传递函数变为:Gc(s)?Kp[1?Ks1?d],如果要TiS1?sTd改变PID的参数Td,Kd,Ti,Kp,只要改变模块的分子、分母多项式的系数即可。

图6-2 PID控制器的实现

图6-2中,GAIN模块的增益值对应于Kp参数,积分环节和微分环节,可以通过传函模块来实现。在Transfer–Fcn模块中,令b0?Kd,b1?0,a0?1,a1?1Td,可得微分控制器;在Transfer-Fcn1模块中,令b0?0,b1?1,a0?Ti,a1?0,可得积分控制器。然后据Td,Kd,Ti,Kp参

数调整要求,修改对应的b0,b1,a0,a1值,对系统进行整定。

1. PID控制器的参数整定

采用根据经验公式和实践相结合的方法进行PID控制器的参数整定。 (1)衰减曲线经验公式法

在闭环控制系统中,先将控制器变为纯比例作用,并将比例度预置在较大的数值上。在达到稳定后,用改变给定值的方法加入阶跃干扰,观察被控变量曲线的衰减比,然后从大到小改变比例度,直至出现4:1衰减比为止,记下此时的比例度?s(称为4:1衰减比例度),从曲线上得到衰减周期Ts。然后根据经验公式,求出控制器的参数整定值。

比例带系数 ??0.8?s 积分时间 TI?0.3Ts 微分时间 TD?0.1Ts (2)实践整定法

先用经验公式法初定PID参数,然后,微调各参数并观察系统响应变化,直至得到较理想的控制性能。

例:已知系统框图如图6-3所示,采用PID控制器,使得控制系统得性能达到最优。

PID - s?4(s?3)(s?2)(s?1)3图6-3 PID控制器参数整定

解:(1)建模

首先建立加入PID控制器的系统模型,框图如图6-4所示,图中Transfer Fcn对应积分环节,Transfer Fcn1对应微分环节。在未加PID控制器的情况下,获取输出波形如图6-5所示。图中,系统的稳态误差较大,非理想状态。

图6-4 PID控制器的建模

(2)整定

根据衰减曲线经验公式法,首先令积分环节和微分环节模块不发生作用,如图6-4所示,单独调节比例参数,大约在K=1.6时,出现了4:1的衰减比,此时,根据经验公式换算相关参数,直接设定积分和微分环节的参数,微调,直到达到最佳状态为止。整定好的PID控制系统如图6-6所示,示波器的输出波形如图6-7所

图6-5 未加PID控制器的输出波形

示。

图6-6 PID控制参数整定结果

(3)结果分析

最后达到系统的稳态误差为0,超调量为4%左右,接近理想系统的输出状态。

三、实验内容

对如图6-8所示的系统,整定各PID参数,使得控制系统性能达到最优(即系统稳态误差最小、超调量小、调整时间短等)。

图6-7 PID控制器整定后的输出波形

图6-8 PID控制系统图

四、实验报告

1.写出控制得到的三组最优Td,Kd,Ti,Kp值,要求三个环节都用上,并画出对应的响应

曲线。

2.指出这三种系统分别为几型系统。

3.分别画出P、I、D三种控制器单独作用下的输出波形图,并分析三种控制器对系统性能的影响。

4.结合实验中遇到的问题谈谈自己的心得和体会。 五、预习要求

1.PD和PI控制器各适用于什么场合?它们各有什么优、缺点? 2.PID控制器的优点?如何实现PID参数整定?