第4章 基于MATLAB的控制系统计算机辅助分析
控制系统的时域分析
一.自动控制的一些基本概念
1.超调量σ%
sigma=^(-pi*zeta/(1-(zeta)^2)^(1/2))
zeta=((log(1/sigma))^2/((pi)^2+(log(1/sigma))^2))^(1/2)
【例】已知二阶系统的超调量σ%=20%,求系统的阻尼比ξ。
【解】程序:
sigma=;
zeta=((log(1/sigma))^2/((pi)^2+(log(1/sigma))^2))^(1/2)
zeta =
即求得系统阻尼比ξ=
【例】已知二阶系统的ξ=,求系统的超调量σ%。
【解】程序:
zeta=;
sigma=^(-pi*zeta/(1-(zeta)^2)^(1/2))
sigma =
即求得系统超调量σ%=%。
2.峰值时间tp
3.调节时间ts
二.MATLAB函数指令方式下的时域阶跃响应分析
函数命令调用格式如下:
step(sys)
step(sys,t)
step(sys1,sys2,…sysN)
step(sys1,sys2,…sysN,t)
[y,t,x]=step(sys)
【例】已知一个单位反馈系统框图如图所示,其中
函数feedback( )可求取反馈控制系统的闭环传递函数,
该函数的调用格式为:G=feedback( G1,G2,Sign)
Sign=1表示正反馈,Sign=-1表示负反馈;
G1,G2分别为前向通道和反馈通道传递函数
加入以下MATLAB语句可以求系统在阶跃函数作用下的给定稳态误差终值еsr:
Transfer function:
2 s^3 + s^2 + s
2 s^3 + s^2 + s +
运行结果:
MATLAB中,函数dcgain( )可求系统稳态误差的终值。该函数的调用格式为: esr=dcgain(G)。
若 ,则结果esr为求系统给定稳态误差终值;
若 ,则结果esr为求系统扰动稳态误差终值;
补充知识:MATLAB基础Ⅲ
一.MATLAB中的图形工具 LTI Viewer
以【例】系统为例来说明怎样使用MATLAB中,LTI Viewer求系统的各种性能指标。
①在MATLAB命令框输入以下命令:
或运行【例】中的M文件
系统的阶跃响应曲线。
② 在MATLAB提示符》后,输入ltiview,即可启动该图形软件,显示窗口如图所示。
从File的下拉菜单中选中→import选项选择需要仿真的系统。
选择窗口中的Lsys系统,并用鼠标点击OK
在画面中点击鼠标右键,选择
“Characteristics”选项,再选择
“Peak Time”项可得阶跃响应曲线中的
峰值时间为。
System:Lsys
Peak amplitued:
Overshoot(%):
At time:
在画面中点击鼠标右键,选择“Characteristics”选项,再选择“Settling Time”、“Rise Time”、“Steady State”选项可得阶跃响应曲线中的调节时间为,上升时间为,稳态值为1(稳态误差为0)。
本例中,通过点击“Edit”菜单,在弹出的下拉菜单中选择“Viewer Preferences”项,设定阶跃响应的上升时间范围为最终稳态值的0~90%,调整时间的误差带为2%。
二.仿真工具Simulink简介
(一)Simulink界面
Simulink图标
连续系统模块组
离散系统模块组
函数和表模块组
数学运算模块组
非线性模块组
信号与系统模块组
输出模块组
信号源模块组
(二)模型窗口的建立
打开“untitled”窗口有三种方法:
① 在MATLAB的命令窗口中选择 File→New→Model菜单项;
② 单击Simulink工具栏中的“新建模型”图标;
③ 如果Simulink动态结构图已经存在,那么在MATLAB指令窗口下直接键入模型文件名字,便会直接打开该模型动态结构图的模型窗口。
(三)框图模型建立举例
【例】已知一个单位反馈系统框图如图所示,其中。
R=1
试绘制其系统结构图模型,标注模块标题“二阶系统的阶跃响应”,并以文件名“Zhang4sys1”文件名存盘。
绘制该系统结构图步骤如下:
① 按以下步骤创建一个新的“untitled”模型窗口。
② 点击Sources,选中信号源模块组中的Step模块,并拖拽到“untitled”模型窗口。
③在各模块库中,选中需要的标准功能模块并拖拽到“untitled”模型窗口。双击“Transfer Fcn”模块,在得出的对话框中,分别输入系统的分子和分母参数,即可得到修改后的系统模型。
④仿真参数的设置
仿真参数设置
启动仿真
仿真参数对话框及默认值
⑤ 从仿真曲线看,系统按默认参数仿真,其结果不完整(过渡过程为结束)。需要修改仿真用参数后再仿真。
解算器
工作空间
诊断
⑥ 用鼠标左键选中并单击I积分环节模块标题“ntegrator”,将原标题字符删除重新输入汉字“积分环节”;并可依次修改其他模块标题。最后,再在窗口空白处,双击鼠标左键,输入文字“二阶系统的阶跃响应”。
⑦ 对建好的系统结构图模型按“”命名并存盘
三.简单闭环控制系统的计算机辅助分析
用SIMULINK提供的linmod( )和linmod2( )两个函数,从连续系统中提取线性模型。
【例】已知一个单位反馈系统框图如图所示
其中
R=1
试绘制出该系统的单位给定阶跃响应曲线并计算其性能指标。
【解】:
(1)根据题目要求,用step( )函数命令编写求单位阶跃响应的MATLAB程序段如下:
[a,b,c,d]=linmod2('t501');
sys=ss(a,b,c,d);
step(sys)
SIMULINK动态结构图文件存放在MATLAB中,存放路径为MATLABR11\work中。
(2)用LTI Viewer图形工具求系统阶跃响应的性能指标。
四.滞后系统的时域响应分析
该系统的闭环传递函数为:
(一)滞后系统的近似时域分析
典型n阶pade近似传递函数模型为:
pade( )函数的调用格式为:
[np,dp]= pade(T,n)
其中,T为延迟时间,n为pade近似的阶次。
以上闭环系统的近似传递函数为:
【例】已知闭环系统的结构框图如前所示。对象模型为:
对系统中的时间延迟采用上述。Pade近似来取代,输入以下MATLAB语句求取系统的阶跃响应曲线。
为了消除初始时间段的振荡,实际应用中,一般只对式
分母中的延迟项进行pade近似
考虑【例】,按照上述近似方法,输入以下MATLAB语句求取系统的单位阶跃响应。
上述1阶、2阶、3阶、4阶、5阶pade 近似都得到的阶跃响应曲线如右图所示。
实际应用中,一般采用3阶pade 近似。
(三)利用Simulink对滞后系统进行时域分析
控制系统的频域分析
一.频域响应MATLAB仿真的函数指令格式
1.求连续系统Bode图的函数bode( )
函数命令调用格式:
[mag,phase,w]=bode(sys)
bode(sys)
【例】已知某控制系统开环传递函数为
试绘制系统开环频率特性曲线,即系统的bode图。
教材P127 例5-2
【解】:根据要求,用MATLAB函数命令bode( )编写程序如下:
k=;num=1;den=conv(conv([1 0],[1 1]),[1 2]);
sys=tf(num,den);
bode(sys)
2.计算(绘制)系统Nyquist曲线的函数nyquist( )
函数命令格式:
[re,im,w]=nyquist(sys)
nyquist(sys)
nyquist( )函数绘制的开环系统Nyquist曲线可以用来确定系统闭环的稳定性。当已绘制出开环系统传递函数G(s)的Nyquist曲线时,如果Nyquist曲线按逆时针方向包围(-1,j0)点p次(p为系统开环特征方程中不稳定根的个数),则闭环系统
是稳定的。这就是Nyquist稳定判据。应用Nyquist稳定判据必须先绘制出Nyquist曲线,由此可见,nyquist( )函数与Nyquist稳定判据是密不可分的
【例】已知直流单闭环系统的SIMULINK动态结构图如图-1所示。图中转速闭环已经断开。已知KP=2;KS=22;TS=(s);R=1Ω;Tl=(s);Ce=
【解】根据题目已知条件,直流传动转速单闭环系统的SIMULINK动态结构图,用函数命令编写MATLAB程序如下:
图-1 转速单闭环系统前向通道的SIMULINK动态结构图
程序:
n1=[1];d1=[ 1];s1=tf(n1,d1);
n2=[1];d2=[,0];s2=tf(n2,d2);
sys1=feedback(s1*s2,1);
n3=[0 44];d3=[ 1];s3=tf(n3,d3);
n4=[0 1];d4=[0 ];s4=tf(n4,d4);
n5=[0 ];d5=[0 1];s5=tf(n5,d5);
G=sys1*s3*s4*s5;
nyquist(G)
p=[-006 ];
或 P={1}
roots(p)
ans =
+002 *
+
-
由运算数据知,特征方程的根全为稳定根,即p=0。
图中,Nyquist曲线没有包围(-1,j0)点。另外,G(s)不稳定根个数p=0,所以由G(s)构成的闭环系统是稳定的。
3.求系统幅值裕度与相位裕度的函数margin( )
函数命令调用格式:
[Gm,Pm,Wcp,Wcg]=margin(sys)
margin(mag,phase,ω)
margin(sys)
【例】已知一单位反馈系统前向通道的传递函数为:
试绘制出Bode图并计算系统的频域性能指标。
【解】根据要求,调用函数命令margin( )的MATLAB程序如下:
num=[0 0 2 8 12 8 2];den=[1 5 10 10 5 1 0] ;
sys=tf(num,den);
[mag,phase,w]=bode(sys);
[gm,pm,wcp,wcg]=margin(mag,phase,w)
gm =
pm =
wcp =
wcg =
margin(mag,phase,w)
二 根轨迹分析
在MATLAB中,系统专门提供了函数:rlocus( )用来求系统根轨迹;rlocfind( )用来计算给定根轨迹增益;pzmap( )用来绘制系统的零极点图等等,这些函数都能够方便、简单而快捷地绘制根轨迹或者进行有关根轨迹计算。
(一)有关根轨迹的几个基本概念
(二)根轨迹MATLAB仿真的函数指令格式
1.绘制系统零极点图的函数pzmap( )
函数命令调用格式:
[p,z]=pzmap(a,b,c,d)
[p,z]=pzmap(sys)
[p,z]=pzmap(p,z)
【例】已知一高阶系统开环的传递函数为:
试绘制出该系统的零极点图。
【解】根据要求,调用函数命令pzmap( )的MATLAB程序如下:
n1=[ ];
d1=[ ];
sys=tf(n1,d1);
pzmap(sys)
[p,z]=pzmap(sys)
p =
+ % 三个极点
z =
% 三个零点
2.系统根轨迹的函数rlocus( )
函数命令调用格式:
[r,k]=rlocus(a,b,c,d)
[r,k]=rlocus(sys)
[r,k]=rlocus(a,b,c,d,k)
[r,k]=rlocus(num,den,k)
【例】续【例】,试绘制出该系统闭环的根轨迹图。
【解】根据要求,调用函数命令pzmap( )的MATLAB程序如下:
n1=[ ];
d1=[ ];
sys=tf(n1,d1);
rlocus(sys)
3.给定一组根的系统根轨迹增益函数rlocfind( )
函数命令调用格式:
[k,poles]=rlocfind(sys)
[k,poles]=rlocfind(sys,P)
【例】已知一单位负反馈系统开环传递函数为:
试绘制系统的闭环根轨迹图;并在根轨迹图上任选一点,试计算该点的增益k及其所有极点的位置。
【解】根据要求,调用函数命令rlocfind ( )的MATLAB程序如下
n1=1;d1=conv([1 0],conv([ 1],[4 1]));
s1=tf(n1,d1);
rlocus(s1);
[k,poles]=rlocfind(s1)
该程序执行后可得单位反馈系统的根轨迹图,并在根轨迹图窗口上显示十字形光标,当在复平面纵坐标与根轨迹焦点附近选择一点时,用鼠标左键点击该点,其相应的增益由变量k记录,与增益相关的所有极点记录在变量poles中。
Select a point in the graphics window
selected_point =
+
k =
poles =
+
-
(三)根轨迹MATLAB仿真实例
【例】已知带有延迟因子的系统开环传递函数为:
试绘制出系统闭环的根轨迹图,并选择系统稳定时给定根的根轨迹增益,最后求系统k=时的给定阶跃响应曲线。
【解】根据要求,调用函数rlocus( )、rlocfind( )编写的MATLAB程序如下:
elected_point =
-
k =
p =
+
-
当K=时,用MATLAB程序求单位阶跃响应曲线如下:
补充完成:
计算该系统的时域性能指标。
【例】已知某控制系统开环传递函数为
,试绘制系统闭环根轨迹,寻找系统临界稳定时的增益K,并绘制系统的冲击响应作为验证。
教材P127 例5-2
执行后的根轨迹(出现十字后,选中根轨迹与虚轴交点)。
同时,在命令框出现下列结果:
利用rlocfind函数找出根轨迹与虚轴的交点处的增益k≈6,说明当k<6时系统稳定。下面借助于冲击响应函数impuls来验证。分别取k=5,k=6,k=7,求出闭环系统的冲击响应。