一、时域指标
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)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