控制系统仿真实验报告
姓 名: 王天雷 班 级: 231142 学 号: 20131004363 学 院: 自动化 专 业: 自动化 指导老师: 刘峰
2017 年 1 月
目录
7.2.2.....................................................1 7.2.3.....................................................7 7.2.4....................................................12 7.2.5....................................................17 7.2.6....................................................21 7.3.1....................................................24 总结.....................................................25
7.2.2 控制系统的阶跃响应
实验目的:观察学习控制系统的单位阶跃响应 记录单位阶跃响应曲线
掌握时间响应分析的一般方法
实验内容: 1. 二阶系统Gs10s2s102
1)键入程序,观察并记录单位阶跃响应曲线 First.m close all; clear all; clc;
num=[10];den=[1 2 10]; step(num,den); title(‘阶跃响应曲线’);
2)键入damp(den) 计算系统的闭环根、阻尼比、无阻尼振荡频率,并记录
结果:
Eigenvalue(闭环根) Damping(阻尼比) Freq. (rad/s)(无阻尼振荡频率)
1
-1.00e+000 + 3.00e+000i 3.16e-001 3.16e+000 -1.00e+000 - 3.00e+000i 3.16e-001 3.16e+000
3)记录实际测取的峰值大小、峰值时间及过渡过程时间,并填表:
峰值Cmax 峰值时间tp 过渡时间 Ts 实际值 1.35 1.05 2.52 3.54 理论值 1.3511 1.0467 2.501 3.535 5% 2%
由理论知识知 4.5
2% nts(00.9) 3.5 5% n
编写代码x.m
%返回峰值时间,超调量,调节时间5%,2% function [tr b ts1 ts2]=x(a,wn) wd=wn*(1-a^2)^0.5;%求解wd tp=3.14/wd;%峰值时间
b=exp((-3.14*a/(1-a^2)^0.5));%超调量 ts1=3.5/(wn*a),ts2=4.5/(wn*a);%调节时间 计算得到理论值,填入表中
2
tp/d/3
2 1)修改参数,分别实现1和2的响应曲线,并记录 程序:second.m clear all; close all; clc;
n0=10;d0=[1 2 10];step(n0,d0);%原系统,kesai=0.36 hold on;%保持原曲线
n1=n0;d1=[1 6.32 10];step(n1,d1);%kesai=1; n2=n0;d2=[1 12.64 10];step(n2,d2);%kesai=2;
如图,kesai分别为0.36,1,2,曲线幅度递减
2)修改参数,分别写出程序实现wn11w0和wn22w0的响应曲线,并记录
2程序:third.m clear all; close all; clc;
n0=10;d0=[1 2 10];step(n0,d0);%原系统,wn0=10^0.5 hold on;%保持原曲线
n1=0.25*n0;d1=[1 1 n1];step(n1,d1);%wn1=0.5*wn0; n2=4*n0;d2=[1 4 n2];step(n2,d2);%wn2=4*wn0=2;
3
如图,wn=2*wn0,wn0,0.5*wn0,上升时间逐渐增长,超调量不变
3. 作出以下系统的阶跃响应,并与原系统响应曲线进行比较,作出相应的实验分析结果
(1)G1s(2)G2s2s10s2s1022,有系统零点的情况
s20.5s10s2s10,分子、分母多项式阶数相等
(3)G2s(4)G2s
s20.5ss2s10ss2s1022,分子多项式零次项为零
,原响应的微分,微分系数为1/10
程序:
%各系统阶跃响应曲线比较
G0=tf([10],[1 2 10]);G1=tf([2 10],[1 2 10]);G2=tf([1 0.5 10],[1 2 10]); G3=tf([1 0.5 0],[1 2 10]);G4=tf([1 0 ],[1 2 10]); step(G0,G1,G2,G3,G4); grid on;
title(' Step Response 曲线比较');
4
4.试做一个三阶系统和四阶系统的阶跃响应,并分析实验结果 假设一个三阶和一个四阶系统,如下
sys111sys2 432s3s2s1ssss1
sys1=tf([1],[1 1 1 1]);sys2=tf([1],[1 1 1 1 1]);step(sys1,sys2);
如图,分别为sys1,sys2系统阶跃响应曲线
分析1:系统阻尼比和无阻尼振荡频率对系统阶跃相应的影响
5
解:在欠阻尼响应曲线中,阻尼比越小,超调量越大,上升时间越短,通常取kesai在0.4到0.8之间,此时超调量适度,调节时间较短; 若二阶系统的阻尼比不变,振荡频率不同,其阶跃响应的振荡特性相同但响应速度不同,wn越大,响应速度越快。
分析2:分析系统响应曲线的零初值,非零初值与系统模型的关系。 解:当分子分母多项式阶数相等时响应曲线初值为非零初值,当分子多项式的阶数小于分母多项式的阶数时,响应曲线的初值为零初值。
分析3:分析响应曲线的稳态值和系统模型的关系
解:当分子分母多项式阶数相等时响应曲线稳态值为0,分子多项式的阶数小于分母多项式的阶数时,响应曲线稳态值为1。
分析4:分析系统零点对响应曲线的影响。 解:当系统存在不稳定零点(右半平面零点),系统的阶跃响应可能有向下的峰值。
6
7.2.3 控制系统的脉冲响应
实验目的:观察学习控制系统的单位脉冲响应 记录时间响应曲线
掌握时间响应分析的一般方法
实验内容: 1. 二阶系统Gs10s2s102
1)键入程序,观察并记录单位阶跃响应曲线 First.m close all; clear all; clc;
num=[10];den=[1 2 10]; impulse(num,den); title(‘时间响应曲线’);
3)键入damp(den) 计算系统的闭环根、阻尼比、无阻尼振荡频率,并记录
结果:
7
Eigenvalue(闭环根) Damping(阻尼比) Freq. (rad/s)(无阻尼振荡频率)
-1.00e+000 + 3.00e+000i 3.16e-001 3.16e+000 -1.00e+000 - 3.00e+000i 3.16e-001 3.16e+000
3)记录实际测取的峰值大小、峰值时间及过渡过程时间,并填表:
峰值Cmax 峰值时间tp 过渡时间 Ts 实际值 2.08 0.442 2.93 3.95 理论值 1.3511 1.0467 3.01 4.0 5% 2%
2 1)修改参数,分别实现1和2的响应曲线,并记录 程序:second.m clear all; close all; clc;
n0=10;d0=[1 2 10];impulse(n0,d0);%原系统,kesai=0.36 hold on;%保持原曲线
n1=n0;d1=[1 6.32 10];impulse(n1,d1);%kesai=1; n2=n0;d2=[1 12.64 10];impulse(n2,d2);%kesai=2;
8
如图,kesai分别为0.36,1,2,曲线幅度递减
2)修改参数,分别写出程序实现wn11w0和wn22w0的响应曲线,并记录
2程序:third.m clear all; close all; clc;
n0=10;d0=[1 2 10];impulse(n0,d0);%原系统,wn0=10^0.5 hold on;%保持原曲线
n1=0.25*n0;d1=[1 1 n1];impulse(n1,d1);%wn1=0.5*wn0; n2=4*n0;d2=[1 4 n2];impulse(n2,d2);%wn2=4*wn0=2;
9
如图,wn=2*wn0,wn0,0.5*wn0
3. 作出以下系统的脉冲响应,并与原系统响应曲线进行比较,作出相应的实验分析结果
(1)G1s(2)G2s
2s10s2s1022,有系统零点的情况
s20.5s10s2s10,分子、分母多项式阶数相等
程序:
%各系统脉冲响应曲线比较
G0=tf([10],[1 2 10]);G1=tf([2 10],[1 2 10]);G2=tf([1 0.5 10],[1 2 10]); Impulse(G0,G1,G2); grid on;
title('impulse Response 曲线比较');
分析1:系统阻尼比和无阻尼振荡频率对系统脉冲响应的影响
解:在欠阻尼响应曲线中,阻尼比越小,超调量越大,上升时间越短,通常取kesai在0.4到0.8之间,此时超调量适度,调节时间较短; 若二阶系统的阻尼比不变,振荡频率不同,其阶跃响应的振荡特性相同但响应速度不同,wn越大,响应速度越快。
分析2:分析系统响应曲线的零初值,非零初值与系统模型的关系。 解:当分子分母多项式阶数相等时响应曲线初值为非零初值,当分子多项式的阶数小于分母多项式的阶数时,响应曲线的初值为零初值。
分析3:分析响应曲线的稳态值和系统模型的关系
解:无论分子分母多项式阶数是否相等,系统响应曲线稳态值为0。
10
分析4:分析系统零点对响应曲线的影响。 解:当系统存在不稳定零点(右半平面零点),系统的阶跃响应可能有向下的峰值。
11
7.2.4 控制系统的根轨迹分析
实验目的
1.利用计算机完成控制系统的根轨迹作图 2.了解控制系统根轨迹图的一般规律 3.利用根轨迹图进行系统分析
实验内容 1. Gskgss1s2
要求:
A. 记录根轨迹的起点、终点与根轨迹的条数; B. 确定根轨迹的分离点与相应的根轨迹增益; C. 确定临界稳定时的根轨迹增益kgL
程序: k=1; z=[];
p=[0 -1 -2];
[num,den]=zp2tf(z,p,k); rlocus(num,den);
a: 根轨迹起点为(0,0),(-1,0),(-2,0),终点为无穷远,根轨迹条数为3条
12
b:由图中可得到分离点的坐标大致为(-0.432,0),根轨迹增益为0.385 c:由图中可得到临界稳定时的根轨迹增益大致为5.92 2:G(s)k(s1)
s(s1)(s24s16)确定根轨迹与虚轴的交点并确定系统稳定的根轨迹增益范围。
程序: K=1; z=[-1];
p=[1,0,-2+2*3^0.5*i,-2-2*3^0.5*i]; [num,den]=zp2tf(z,p,k); rlocus(num,den);
13
做出根轨迹图,由图中可以发现分离点坐标分别为(-2.25,0),(0.448,0)
调用rlocfind(num,den)指令,绘出如上两张图,有matlab面板得到根轨迹增益,前者为22.9,后者为36.5,分析根轨迹图可知,须保证根轨迹位于s平面左半边系统才能处于稳定状态,因此,根轨迹增益范围为22.9—36.5。 3. G(s)Kgs3ss2
要求:确定系统具有最大超调量时的根轨迹增益,做时域仿真验证;
确定系统阶跃响应无超调量时的根轨迹增益取值范围,做时域仿真验证; 程序 k=1; z=-3; p=[0,-2];
[num,den]=zp2tf(z,p,k); rlocus(num,den);
分析:对于最大超调量,则对应着最小阻尼比,即最大阻尼角,因此从原点向根轨迹做切线,切点就是对应最大超调量的闭环极点,将其带入闭环特征方程
s(s2)Kgs30,即可得到此时的K值
对于阶跃响应无超调量,则意味着阻尼比大于等于1,因此对应根轨迹上实轴根轨迹部分,因此将分离点,汇合点的值代入闭环特征方程,即可求出两个临界的K
最大超调量:
14
作图得到切点坐标为 -2.03 + 1.43i,此时K值为2.06,此时得到最大超调量
% Matlab阶跃响应曲线程序
num=2.06*[1 3];den=[1 2 0];sys1=tf(num,den);sys2=feedback(sys1,1,-1); step(sys2)
title(' 系统阶跃响应曲线');
此时超调量为2.7%
15
无超调量:由根轨迹图读出分离点和汇合点的增益
可知分离点增益为0.536,汇合点增益为7.46
所以无超调量时的根轨迹增益取值范围为(0,0.536),(7.46,∞)。
4:分析闭环极点在s平面的位置与系统动态性能的关系
16
7.2.5 控制系统的波特图
实验目的
1. 利用计算机作出开环系统的波特图 2. 观察记录控制系统的开环频率特性 3. 控制系统的开环频率特性分析 实验内容
1.G(s) 2.G(s)1 其中T=0.1,a=2,1,0.5,0.1,0.01分别作图并保持
T*T*s22*a*s131.6
s(0.01s1)(0.1s1)要求:a 作波特图
b 计算稳定峪度,并确定系统稳定性
c 在图上作近似折线特性,与原准确特性相比较 1.程序:
kosi1=2; kosi2=1; kosi3=0.5; kosi4=0.1; kosi5=0.01; num=0.01;
den1=[0.01 0.2*kosi1 1]; den2=[0.01 0.2*kosi2 1]; den3=[0.01 0.2*kosi3 1]; den4=[0.01 0.2*kosi4 1]; den5=[0.01 0.2*kosi5 1]; G1=tf(num,den1); G2=tf(num,den2); G3=tf(num,den3); G4=tf(num,den4); G5=tf(num,den5);
bode(G1,G2,G3,G4,G5); grid on;
title('G(s) 波特曲线簇');
得到的结果图:
17
2.程序 clc clear close all num=[31.6];
den=conv([1 0],conv([0.01 1],[0.1 1])); bode(num,den); grid on;
[Mg,Pc,wg,wc]=margin(num,den)
18
分析:
幅值裕度:3.4810 相角裕度:22.2599 对于系统有: 系统稳定时:幅值裕度>1 相角裕度>0 ;幅值裕度和相角裕度越大,系统越稳定。 系统临界稳定时:幅值裕度=1 相角裕度=0; 系统不稳定时:幅值裕度<1 相角裕度<0; 所以该系统是稳定的。 3.G(s)k(s1),令K=1作波特图,应用频域稳定判据确定系统的稳定性,
s2(0.1s1)并确定使系统获得最大相角峪度cmax的增益K值。 程序: num=[1 1];
den=conv([1 0 0],[0.1 1]); bode(num,den);
[Mg,Pc,wg,wc]=margin(num,den) grid on;
[k,r]=rlocfind(num,den)
由图中得到最大相角峪度cmax为44.4594 由matlab面板得到此时的K值为 1.9004e+003
19
0.5s1做波特图并保持曲
0.1s1线,分别计算两个系统的稳定峪度,并比较稳定性。 clc clear close all num=[1];
den=conv([1 0],[1 1]); bode(num,den);
[Mg,Pc,wg,wc]=margin(num,den)
hold on
num=[0.5 1];
den=conv([0.1 1],[1 1 0]); bode(num,den);
[Mg,Pc,wg,wc]=margin(num,den) grid on;
4.已知系统结构图(省略),分别令Gc(s)1,G(s)
稳定峪度由图中可读出来,G(s)0.5s1的相角裕度为68.1degGc(s)1的相
0.1s1角裕度为51.8deg。
0.5s1比较:G(s)的相角裕度大于Gc(s)1的相角裕度。所以0.1s10.5s1G(s)系统稳定性比G(s)=1的系统稳定性要高。
0.1s1
20
7.2.6 控制系统的极坐标图
实验目的:
1.利用计算机作出开环系统的极坐标图 2.极坐标图系统分析
实验内容: 1.系统为G(s)1
s(Ts1)实验要求:
作极坐标图(如展示不清,可改变坐标范围或设定角频率变量(w=w1:△w:w2))。
程序 num=1; den=[3 1 0];
nyquist(num,den); axis([-4,1,-30,30])
响应曲线如下
2.系统为G(S)=
k(T1s1),T1>T2或T2>T1
s(T2s1)要求:作极坐标图(可改变坐标范围或设定角频率变量w;比较T1>T2或T2>T1时
21
两图的区别与特点。
程序 num=[2 1]; den=[1 1 0];
nyquist(num,den,'r'); gtext('T1>T2') hold on num2=[1 1]; den2=[2 1 0];
nyquist(num2,den2,'b');
gtext('T1 实验结果及分析 响应曲线如下 T1>T2时,图像位于一四象限,且其极坐标图的起点与终点均位于右半平面;T1 T1时两图的区别与特点。 22 程序; num=[2 1]; den=[1 1 0 0]; nyquist(num,den,'r'); gtext('T1>T2') hold on num2=[1 1]; den2=[1.5 1 0 0]; nyquist(num2,den2,'b'); gtext('T1 实验结果 响应曲线如下 23 T2=1 7.3.1线性系统的数学模型 实验目的 1.学习系统数学模型的各种表示方法 2.学习系统数学模型之间的转换与线性变换 实验内容 (1)给定系统为 num=[1 1.3 2 2.5]; den=[1 0.3 1.2 1]; 使用m函数[a,b,c,d]=td2ss(num,den)求系统的状态空间方程;使用m函数[z,p,k]=tf2zp(num,den)求系统的零极点表达式。 程序: num=[1 1.3 2 2.5]; den=[1 0.3 1.2 1]; [a,b,c,d]=tf2ss(num,den); [z,p,k]=tf2zp(num,den) a,b,c,d,z,p,k 程序运行结果: a = -0.3000 -1.2000 -1.0000 1.0000 0 0 0 1.0000 0 b = 1 0 0 c = d= 1.0000 0.8000 1.5000 1 z = -0.0138 + 1.4017i -0.0138 - 1.4017i -1.2724 + 0.0000i p = k= 0.1919 + 1.1940i 1 0.1919 - 1.1940i -0.6838 + 0.0000i 24 系统的空间状态方程式: 系统的传递函数: (2)给定传递函数 1.使用m函数[a,b,c,d]=tf2ss(num,den)求得各系统的状态空间方程; 仿真输入程序: num1=[0.5]; den1=[0.1 1 0]; num2=[0.5]; den2=[0.05 1 0]; [a1,b1,c1,d1]=tf2ss(num1,den1); [a2,b2,c2,d2]=tf2ss(num2,den2); a1,b1,c1,d1,a2,b2,c2,d2 程序运行结果: a1 = -10 0 1 0 b1 = 1 0 c1 = 0 5 d1 = 0 a2 = -20 0 1 0 b2 = 1 25 0 c2 = 0 10 d2 = 0 系统的空间状态方程式: 2.使用m函数[a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2)作串联连接,求得状态空间方程和传递函数; 仿真输入程序: num1=[0.5]; den1=[0.1 1 0]; num2=[0.5]; den2=[0.05 1 0]; [a1,b1,c1,d1]=tf2ss(num1,den1); [a2,b2,c2,d2]=tf2ss(num2,den2); a1,b1,c1,d1,a2,b2,c2,d2 [a,b,c,d]=series(a1,b1,c1,d1,a2,b2,c2,d2) [num,den]=ss2tf(a,b,c,d) 程序运行结果: a = -20 0 0 5 1 0 0 0 0 0 -10 0 0 0 1 0 b = 0 0 1 0 c = 0 10 0 0 26 d = 0 num = 0 0 0 0 50 den = 1 30 200 0 0 系统的空间状态方程式: 系统的传递函数: 3.使用m函数[a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2)作并联连接,求得状态空间方程和传递函数; 仿真输入程序: num1=[0.5]; den1=[0.1 1 0]; num2=[0.5]; den2=[0.05 1 0]; [a1,b1,c1,d1]=tf2ss(num1,den1); [a2,b2,c2,d2]=tf2ss(num2,den2); a1,b1,c1,d1,a2,b2,c2,d2 [a,b,c,d]=parallel(a1,b1,c1,d1,a2,b2,c2,d2) [num,den]=ss2tf(a,b,c,d) 程序运行结果: a = -10 0 0 0 1 0 0 0 0 0 -20 0 0 0 1 0 b = 1 27 0 1 0 c = 0 5 0 10 d = 0 num = 0 0 15.0000 200.0000 0.0000 den = 1 30 200 0 0 系统的空间状态方程式: 系统的传递函数: 心得体会:本学期通过对控制系统数字仿真的学习,对MATLAB有了进一步的认识。数 据的各种运算、矩阵的分析和处理、程序设计、绘图、数值计算及符号运算的学习,初步掌握了MATLAB的实用方法。通过理论课的讲解与实验课的操作,使我在短时间内学会使用MATLAB,同时,通过上机实验,对理论知识的复习巩固实践,可以自己根据例题编写设计简单的程序来实现不同的功能,绘制出比较满意的二维三维图形,在实践中找到乐趣。 MATLAB是一个实用性很强,操作相对容易,比较完善的工具软件,使用起来比较方便,通过操作可以很快看到结果,能够清晰的感觉到成功与失败,虽然课程中也会出现一些小问题,但是很喜欢这门课程。感谢老师的指导和帮助通过这学期的学习自己收获很大! 28 因篇幅问题不能全部显示,请点此查看更多更全内容