我是靠谱客的博主 奋斗狗,最近开发中收集的这篇文章主要介绍控制系统Matlab仿真——校正,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一、时域指标

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仿真——校正所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(44)

评论列表共有 0 条评论

立即
投稿
返回
顶部