概述
一、时域指标
clear;close all;clc;
G=zpk([],[-1+3*i,-1-3*i],3);
C=dcgain(G) %稳态值
[y,t]=step(G);%阶跃响应
plot(t,y)
grid
[Y,k]=max(y);%求最大值
timetopeak=t(k) %峰值时间
percentovershoot=100*(Y-C)/C %超调量
n=1;
while(y(n)<C)
n=n+1;
end
risetime=t(n) %上升时间
i=length(t);
while(y(i)>0.98*C) & (y(i)<1.02*C)
i=i-1;
end
settlingtime=t(i) %调节时间
二、频域指标
clear;close all;clc;
num=5*[0.0167,1];
den=conv(conv([1,0],[0.03,1]),conv([0.0025,1],[0.001,1]));
G=tf(num,den)
w=logspace(0,4,50); %对数坐标
bode(G,w); %波特图
grid
[Gm,Pm,Wcg,Wcp]=margin(G) %求裕量
三、比例微分控制
clear;close all;clc;
G=tf(1,conv(conv([1,1],[2,1]),[5,1]));
kp=2;
tou=[0,0.7,3];
for i=1:length(tou)
G1=tf([kp*tou(i),kp],1);
sys=feedback(G1*G,1);
step(sys);
hold on;
end
四、比例积分控制
clear;close all;clc;
G=tf(1,conv(conv([1,1],[2,1]),[5,1]));
kp=2;
ti=[3,14,28];
for i=1:length(ti)
G1=tf([kp,kp/ti(i)],[1,0]);
sys=feedback(G1*G,1);
step(sys);
hold on;
end
五、超前滞后校正
clear;close all;clc;
num_open=[0 20];
den_open=conv(conv([1 0],[1 1]),[1 2]);
sys_open=tf(num_open,den_open)
[Gm,Pm,Wcg,Wcp]=margin(sys_open)
margin(sys_open);
num_after=[1 0.1];
den_after=[1 0.01];
sys_after=tf(num_after,den_after);
sys_new=sys_open*sys_after;
margin(sys_new);
num_before=[1 0.5];
den_before=[1 5];
sys_before=tf(num_before,den_before);
sys_new=sys_new*sys_before
margin(sys_new);
figure(1)
bode(sys_open)
hold on
bode(sys_new)
grid on
figure(2)
subplot(211)
step(feedback(sys_open,1));
grid on
subplot(212)
step(feedback(sys_new,1));
grid on
最后
以上就是奋斗狗为你收集整理的控制系统Matlab仿真——校正的全部内容,希望文章能够帮你解决控制系统Matlab仿真——校正所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复