Plotting root locus with variables in transfer function

Hi. I've been using matlab to plot root loci for my control systems class but I ran into a problem with a recent assignment. This particular problem asks me to plot the root locus of a system in which the transfer function has a variable gain in addition to numeric terms. I just don't have the matlab experience to figure out how to do this on my own with the help command. It would be greatly appreciated if anyone could help me with this. Thank you.

5 件のコメント

Jonathan Epperl
Jonathan Epperl 2012 年 11 月 25 日
You need to give more details for us to be able to help you. What is the form of the transfer function, where is the variable gain, where are the given numeric values?
Sean
Sean 2012 年 11 月 26 日
Ok sorry about that. The transfer function I have looks like this:
num = [25 0.75]
den = [1 9.04 (25 + K2 + 0.376) (25 + 0.75*K2 + .208) 1.326]
My assignment is to first plot this transfer function's root locus and then use the sgrid and other commands to find the value of K2 that will give this system a specific value of zeta.
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 11 月 26 日
rlocus don't work with transfer function in closed loop, you should give the transfer function in open loop, the k2 is a feedback to your system. Look at the example of my answer
Sean
Sean 2012 年 11 月 26 日
So if I have a diagram like this:
Can I factor out the K2 somehow and use that in the rlocus command as the K portion?
Azzi Abdelmalek
Azzi Abdelmalek 2012 年 11 月 26 日
編集済み: Azzi Abdelmalek 2012 年 11 月 26 日
Yes we can
g1=tf(1,[1 2]) % your GH(s) transfer function
g2=tf([1 1],[1 9]); % your second TF (s+1)/(s+9)
g=g1*g2;
rlocus(g)

サインインしてコメントする。

 採用された回答

Azzi Abdelmalek
Azzi Abdelmalek 2012 年 11 月 25 日
編集済み: Azzi Abdelmalek 2012 年 11 月 25 日

2 投票

If G(p) is your system transfer function, The transfer function of your system in a closed loop with gain k is Gc(p)=G(p)/(1+k.G(p))
%you are looking for closed loop system poles depending on k vakues
G=tf([1 10],[1 2 1]) % your system in open loop
k=0:0.1:100; % k values
rlocus(G,k); % your poles in closed loop
%or
rlocus(G);

その他の回答 (1 件)

Jonathan Epperl
Jonathan Epperl 2012 年 11 月 26 日

1 投票

Yeah, like Azzi is hinting: The regular Root Locus shows you where the solutions of the equation 1+k*G(s) = 0 go as you increase k from 0 to infinity.
Assuming you are interested in the transfer function from left to right here, it is
G_H/(1 + k_2*G_H*(s+1)/(s+9) ),
and so the closed-loop poles are precisely the solutions of 1 + k_2*G_H*(s+1)/(s+9) = 0. You will actually find, that this is the case for any transfer function in your loop, e.g. say from T_d to the controller output etc.
Anyway, you might be confused by the way the closed loop is written, probably you expect the controller in the forward path together with G_H, but you can just use the "normal" root locus techniques here, no trickery needed.
rlocus( series(G_H, tf([1 1],[1 9]) ) )

カテゴリ

Community Treasure Hunt

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

Start Hunting!

Translated by