How to plot the phase margin?

Hello I have one tricky question where I am struck.I know how to plot the bode diagtam using the margin command but i am not sure how can i implement more than 30% margin part. my system and requirement is below. Please help me to understand how can i do this.

 Accepted Answer

The transfer function 20/(s+1) is your controller. As it is, it does not give you a 50-degree phase margin. You need to modify this controller to achieve the desired phase margin. There are couple ways of doing this:
  • Either reduce the gain of the controller to achieve a larger phase margin, but at a lower frequency.
  • Or add additional phase using controller terms such as lead-lags.
% Initial compensator
C = zpk([], -1, 20);
% The plant
G = zpk(-20, [-2 -5], 1);
% Phase and gain margin of the open-loop transfer function with initial
% compensator
L = C*G;
margin(L)
% Modify the compensator C to obtain the desired phase margin (this part is
% up to you, since this seems like a homework question).
C = zpk([], -2, 10) % This is my trivial change, will not give 50 degrees phase margin.
C = 10 ----- (s+2) Continuous-time zero/pole/gain model.
L = C*G;
margin(L)
% Bode plot of the compentator
bode(C)
% Closed-loop system
T = L / (1 + L);
bode(T)
step(T)

6 Comments

Hardik
Hardik on 22 Dec 2022
Edited: Hardik on 22 Dec 2022
Hello thank you sir for your explanation i have one question that can i use the following code to get moe than 50% phase margin. I have set the phase margin to 51%.
clc;
close all;
s=tf('s'); % To enter the transfer function directly
V= 51/(s+1); % This will give 51 degrees phase margin
G= (s+20)/((s+2)*(s+5));
margin(V)
M = C*G;
margin(M)
bode(C)
S = M / (1 + M);
bode(S)
step(S)
Did I do this correctly?
Please run your code and see yourself if
margin(M)
gives you the desired phase margin.
C= 51/(s+1); % This will give 51 degrees phase margin
How do you know that the controller C above will give you a 51 degree phase margin? Its gain is 51, but that doesn't necessarily give you a 51 degree phase margin.
Hardik
Hardik on 22 Dec 2022
Edited: Hardik on 22 Dec 2022
SIr i run the code and I understand that I had to reduce the gain value I have use the following code and in bode plot it says Pm = 61.3 deg.
clc;
close all;
clear all;
s=tf('s'); % To enter the transfer function directly
V= 1.5/(s+1); % This will give 61.3 degrees phase margin
G= (s+20)/((s+2)*(s+5));
M=V*G
margin(M)
Did i do it correctly this time sir?
Looks like it. If the phase margin is better than 50 degrees, then your controller satisties the requirements of your problem. Also take a look at the step response of the closed loop system to make sure it is well behaved:
s = tf('s'); % To enter the transfer function directly
V = 1.5/(s+1); % This will give 61.3 degrees phase margin
G = (s+20)/((s+2)*(s+5));
M = V*G;
margin(M)
step(M/(1+M))
You will see that the steady-state step response value of your closed-loop system is not 1. This was not part of your question, but normally this would not be an acceptable step response... As a small hint, if your controller had an integrator, the steady-state response would have converged to 1, which is more desirable.
Okay Sir. I understand. thank you for all your help.
Hardik
Hardik on 22 Dec 2022
Edited: Hardik on 22 Dec 2022
Hello Sir, in my next part of problem I have to use the Feedback command in Matlab to find the closed loop transfer function of the compensated system. Provide the overall closed loop transfer function.
I have done the coding part but I am bit confused here that Do i have to use feedback command on original given system or the output TF i get from this part i have to use?
And if i have to use new obtanined TF then do i also have to use the plant value (s+20) and multiply them and then use the feedback command ?

Sign in to comment.

More Answers (0)

Categories

Products

Release

R2022b

Asked:

on 22 Dec 2022

Edited:

on 23 Dec 2022

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!