How to display bode plot graph?
1 view (last 30 days)
Show older comments
i'm doing my assignment project which is to display Glag lead compensator bode plot. i've already done the program. but somehow it does not show the output that i expected. it display the value of Glag compensator and Glead compensator, however, the value of Glag lead compensator is zero. can you please tell me what is wrong with my program...
'( LAG-LEAD COMPENSATOR BODE PLOT)' %Display label
pos=0.63; '(Type %OS)' %input desired percent overshoot
Tp=0.9222; '(Type peak time)' %input desired peak time
Kv=10; '(Type value of K)' %input desired Kv
numg=[1]; %define numerator of G(s)
deng=poly([0,-5,-11]); %define denominator of G(s)
G=tf(numg,deng); %create G(s) without K
s=tf([10],1); %create transfer function, 's'
sG=s*G; %cancel common factors
K=dcgain(Kv/sG); %solve for K
'G(s)' %display label
G=tf(K*numg,deng); %put K into G(s)
G=zpk(G) %convert G(s) to factored form and display
z=(-log(pos/100))/(sqrt(pi^2+log(pos/100)^2)); %calculate required damping ratio
Pmreq=atan(2*z/(sqrt(-2*z^2+sqrt(1+4*z^4))))*(180/pi); %calculate required phase margin
wn=pi/(Tp*sqrt(1-z^2)); %calculate required natural frequency
wBW=wn*sqrt((1-2*z^2)+sqrt(4*z^4-4*z^2+2)); %determine require bandwidth
wpm=0.8*wBW; %choose new phase margin frequency
[M,P]=bode(G,wpm); %get bode data
Pmreqc=Pmreq-(180+P)+5; %find phase contribution required
%from lead compensator
%with additional 5 deg
beta=(1-sin(Pmreqc*pi/180))/(1+sin(Pmreqc*pi/180)); %find beta
%design lag compensator
%zero, pole and gain
zclag=wpm/10; %calculate zero of lag compensator.
pclag=zclag*beta; %calculate pole of lag compensator.
Kclag=beta; %calculate gain of lag compensator.
'Lag compensator, Glag(s)' %display label
Glag=tf(Kclag*[1 zclag],[1 pclag]); %Create lag compensator.
Glag=zpk(Glag) %Convert Glag(s) to factored form
%and display.
%Design lead
%compensator zero,pole
%and gain.
zclead=wpm*sqrt(beta); %Calculate zero of lead compensator.
pclead=zclead/beta; %Calculate pole of lead compensator.
Kclead=1/beta; %Calculate gain of lead compensator.
'Lead compensator' %Display label.
Glead=tf(Kclead*[1 zclead],[1 pclead]); %Create lead compensator.
Glead=zpk(Glead) %Convert Glead(s) to factored form and display.
'Lag-Lead Compensated Ge(s)' %Display label.
Ge=G*Glag*Glead %Created compensated system,
%Ge(s)=G(s)Glag(s)Glead(s).
sGe=s*Ge; %Create sGe(s).
sGe=minreal(sGe); %Cancel common factors.
Kv=dcgain(sGe) %Calculate Kv
T=feedback(Ge,1); %find T(s).
step(T) %Generate closed-loop, lag-lead-compensated step response.
title('Lag-Lead-Compensated Step Response')
% This displays a Bode plot. %Add title to
%lag-lead-compensated
pause %step response.
and this is the result that i get...
ns =
( LAG-LEAD COMPENSATOR BODE PLOT)
ans =
(Type %OS)
ans =
(Type peak time)
ans =
(Type value of K)
ans =
G(s)
Zero/pole/gain: 0
ans =
Lag compensator, Glag(s)
Zero/pole/gain: 74.6983 (s+0.4169) ------------------ (s+31.14)
ans =
Lead compensator
Zero/pole/gain: 0.013387 (s+36.03) ------------------ (s+0.4824)
ans =
Lag-Lead Compensated Ge(s)
Zero/pole/gain: 0
Kv =
0
thank you for helping me..
1 Comment
Ryan G
on 21 Dec 2012
At what part of the code do you see the problem? You should try to narrow down the code to a few lines and try again, or post those few lines. You'll have trouble getting help dumping your code here.
Answers (1)
J Francisco
on 8 Dec 2023
'( LAG-LEAD COMPENSATOR BODE PLOT)' %Display label
pos=10; '(Type %OS)' %input desired percent overshoot
Tp=0.6; '(Type peak time)' %input desired peak time
Kv=10; '(Type value of K)' %input desired Kv
%////////////////////////////////
s = tf('s');
G=(1)/(s*(s+8)*(s+30)); %create G(s) without K
%///////////////////////////////
sG=s*G; %cancel common factors
K=dcgain(Kv/sG); %solve for K
'G(s)' %display label
%////////////////////////////
G=K*G; %put K into G(s)
%///////////////////////////
G=zpk(G) %convert G(s) to factored form and display
z=(-log(pos/100))/(sqrt(pi^2+log(pos/100)^2)); %calculate required damping ratio
Pmreq=atan(2*z/(sqrt(-2*z^2+sqrt(1+4*z^4))))*(180/pi); %calculate required phase margin
wn=pi/(Tp*sqrt(1-z^2)); %calculate required natural frequency
wBW=wn*sqrt((1-2*z^2)+sqrt(4*z^4-4*z^2+2)); %determine require bandwidth
wpm=0.8*wBW; %choose new phase margin frequency
[M,P]=bode(G,wpm); %get bode data
Pmreqc=Pmreq-(180+P)+5; %find phase contribution required
%from lead compensator
%with additional 5 deg
beta=(1-sin(Pmreqc*pi/180))/(1+sin(Pmreqc*pi/180)); %find beta
%design lag compensator
%zero, pole and gain
zclag=wpm/10; %calculate zero of lag compensator.
pclag=zclag*beta; %calculate pole of lag compensator.
Kclag=beta; %calculate gain of lag compensator.
'Lag compensator, Glag(s)' %display label
Glag=tf(Kclag*[1 zclag],[1 pclag]); %Create lag compensator.
Glag=zpk(Glag) %Convert Glag(s) to factored form
%and display.
%Design lead
%compensator zero,pole
%and gain.
zclead=wpm*sqrt(beta); %Calculate zero of lead compensator.
pclead=zclead/beta; %Calculate pole of lead compensator.
Kclead=1/beta; %Calculate gain of lead compensator.
'Lead compensator' %Display label.
Glead=tf(Kclead*[1 zclead],[1 pclead]); %Create lead compensator.
Glead=zpk(Glead) %Convert Glead(s) to factored form and display.
'Lag-Lead Compensated Ge(s)' %Display label.
Ge=G*Glag*Glead %Created compensated system,
%Ge(s)=G(s)Glag(s)Glead(s).
sGe=s*Ge; %Create sGe(s).
sGe=minreal(sGe); %Cancel common factors.
Kv=dcgain(sGe) %Calculate Kv
T=feedback(Ge,1); %find T(s).
step(T) %Generate closed-loop, lag-lead-compensated step response.
title('Lag-Lead-Compensated Step Response')
% This displays a Bode plot. %Add title to
%lag-lead-compensated
0 Comments
See Also
Categories
Find more on Classical Control Design in Help Center and File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!