设置带宽和相位裕度自动设计PI值
输入被控对象传递函数、带宽、相位裕度
输出kp ki和bode地图
还没有详细写评论,如果你感兴趣的话请评论
clear clc; 全部关闭;
格式长整型
%输入
my_w=2000; 输入%预期带宽
my_phasemargin=60; %输入预期的相位裕度
%sysol=TF(num,den ); %输入系统开环传递函数
%%Kpwm
E=30;
Vtri=1;
Kpwm=E/Vtri;
num=[Kpwm];
den=[1];
sysPWM=TF(num,den ) )。
%%LCR
保持打开;
L=1e-3;
C=20e-6;
R=10;
num=[1];
den=[L*C L/R 1];
sysLCR=TF(num,den ) )。
%%PI
保持打开;
% syms Kp Ki;
Kp=0.071942446944953; %计算结束后,在这里填写结果就可以看到bode了
Ki=-5.197455364855435e 02;
num=[Kp Ki];
den=[1 0];
syspi=TF(num,den ) )。
%margin(syspi ) ) ) ) ) ) ) ) ) ) ) ) )。
%%OLCL
sysol=series(sysLCR,sysPI ) )。
sysol=series(sysol,sysPWM ) )。
是bode(syspi )
边距(sys ol ) )。
legend(syspi ),) sysOL );
SYSCL=feedback(sysol,1 ) ) ) ) ) ) ) ) ) )。
%figure(2) )。
%bode(syscl )
%Margin(syscl ) ) ) ) ) ) ) ) ) )。
%legend(syscl );
百分之%求解带宽对Kp Ki的函数
syms kp;
syms ki;
w=2*pi*my_w;
s=1i*w;
golw=(KPki/s ) ) e/) L*C*S^2L/R*S1 );
golw_gain=ABS(golw )==1;
kp1=solve(golw_gain,KP );
KP1=real(double ) subs (kp1,ki,0 ) )
golw=subs(golw,kp,kp1 );
golw_phase=angle(golw )/pi*180 )=-180my_phasemargin;
ki1=solve(golw_phase,ki ) ) ) ) ) ) ) ) ki1=solve(golw_phase,ki ) )
fprintf (设计的Ki值为) ) ) )。
ki1=real(double ) ki1 ) )
fprintf (设计的Kp值为) ) )。
kp1
% s=简单(KP )
%double(s.KP ) )。
%double(s.ki ) )。
设计结果和输入一致!
还不完美。 如果有问题的话,欢迎交流评论区域~