程序运行结果如图2所示
1.41.210.80.60.40.2000.511.522.5
图2系统阶跃响应曲线
采用simulink对系统进行建模,如图3所示
图3利用Simulink对系统建模
可以从scope中得到系统的不同响应曲线,如下图4,这与编程的结果完全相同的。
图4系统阶跃响应曲线
10
步骤4 分析系统的响应特性。
在上面的语句[y.t.x]=steo(num,den)执行之后,变量y中就存放了系统阶跃响应的具体数值。从响应曲线中不难看出,系统的稳态值为1。可以利用如下代码计算系统的超调量。 y_stable=1;
max_response=max(y);
sigma=(max_respomse-y_stable)/y_stable 程序运行结果为 sigma = 0.2077
同时可看出,系统的稳态误差为0。示波器error的波形显示如图5所示,可见,当阶跃输入作用系统2s后,输出就基本为1了。
图5系统误差曲线
还可以精确计算出系统的上升时间、峰值时间及调整时间。如上所述,y中储存了系统阶跃响应的数据;同时,x中方存放了其中每个数据对应的时间,编写代码如下。 for i =1:length(y) If y(i)>y_stable break; end end tr=x(i)
[max_response,index]=max(y); tp=x(index)
for i =1:length(y)
If max(y(i:length(y)))<=1.02*y_stable If min(y(i;length(y)))>0.98*y_stable break end end end ts=x(i)
程序运次结果为 tr = 0.5298 tp = 0.7947 ts = 1.9074
11
即上升时间为0.52s,峰值时间为0.77s,并且系统在经过1.88s后进入稳态。 题2
利用MATLAB建立控制系统的数学模型,并且同时显示Wn=1,阻尼系数取不同值时系统的阶跃响应曲线,代码如下 clc; clear;
t=linspace(0,20,200)’; omega=1;
omega2=omega^2;
zuni=[0,0.1,0.2,0.5,1,2,3,5]; num=omega2; for k=1:8
den=[1 2 * zuni(k)*omega omega2]; sys=tf(num,den); y(:,k)=step(sys,t); end
figure(1);
plot(t,y(:,1:8)); grid;
gtext(‘zuni=0’);gtext(‘zuni=0.1’);gtext(‘zuni=0.2’);gtext(‘zuni=0.5’); gtext(‘zuni=1’);gtext(‘zuni=2’);gtext(‘zuni=3’);gtext(‘zuni=5’); 运行程序,结果如图6所示
21.81.61.41.210.80.60.40.200zuni=0zuni=0.1zuni=0.2zuni=0.5zuni=1zuni=2zuni=3zuni=52468101214161820
图6固定自然频率,阻尼比变化时系统的阶跃响应曲线
利用MATLAB在一幅图像的上绘制阻尼系数=0.55,Wn从0.1变化到1时系统的阶跃响应曲线,代码如下
12
clc; clear;
t=linspace(0,20,200)’; zuni=0.55;
omega=[0.1,0.2,0.4,0.7,1]; omega2=omega^2; for k=1:5
num=omega2(k);
den=[1 2 * zuni*omega(k) omega2(k)]; sys=tf(num,den); y(:,k)=step(sys,t); end
figure(2);
plot(t,y(:,1:5)); grid;
gtext(‘omega=0.1’);gtext(‘omega=0.2’);gtext(‘omega=0.4’); gtext(‘omega=0.7’);gtext(‘omega=1.0’); 运行代码,结果如图7所示
1.41.2omega=1.0omega=0.70.8omega=0.4omega=0.2omega=0.110.60.40.2002468101214161820
图7固定阻尼系数,自然频率变化时系统的阶跃响应曲线
13
实验4 MATLAB/Simulink在根轨迹分析法中应用
一、实验目的
1、掌握MATLAB/Simulink绘制根轨迹函数; 2、掌握MATLAB/Simulink绘制根轨迹的方法。 二、实验设备
电脑一台;MATLAB仿真软件一个 三、实验内容
1、已知单位负反馈控制系统的开环传递函数G(s)?k(s?1)。(1)画出这个
s(s?1)(s?4)系统的根轨迹;(2)确定使闭环系统稳定的增益值k;(3)分析系统的阶跃响应性能;(4)利用rltool对系统的性能进行分析。 实验代码1:
clc; clear; num=[1 1];
den=conv([1 0],conv([1 -1],[1 4])); sys=tf(num,den)
输出结果: Transfer function: s + 1 ----------------- s^3 + 3 s^2 - 4 s
实验代码2:
rlocus(sys); grid on;
title('?ù1ì?£í?')
输出结果:
14