给你我的一个我曾经编的超前校正的程序,可能有用:
对于函数功能不懂的,可以使用help命令:
function Gc=blead(G,kc,dPm)
dPm=50; %相位裕度/角度(包含5度的安全裕量);
kc=1; %设定开环增益;
G=tf([48e-3 48],[1e-9 1e-6 2e-3 1]); %生成待校正系统传递函数
[mag,phase,w]=bode(G*kc); %生成波特图矩阵形式(此处反馈系数设为1)
Mag=20*log10(mag); %生成开环幅值
[Gm,Pm.Wcg,Wcp]=margin(G*kc); %计算未校正系统的相角裕度;
phi=(dPm-getfield(Pm,'Wcg'))*pi/180; %计算网络系数
alpha=(1+sin(phi))/(1-sin(phi));
phi
Mn=-10*log10(alpha);
Wcgn=spline(Mag,w,Mn);%确定校正后系统的剪切频率Wcgn;
T=1/Wcgn/sqrt(alpha);
Tz=alpha*T; %确定校正器的交接频率(1/T和1/alpha*T)
Gc=tf([Tz 1],[T 1]); %得到校正器传函;
bode(G*Gc); %画出bode图
hold on;
bode(G);
温馨提示:答案为网友推荐,仅供参考