# Problem finding value of the gain such that the closed loop is stable

I have the following transfer function:

$$G(s)=\frac{-s^3 +s}{s^4+3s^3+2s^2}$$

and this is a transfer function of a plant with two poles in the origin. So I want to desing a controller with two poles in the origin in order to have zero steady state error. So the controller I want to desing is of the type:

$$C(s)=\frac{k}{s^2}$$

now, I want to find the k such that the closed loop is stable, but I am having some problems in doing so. I am using the Routh criterion, and I have that the closed loop is:

$$\frac{-k(s-1)}{s^4+2s^3-ks+k}$$

and the table for the Routh criterion:

$$1$$|$$0$$|$$k$$

$$2$$|$$-k$$|

$$\frac{k}{2}$$|$$k$$

$$\frac{-k^{2}-2k}{\frac{k}{2}}$$

$$k$$

and where I have omitted terms it means that there is a zero and the bar $$|$$ has been used to say that these numers are in different columns.

By doing this I obtain that the closed loop is stable if $$k>0$$ and $$k<-4$$, but if I use these values I have that the closed loop is unstable.

And also I would like to ask if there is a simpler way to find the value of $$k$$ instead of using the Routh Criterion, for example using Matlab.

What am I doing wrong?

• Why do you think you need a controller with two poles in the origin in order to have zero steady state error? – fibonatic Jan 29 at 2:44

To solve this problem I would:

1. Sketch the block diagram of the control network.

2. Derive the required closed loop transfer function in terms of $$G(s)$$ and $$C(s)$$.

3. Substitute the expressions for $$G(s)$$ and $$C(s)$$ to obtain the closed loop transfer function in terms of $$s$$.

4. Calculate the poles of the closed loop transfer function using your preferred method. Alternatively, you could use the Routh criterion to evaluate stability.

It should not matter which closed loop transfer function you select (e.g. sensitivity, complementary sensitivity, etc.), they should all have the same closed loop poles.

To do this in Matlab use tf to define your plant and controller transfer functions; then use feedback to calculate the closed loop transfer function (or better use the expression for the closed loop transfer function in terms of $$G(s)$$ and $$C(s)$$ derived above). You can then calculate the closed loop poles from this expression using the pole command.

To get an expression in symbolic form you will likely have to use the symbolic toolbox.

• Thank you for answering. What do you mean with the wrong order? Beacuse I am considering a SISO system, so $C(s)G(s) = G(s)C(s)$, or I misanderstood what you were saying? Thanks again. – J.D. Jan 28 at 19:10
• I'm doing this without pen & paper (so please check) but shouldn't the denominator in your closed loop expression be of fifth order? – user883521 Jan 28 at 19:57
• yes, you are right, I did the computions using the symbolic toolbox in Matlab, but probably something went wrong. I did it again manually and it is of grade 5. Thanks. – J.D. Jan 28 at 20:23
• @J.D. your expression in your question is correct, namely after doing some pole zero cancelation $G(s)$ can be simplified to a second order system. – fibonatic Jan 29 at 1:46
• @fibonatic Is right (and I was wrong)! The transferfunction $G(s)$ can be rewritten as $G(s) = \frac{-s(s-1)(s+1)}{s(s^2+2s)(s+1)}$. So indeed after pole-zero cancellation this becomes a second order system. – user883521 Jan 29 at 8:42