试验一数学模型的Matlab 描述
一、实验目的
①掌握Malab 中数学模型的三种表现形式 ②掌握三种模型之间的转换方法 ③掌握复杂传递函数的求取方法 ④了解复杂系统表现形式及建模方法 二、实验要求
①在Matlab 中实现三种数学模型的描述 ②实现三种数学模型之间的转换 ③写出试验报告 三、实验内容
Matlab 中数学模型主要有三种形式:传递函数分子/分母多项式、传递函数零极点增益模型和状态空间模型。它们各有特点,有时需要在各种模型之间进行转换。 (1)已知系统传递函数
2s +7
G (s ) =4
32
s +2s +2s +5s +6
在Matlab 中表示出该模型
程序:
close all clear all clc num=[2,7]; den=[1,2,2,5,6];
G1=tf(num,den)
运行结果:
Transfer function: 2 s + 7
----------------------------- s^4 + 2 s^3 + 2 s^2 + 5 s + 6
%将(1)中模型转换成零极点增益模型和状态空间模型 程序:
[z1,p1,k1]=tf2zp(num,den); G12=zpk(z1,p1,k1)
[A1,B1,C1,D1]=tf2ss(num,den); G13=ss(A1,B1,C1,D1) 运行结果:
Zero/pole/gain:
2 (s+3.5)
------------------------------------------------ (s^2 + 2.975s + 2.424) (s^2 - 0.9747s + 2.475)
a =
x1 x2 x3 x4 x1 -2 -2 -5 -6 x2 1 0 0 0 x3 0 1 0 0 x4 0 0 1 0 b =
u1 x1 1 x2 0 x3 0 x4 0 c =
x1 x2 x3 x4 y1 0 0 2 7 d =
u1 y1 0
Continuous-time model.
(2)在Matlab 中表示出传递函数
s
G (s ) =
(s +2)(s +1) 2
程序:
close all clear all clc z=[0]; p=[-2,-1,-1]; k=[1]; G2=zpk(z,p,k)
运行结果:
Zero/pole/gain: s
------------- (s+2) (s+1)^2
%将(2)中模型转换成分子分母多项式模型和状态空间模型 程序:
[num1,den1]=zp2tf(z,p,k); G21=tf(num1,den1)
[A2,B2,C2,D2]=zp2ss(z,p,k); G23=ss(A2,B2,C2,D2) 运行结果:
Transfer function: s
--------------------- s^3 + 4 s^2 + 5 s + 2
a =
x1 x2 x3 x1 -1 0 0 x2 -1 -3 -1.414 x3 0 1.414 0 b =
u1 x1 1 x2 1 x3 0 c =
x1 x2 x3 y1 0 0 0.7071
d =
u1 y1 0
Continuous-time model.
3、已知连续系统∑(A ,B ,C ,D )的系数矩阵是:
⎡20A =⎢⎢04⎢⎣00C =[11在Matlab 中表示出该模型。程序:
close all clear all clc
A=[2 0 0;0 4 1;0 0 4]; B=[1;0;1]; C=[1 1 0]; D=0;
G3=ss(A,B,C,D)
运行结果:
a =
x1 x2 x3 x1 2 0 0 x2 0 4 1 x3 0 0 4 b =
u1 x1 1 x2 0 x3 1 c =
x1 x2 x3 y1 1 1 0 d =
u1
0⎤
⎡1⎤1⎥4⎥B =⎢⎥⎢0⎥⎦
,⎢⎥⎣1⎥⎦,
0],D =[0]
y1 0
Continuous-time model.
%将(3)中模型转换成分子分母多项式模型和零极点增益模型 程序:
[num2,den2]=ss2tf(A,B,C,D); G31=tf(num2,den2)
[z2,p2,k2]=ss2zp(A,B,C,D); G32=zpk(z2,p2,k2) 运行结果:
Transfer function: s^2 - 7 s + 14
------------------------ s^3 - 10 s^2 + 32 s - 32
Zero/pole/gain: (s^2 - 7s + 14) ---------------- (s-2) (s-4)^2
4、用Matlab 表示传递函数为
5(s 2+s +1)
G (s ) =2
(s +3s +1)(s 3+6s 2+5s +3)(s +2)
的系统
程序:
close all clear all clc
num3=5*[1,1,1];
den3=conv(conv(conv([1,3,1],[1,3,1]),[1,6,5,3]),[1,2]); G4=tf(num3,den3)
运行结果:
Transfer function:
5 s^2 + 5 s + 5
---------------------------------------------------------
s^8+14s^7+76s^6+209s^5+320s^4+289s^3+161s^2+49s+6
8(s +6)
5、G (s ) =s 2+13s +62
6、G (s ) =
(s +1. 539)(s +2. 7305+2. 8538j )(s +2. 7305-2. 8538j )
(s +4)(s +3)(s +2)(s +1)
7、已知一造纸厂工业中的网前箱为一加压液流箱系统。该系统的状态变量是箱中流位h (t ) 与料浆的总压头H (t ) ,输入变量是料浆流入量u 1(t ) 与空气流入量u 2(t ) ,输出变量就是状态变量H (t ) 和h (t ) 本身。系统状态空间模型为
⎧⎡∙⎤⎡-0. 39500. 01145⎤⎡H (t ) ⎤⎡0. 033621. 038⎤⎡u 1(t ) ⎤⎪⎢H ∙(t ) ⎥=⎢+⎢⎢u (t ) ⎥⎥⎢⎥⎪⎢h (t ) ⎥⎣-0. 0110⎦⎣h (t ) ⎦⎣0. 0009660⎥⎦⎣2⎦⎦⎨⎣
y (t ) u (t ) H (t ) ⎪⎡1⎤⎡1⎤⎡⎤
=[11]+[00]⎪⎢y (t ) ⎥⎢u (t ) ⎥⎢h (t ) ⎥
⎣⎦2⎣⎦⎣2⎦⎩
试求多个输入到输出的传递函数与多个输入到输出的零极点增益模型。
7(2s +3)
G (s ) =8、s 2(3s +1)(s +2) 2(5s 3+3s +8)
试验二利用Matlab 分析时间响应
一、 实验目的
①掌握impulse 函数、step 函数和lsim 函数的用法 ②掌握利用三种函数求解系统的时间响应 ③掌握Matlab 中系统时域性能指标的求解方法 ④了解simulink 中系统动态模型的建立方法
二、 实验要求
①用impulse 、step 和lsim 函数对线形连续系统的时间响应进行仿真计算。
②在对系统进行单位阶跃响应的基础上,求取系统时域性能指标。
③写出试验报告。
三、 实验内容
(1)impulse 函数、step 函数和lsim 函数的说明
Impulse 函数 step 函数
lsim 函数
(2)求系统二阶系统φ(s ) =
C (s ) 4
=2的单位脉冲响应、单位R (s ) s +2. 4s +4
阶跃响应、正弦(u =sin(2πt ) )响应,并在求出阶跃响应的基础上求系统的上升时间、峰值时间、最大超调量和调整时间。
程序:
close all clear all clc
%系统的建立
num=[4]; den=[1,2.4,4]; G=tf(num,den);
%求系统的单位脉冲响应
t=[0:0.001:10]; [y1,T1]=impulse(G,t);
%求系统的单位阶跃响应
[y2,T2]=step(G,t);
%求系统的正弦响应
u=sin(2*pi*t); [y3,T3]=lsim(G,u,t); e=u-y3'; subplot(311) plot(T1,y1) grid on
legend(' 单位脉冲响应' ) xlabel('t(sec)') ylabel('y1(t)') subplot(312) plot(T2,y2) grid on
legend(' 单位阶跃响应' ) xlabel('t(sec)') ylabel('y2(t)') subplot(313)
plot(t,u,'--' ,T3,y3, '-' ,t,e, '-.' , 'linewidth' ,1) grid on
legend(' 正弦响应' ) xlabel('t(sec)') ylabel('y3(t)')
%求上升时间、峰值时间、超调量、调整时间
cs=length(T2); yss=y2(cs);
r=1;while y2(r)
while (y2(n)/yss)>(1-0.02)&(y2(n)/yss)
ts2=(n-1)*0.001
运行结果:
tr = 13.8400 mp = 9.4772 tp = 1.9630 ts2 =
2.9710
(3)求系统的时间响应
有一位置随动系统,其方框图如上图,该系统的传递函数
50
G (s ) =2
0. 05s +(1+50τ) s +50
τ=0. 0125,τ=0. 025时的单位脉冲响应、求系统在时间常数τ=0,
单位阶跃响应和正弦输入响应;
程序:
close all clear all clc
t1=[0.0:0.001:1]; nG=[50];
tao=0;dG=[0.05 1+50*tao 50];G1=tf(nG,dG); tao=0.0125;dG=[0.05 1+50*tao 50];G2=tf(nG,dG); tao=0.025;dG=[0.05 1+50*tao 50];G3=tf(nG,dG); [y1,T]=impulse(G1,t1);[y1a,T]=step(G1,t1); [y2,T]=impulse(G2,t1);[y2a,T]=step(G2,t1); [y3,T]=impulse(G3,t1);[y3a,T]=step(G3,t1); subplot(121),plot(T,y1,'--' ,T,y2, '-.' ,T,y3, '-' ) legend('tao=0', 'tao=0.0125', 'tao=0.025') xlabel('t(sec)'),ylabel('x(t)');grid on ;
subplot(122),plot(T,y1a,'--' ,T,y2a, '-.' ,T,y3a, '-' ) legend('tao=0', 'tao=0.0125', 'tao=0.025') xlabel('t(sec)'),ylabel('x(t)');grid on ;
%正弦输入
t=[0:0.01:1];u=sin(2*pi*t); tao4=0.025;
nG4=[50];dG4=[0.05 1+50*tao4 50];G4=tf(nG4,dG4); y=lsim(G4,u,t); e=u-y';
plot(t,u,'--' ,t,y, '-' ,t,e, '-.' , 'linewidth' ,1) legend('u(t)', 'X0(t)', 'e(t)')
grid on ;xlabel('t(sec)'),ylabel('x(t)');
运行结果:
单位脉冲响应 单位阶跃响应
正弦响应及误差曲线
(3)求系统的瞬态性能指标
在(2)中求出系统得单位阶跃响应后,求出系统的上升时间、峰值时间、最大超调量和调整时间等性能指标。
程序:
yss=1;dta=0.02;
r=1;while y1a(r)
[ymax1,tp1]=max(y1a);tp1=(tp1-1)*0.001; mp1=(ymax1-yss)/yss
s=length(t1);while y1a(s)>1-dta&y1a(s)
r=1;while y2a(r)
[ymax2,tp2]=max(y2a);tp2=(tp2-1)*0.001; mp2=(ymax2-yss)/yss
s=length(t1);while y2a(s)>1-dta&y2a(s)
r=1;while y3a(r)
[ymax3,tp3]=max(y3a);tp3=(tp3-1)*0.001; mp3=(ymax3-yss)/yss
s=length(t1);while y3a(s)>1-dta&y3a(s)
[tr1 tp1 mp1 ts1;tr2 tp2 mp2 ts2;tr3 tp3 mp3 ts3]
运行结果:
ans =
0.0640 0.1050 0.3509 0.3530 0.0780 0.1160 0.1523 0.2500 0.1070 0.1410 0.0415 0.1880
练习:
1、
50
G (s ) =求系统0. 05s 2+s +50的单位脉冲响应、单位
阶跃响应、余弦(v =cos(2πt ) )响应。
2、
ωn
已知二阶系统传递函数为φ(s ) =22
s +2ξωn +ωn
2
,当
ωn =1时,试绘制当阻尼比ξ值从0到1(步长0.1)时二阶系
统的单位阶跃响应簇(book163)
-
πζ
1-ζ2
3、 欠阻尼二阶系统的超调量σ%=e ⨯100%,试绘制
σ%与ζ之间的关系曲线σ=f (ζ) 与ζ=f (σ) 。(book161)
4、 已知自动控制一阶系统给定单位阶跃响应为h (t ) =1-e
1-t T
, 试
计算响应曲线起始t=0时的斜率与t=T的斜率。(book158) ωn C (s )
=25、 设闭环传递函数φ(s ) =2的二阶系统在单R (s ) s +2ζωn s +ωn
2
位阶跃函数作用下的输出响应为
h (t ) =1-1. 25e -1. 2t sin(1. 6t +53. 1) 。试计算系统参数ζ、ωn ,
并求此时的超调量σ%、峰值时间t p 、调节时间t s 与振荡次数N 。(book159)(根据自动控制原理:二阶系统的闭环传递函数为ωn C (s )
φ(s ) ==2
R (s ) s +2ζωn s +ωn 2
2
,单位阶跃响应为
h (t ) =1-
1-ζ2
e -ζωn t n sin(ωd t +β) )
C (s ) s 3+7s 2+24s +24
=46、在simulink 中建立系统的φ=仿真R (s ) s +25s 3+35s 2+50s +24
动态模型
试验三利用Matlab 分析频率特性
一、 实验目的
①掌握nyquist 函数、bode 函数的用法 ②掌握nyquist 图、bode 图的绘制方法 ③掌握Matlab 中系统的频域特征量的求解方法 二、实验要求
①用nyquist 函数绘制系统的nyquist 图。 ②用bode 函数绘制系统的bode 图。 ③用Matlab 求系统的频域特征量。 ④写出试验报告
三、实验内容
1、用Matlab 绘制Nyquist 图
用Matlab 绘制传递函数为
7. 5(0. 2s +1)(s +1) G (s ) =2
s (s +16s +100)
的系统的Nyqist 图。
程序:
close all clear all clc
%传递函数
num=7.5*conv([0.2,1],[1 1]); den=conv([1,0],[1,16,100]); G=tf(num,den)
%绘制Nyquist 图
[re,im]=nyquist(num,den); figure(1) plot(re,im);grid
运行结果:
2、用Matlab 绘制Bode 图
用Matlab 绘制传递函数为
2. 5(s +10)
G (s ) =2
s (0. 2s +1)
的系统的bode 图。
程序:
close all clear all clc
%传递函数
num=2.5*[1 10];
den=conv([1,0,0],[0.2,1]); G=tf(num,den)
%绘制bode 图
w=logspace(-2,3,100); figure(2) bode(num,den,w)
运行结果:
3、用Matlab 求系统的频域特征量 对于传递函数为
200
G (s ) =2
s +8s +100
的系统,用bode 函数求得不同频率下,系统得幅频特性,从而根据定义计算出系统的频域特征量。
程序:
close all clear all clc
%求系统的频域特征量
num1=[200];den1=[1,8,100]; w=logspace(-1,3,100); [Gm,Pm,w]=bode(num1,den1,w); [Mr,k]=max(Gm);
Mr=20*log10(Mr);Wr=w(k); M0=20*log10(Gm(1));
n=1;while 20*log10(Gm(n))>=-3;n=n+1;end Wb=w(n);
[M0 Wb Wr Mr]
运行结果:
ans =
6.0212 20.0923 7.9248 8.6942
20s (s +5)(s +40)
4、绘制系统G (s ) =s (s +0. 1)(s +20) 2的Nyquist 图、bode 图。
试验四利用Matlab 分析系统稳定性
一、实验目的
①掌握roots 函数、margin 函数的用法 ②掌握Matlab 中系统特征根的求解方法 ③掌握Matlab 中系统稳定性的判定方法 二、实验要求
①用roots 函数求解系统特征方程的特征根并判定系统的稳定性。
②用margin 函数求出系统的幅值裕度、相位裕度、幅值穿越频率和相位穿越频率,并判定系统的相对稳定性。 ③写出试验报告
三、实验内容
1、 利用Matlab 求系统的特征根 (1)设系统的特征方程为
D (s ) =s 5+2s 4+24s 3+48s 2-25s -50=0
用Matlab 的roots 函数求出系统的所有的特征根,从而判定系统是否
稳定。
程序:
%求系统的特征根
close all clear all clc
D=[1 2 24 48 -25 -50]; roots(D)
运行结果:
ans =
0.0000 + 5.0000i 0.0000 - 5.0000i 1.0000 -2.0000 -1.0000
6
5
4
3
2
(2) 设系统特征方程为s +4s -4s +4s -7s -8s +10=0 ,试计算特征根并判别该系统的稳定性。 2、 利用Matlab 分析系统的相对稳定性
10
(1) 已知某系统开环传递函数为G (s ) H (s ) =,试
s (2s +1)(s 2+0. 5s +1)
用Bode 图法判断闭环系统的稳定性,并用阶跃响应曲线验证。
程序:%分析系统的相对稳定性 close all clear all clc
num=[10];
den=conv(conv([1,0],[2,1]),[1,0.5,1]); G=tf(num,den);
[Gm,Pm,Wcg,Wcp]=margin(G); Gm=20*log10(Gm) Pm=Pm Wcg=Wcg Wcp=Wcp
%用margin 函数绘制系统的bode 图 figure(1)
margin(G)
%用bode 函数绘制系统的bode 图
figure(2)
bode(G)
%绘制系统单位阶跃响应曲线验证系统的稳定性
sys=feedback(G,1);
t=0:0.01:10;
figure(2)
step(sys,t)
运行结果:
Warning: The closed-loop system is unstable.
> In lti.margin at 89
In book184 at 8
Gm =
-22.5020
Pm =
-136.3866
Wcg =
0.7067
Wcp =
1.6210
(2) 已知控制系统的开环传递函数为
K G (s ) H (s ) =s (s +1)(s +5)
应用margin 函数求K=10及K=100其幅值裕度、相位裕度、幅值穿越频率和相位穿越频率,从而判断系统稳定性的变化。
程序:
close all
clear all
clc
den=conv([1,5],[1,1,0]);
num1=[10];
[Gm1,Pm1,Wcg1,Wcp1]=margin(num1,den);
num2=[100];
[mag,phase,w]=bode(num2,den);
[Gm2,Pm2,Wcg2,Wcp2]=margin(mag,phase,w);
[20*log10(Gm1) Pm1 Wcg1 Wcp1;20*log10(Gm2) Pm2 Wcg2 Wcp2]
运行结果:
ans =
9.5424 25.3898 2.2361 1.2271
-10.4576 -23.5463 2.2361 3.9010
19
(3)已知某系统开环传递函数为G (s ) H (s ) =s (s +1)(0. 1s +1) ,试用Bode 图法判断闭环系统的稳定性,并用阶跃响应曲线验证。
试验一数学模型的Matlab 描述
一、实验目的
①掌握Malab 中数学模型的三种表现形式 ②掌握三种模型之间的转换方法 ③掌握复杂传递函数的求取方法 ④了解复杂系统表现形式及建模方法 二、实验要求
①在Matlab 中实现三种数学模型的描述 ②实现三种数学模型之间的转换 ③写出试验报告 三、实验内容
Matlab 中数学模型主要有三种形式:传递函数分子/分母多项式、传递函数零极点增益模型和状态空间模型。它们各有特点,有时需要在各种模型之间进行转换。 (1)已知系统传递函数
2s +7
G (s ) =4
32
s +2s +2s +5s +6
在Matlab 中表示出该模型
程序:
close all clear all clc num=[2,7]; den=[1,2,2,5,6];
G1=tf(num,den)
运行结果:
Transfer function: 2 s + 7
----------------------------- s^4 + 2 s^3 + 2 s^2 + 5 s + 6
%将(1)中模型转换成零极点增益模型和状态空间模型 程序:
[z1,p1,k1]=tf2zp(num,den); G12=zpk(z1,p1,k1)
[A1,B1,C1,D1]=tf2ss(num,den); G13=ss(A1,B1,C1,D1) 运行结果:
Zero/pole/gain:
2 (s+3.5)
------------------------------------------------ (s^2 + 2.975s + 2.424) (s^2 - 0.9747s + 2.475)
a =
x1 x2 x3 x4 x1 -2 -2 -5 -6 x2 1 0 0 0 x3 0 1 0 0 x4 0 0 1 0 b =
u1 x1 1 x2 0 x3 0 x4 0 c =
x1 x2 x3 x4 y1 0 0 2 7 d =
u1 y1 0
Continuous-time model.
(2)在Matlab 中表示出传递函数
s
G (s ) =
(s +2)(s +1) 2
程序:
close all clear all clc z=[0]; p=[-2,-1,-1]; k=[1]; G2=zpk(z,p,k)
运行结果:
Zero/pole/gain: s
------------- (s+2) (s+1)^2
%将(2)中模型转换成分子分母多项式模型和状态空间模型 程序:
[num1,den1]=zp2tf(z,p,k); G21=tf(num1,den1)
[A2,B2,C2,D2]=zp2ss(z,p,k); G23=ss(A2,B2,C2,D2) 运行结果:
Transfer function: s
--------------------- s^3 + 4 s^2 + 5 s + 2
a =
x1 x2 x3 x1 -1 0 0 x2 -1 -3 -1.414 x3 0 1.414 0 b =
u1 x1 1 x2 1 x3 0 c =
x1 x2 x3 y1 0 0 0.7071
d =
u1 y1 0
Continuous-time model.
3、已知连续系统∑(A ,B ,C ,D )的系数矩阵是:
⎡20A =⎢⎢04⎢⎣00C =[11在Matlab 中表示出该模型。程序:
close all clear all clc
A=[2 0 0;0 4 1;0 0 4]; B=[1;0;1]; C=[1 1 0]; D=0;
G3=ss(A,B,C,D)
运行结果:
a =
x1 x2 x3 x1 2 0 0 x2 0 4 1 x3 0 0 4 b =
u1 x1 1 x2 0 x3 1 c =
x1 x2 x3 y1 1 1 0 d =
u1
0⎤
⎡1⎤1⎥4⎥B =⎢⎥⎢0⎥⎦
,⎢⎥⎣1⎥⎦,
0],D =[0]
y1 0
Continuous-time model.
%将(3)中模型转换成分子分母多项式模型和零极点增益模型 程序:
[num2,den2]=ss2tf(A,B,C,D); G31=tf(num2,den2)
[z2,p2,k2]=ss2zp(A,B,C,D); G32=zpk(z2,p2,k2) 运行结果:
Transfer function: s^2 - 7 s + 14
------------------------ s^3 - 10 s^2 + 32 s - 32
Zero/pole/gain: (s^2 - 7s + 14) ---------------- (s-2) (s-4)^2
4、用Matlab 表示传递函数为
5(s 2+s +1)
G (s ) =2
(s +3s +1)(s 3+6s 2+5s +3)(s +2)
的系统
程序:
close all clear all clc
num3=5*[1,1,1];
den3=conv(conv(conv([1,3,1],[1,3,1]),[1,6,5,3]),[1,2]); G4=tf(num3,den3)
运行结果:
Transfer function:
5 s^2 + 5 s + 5
---------------------------------------------------------
s^8+14s^7+76s^6+209s^5+320s^4+289s^3+161s^2+49s+6
8(s +6)
5、G (s ) =s 2+13s +62
6、G (s ) =
(s +1. 539)(s +2. 7305+2. 8538j )(s +2. 7305-2. 8538j )
(s +4)(s +3)(s +2)(s +1)
7、已知一造纸厂工业中的网前箱为一加压液流箱系统。该系统的状态变量是箱中流位h (t ) 与料浆的总压头H (t ) ,输入变量是料浆流入量u 1(t ) 与空气流入量u 2(t ) ,输出变量就是状态变量H (t ) 和h (t ) 本身。系统状态空间模型为
⎧⎡∙⎤⎡-0. 39500. 01145⎤⎡H (t ) ⎤⎡0. 033621. 038⎤⎡u 1(t ) ⎤⎪⎢H ∙(t ) ⎥=⎢+⎢⎢u (t ) ⎥⎥⎢⎥⎪⎢h (t ) ⎥⎣-0. 0110⎦⎣h (t ) ⎦⎣0. 0009660⎥⎦⎣2⎦⎦⎨⎣
y (t ) u (t ) H (t ) ⎪⎡1⎤⎡1⎤⎡⎤
=[11]+[00]⎪⎢y (t ) ⎥⎢u (t ) ⎥⎢h (t ) ⎥
⎣⎦2⎣⎦⎣2⎦⎩
试求多个输入到输出的传递函数与多个输入到输出的零极点增益模型。
7(2s +3)
G (s ) =8、s 2(3s +1)(s +2) 2(5s 3+3s +8)
试验二利用Matlab 分析时间响应
一、 实验目的
①掌握impulse 函数、step 函数和lsim 函数的用法 ②掌握利用三种函数求解系统的时间响应 ③掌握Matlab 中系统时域性能指标的求解方法 ④了解simulink 中系统动态模型的建立方法
二、 实验要求
①用impulse 、step 和lsim 函数对线形连续系统的时间响应进行仿真计算。
②在对系统进行单位阶跃响应的基础上,求取系统时域性能指标。
③写出试验报告。
三、 实验内容
(1)impulse 函数、step 函数和lsim 函数的说明
Impulse 函数 step 函数
lsim 函数
(2)求系统二阶系统φ(s ) =
C (s ) 4
=2的单位脉冲响应、单位R (s ) s +2. 4s +4
阶跃响应、正弦(u =sin(2πt ) )响应,并在求出阶跃响应的基础上求系统的上升时间、峰值时间、最大超调量和调整时间。
程序:
close all clear all clc
%系统的建立
num=[4]; den=[1,2.4,4]; G=tf(num,den);
%求系统的单位脉冲响应
t=[0:0.001:10]; [y1,T1]=impulse(G,t);
%求系统的单位阶跃响应
[y2,T2]=step(G,t);
%求系统的正弦响应
u=sin(2*pi*t); [y3,T3]=lsim(G,u,t); e=u-y3'; subplot(311) plot(T1,y1) grid on
legend(' 单位脉冲响应' ) xlabel('t(sec)') ylabel('y1(t)') subplot(312) plot(T2,y2) grid on
legend(' 单位阶跃响应' ) xlabel('t(sec)') ylabel('y2(t)') subplot(313)
plot(t,u,'--' ,T3,y3, '-' ,t,e, '-.' , 'linewidth' ,1) grid on
legend(' 正弦响应' ) xlabel('t(sec)') ylabel('y3(t)')
%求上升时间、峰值时间、超调量、调整时间
cs=length(T2); yss=y2(cs);
r=1;while y2(r)
while (y2(n)/yss)>(1-0.02)&(y2(n)/yss)
ts2=(n-1)*0.001
运行结果:
tr = 13.8400 mp = 9.4772 tp = 1.9630 ts2 =
2.9710
(3)求系统的时间响应
有一位置随动系统,其方框图如上图,该系统的传递函数
50
G (s ) =2
0. 05s +(1+50τ) s +50
τ=0. 0125,τ=0. 025时的单位脉冲响应、求系统在时间常数τ=0,
单位阶跃响应和正弦输入响应;
程序:
close all clear all clc
t1=[0.0:0.001:1]; nG=[50];
tao=0;dG=[0.05 1+50*tao 50];G1=tf(nG,dG); tao=0.0125;dG=[0.05 1+50*tao 50];G2=tf(nG,dG); tao=0.025;dG=[0.05 1+50*tao 50];G3=tf(nG,dG); [y1,T]=impulse(G1,t1);[y1a,T]=step(G1,t1); [y2,T]=impulse(G2,t1);[y2a,T]=step(G2,t1); [y3,T]=impulse(G3,t1);[y3a,T]=step(G3,t1); subplot(121),plot(T,y1,'--' ,T,y2, '-.' ,T,y3, '-' ) legend('tao=0', 'tao=0.0125', 'tao=0.025') xlabel('t(sec)'),ylabel('x(t)');grid on ;
subplot(122),plot(T,y1a,'--' ,T,y2a, '-.' ,T,y3a, '-' ) legend('tao=0', 'tao=0.0125', 'tao=0.025') xlabel('t(sec)'),ylabel('x(t)');grid on ;
%正弦输入
t=[0:0.01:1];u=sin(2*pi*t); tao4=0.025;
nG4=[50];dG4=[0.05 1+50*tao4 50];G4=tf(nG4,dG4); y=lsim(G4,u,t); e=u-y';
plot(t,u,'--' ,t,y, '-' ,t,e, '-.' , 'linewidth' ,1) legend('u(t)', 'X0(t)', 'e(t)')
grid on ;xlabel('t(sec)'),ylabel('x(t)');
运行结果:
单位脉冲响应 单位阶跃响应
正弦响应及误差曲线
(3)求系统的瞬态性能指标
在(2)中求出系统得单位阶跃响应后,求出系统的上升时间、峰值时间、最大超调量和调整时间等性能指标。
程序:
yss=1;dta=0.02;
r=1;while y1a(r)
[ymax1,tp1]=max(y1a);tp1=(tp1-1)*0.001; mp1=(ymax1-yss)/yss
s=length(t1);while y1a(s)>1-dta&y1a(s)
r=1;while y2a(r)
[ymax2,tp2]=max(y2a);tp2=(tp2-1)*0.001; mp2=(ymax2-yss)/yss
s=length(t1);while y2a(s)>1-dta&y2a(s)
r=1;while y3a(r)
[ymax3,tp3]=max(y3a);tp3=(tp3-1)*0.001; mp3=(ymax3-yss)/yss
s=length(t1);while y3a(s)>1-dta&y3a(s)
[tr1 tp1 mp1 ts1;tr2 tp2 mp2 ts2;tr3 tp3 mp3 ts3]
运行结果:
ans =
0.0640 0.1050 0.3509 0.3530 0.0780 0.1160 0.1523 0.2500 0.1070 0.1410 0.0415 0.1880
练习:
1、
50
G (s ) =求系统0. 05s 2+s +50的单位脉冲响应、单位
阶跃响应、余弦(v =cos(2πt ) )响应。
2、
ωn
已知二阶系统传递函数为φ(s ) =22
s +2ξωn +ωn
2
,当
ωn =1时,试绘制当阻尼比ξ值从0到1(步长0.1)时二阶系
统的单位阶跃响应簇(book163)
-
πζ
1-ζ2
3、 欠阻尼二阶系统的超调量σ%=e ⨯100%,试绘制
σ%与ζ之间的关系曲线σ=f (ζ) 与ζ=f (σ) 。(book161)
4、 已知自动控制一阶系统给定单位阶跃响应为h (t ) =1-e
1-t T
, 试
计算响应曲线起始t=0时的斜率与t=T的斜率。(book158) ωn C (s )
=25、 设闭环传递函数φ(s ) =2的二阶系统在单R (s ) s +2ζωn s +ωn
2
位阶跃函数作用下的输出响应为
h (t ) =1-1. 25e -1. 2t sin(1. 6t +53. 1) 。试计算系统参数ζ、ωn ,
并求此时的超调量σ%、峰值时间t p 、调节时间t s 与振荡次数N 。(book159)(根据自动控制原理:二阶系统的闭环传递函数为ωn C (s )
φ(s ) ==2
R (s ) s +2ζωn s +ωn 2
2
,单位阶跃响应为
h (t ) =1-
1-ζ2
e -ζωn t n sin(ωd t +β) )
C (s ) s 3+7s 2+24s +24
=46、在simulink 中建立系统的φ=仿真R (s ) s +25s 3+35s 2+50s +24
动态模型
试验三利用Matlab 分析频率特性
一、 实验目的
①掌握nyquist 函数、bode 函数的用法 ②掌握nyquist 图、bode 图的绘制方法 ③掌握Matlab 中系统的频域特征量的求解方法 二、实验要求
①用nyquist 函数绘制系统的nyquist 图。 ②用bode 函数绘制系统的bode 图。 ③用Matlab 求系统的频域特征量。 ④写出试验报告
三、实验内容
1、用Matlab 绘制Nyquist 图
用Matlab 绘制传递函数为
7. 5(0. 2s +1)(s +1) G (s ) =2
s (s +16s +100)
的系统的Nyqist 图。
程序:
close all clear all clc
%传递函数
num=7.5*conv([0.2,1],[1 1]); den=conv([1,0],[1,16,100]); G=tf(num,den)
%绘制Nyquist 图
[re,im]=nyquist(num,den); figure(1) plot(re,im);grid
运行结果:
2、用Matlab 绘制Bode 图
用Matlab 绘制传递函数为
2. 5(s +10)
G (s ) =2
s (0. 2s +1)
的系统的bode 图。
程序:
close all clear all clc
%传递函数
num=2.5*[1 10];
den=conv([1,0,0],[0.2,1]); G=tf(num,den)
%绘制bode 图
w=logspace(-2,3,100); figure(2) bode(num,den,w)
运行结果:
3、用Matlab 求系统的频域特征量 对于传递函数为
200
G (s ) =2
s +8s +100
的系统,用bode 函数求得不同频率下,系统得幅频特性,从而根据定义计算出系统的频域特征量。
程序:
close all clear all clc
%求系统的频域特征量
num1=[200];den1=[1,8,100]; w=logspace(-1,3,100); [Gm,Pm,w]=bode(num1,den1,w); [Mr,k]=max(Gm);
Mr=20*log10(Mr);Wr=w(k); M0=20*log10(Gm(1));
n=1;while 20*log10(Gm(n))>=-3;n=n+1;end Wb=w(n);
[M0 Wb Wr Mr]
运行结果:
ans =
6.0212 20.0923 7.9248 8.6942
20s (s +5)(s +40)
4、绘制系统G (s ) =s (s +0. 1)(s +20) 2的Nyquist 图、bode 图。
试验四利用Matlab 分析系统稳定性
一、实验目的
①掌握roots 函数、margin 函数的用法 ②掌握Matlab 中系统特征根的求解方法 ③掌握Matlab 中系统稳定性的判定方法 二、实验要求
①用roots 函数求解系统特征方程的特征根并判定系统的稳定性。
②用margin 函数求出系统的幅值裕度、相位裕度、幅值穿越频率和相位穿越频率,并判定系统的相对稳定性。 ③写出试验报告
三、实验内容
1、 利用Matlab 求系统的特征根 (1)设系统的特征方程为
D (s ) =s 5+2s 4+24s 3+48s 2-25s -50=0
用Matlab 的roots 函数求出系统的所有的特征根,从而判定系统是否
稳定。
程序:
%求系统的特征根
close all clear all clc
D=[1 2 24 48 -25 -50]; roots(D)
运行结果:
ans =
0.0000 + 5.0000i 0.0000 - 5.0000i 1.0000 -2.0000 -1.0000
6
5
4
3
2
(2) 设系统特征方程为s +4s -4s +4s -7s -8s +10=0 ,试计算特征根并判别该系统的稳定性。 2、 利用Matlab 分析系统的相对稳定性
10
(1) 已知某系统开环传递函数为G (s ) H (s ) =,试
s (2s +1)(s 2+0. 5s +1)
用Bode 图法判断闭环系统的稳定性,并用阶跃响应曲线验证。
程序:%分析系统的相对稳定性 close all clear all clc
num=[10];
den=conv(conv([1,0],[2,1]),[1,0.5,1]); G=tf(num,den);
[Gm,Pm,Wcg,Wcp]=margin(G); Gm=20*log10(Gm) Pm=Pm Wcg=Wcg Wcp=Wcp
%用margin 函数绘制系统的bode 图 figure(1)
margin(G)
%用bode 函数绘制系统的bode 图
figure(2)
bode(G)
%绘制系统单位阶跃响应曲线验证系统的稳定性
sys=feedback(G,1);
t=0:0.01:10;
figure(2)
step(sys,t)
运行结果:
Warning: The closed-loop system is unstable.
> In lti.margin at 89
In book184 at 8
Gm =
-22.5020
Pm =
-136.3866
Wcg =
0.7067
Wcp =
1.6210
(2) 已知控制系统的开环传递函数为
K G (s ) H (s ) =s (s +1)(s +5)
应用margin 函数求K=10及K=100其幅值裕度、相位裕度、幅值穿越频率和相位穿越频率,从而判断系统稳定性的变化。
程序:
close all
clear all
clc
den=conv([1,5],[1,1,0]);
num1=[10];
[Gm1,Pm1,Wcg1,Wcp1]=margin(num1,den);
num2=[100];
[mag,phase,w]=bode(num2,den);
[Gm2,Pm2,Wcg2,Wcp2]=margin(mag,phase,w);
[20*log10(Gm1) Pm1 Wcg1 Wcp1;20*log10(Gm2) Pm2 Wcg2 Wcp2]
运行结果:
ans =
9.5424 25.3898 2.2361 1.2271
-10.4576 -23.5463 2.2361 3.9010
19
(3)已知某系统开环传递函数为G (s ) H (s ) =s (s +1)(0. 1s +1) ,试用Bode 图法判断闭环系统的稳定性,并用阶跃响应曲线验证。