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.
采纳的回答
Bora Eryilmaz
2022-12-22
编辑:Bora Eryilmaz
2022-12-22
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 个评论
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.
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.
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 ?
更多回答(0 个)
类别
在 帮助中心 和 File Exchange 中查找有关 Get Started with Control System Toolbox 的更多信息
另请参阅
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
