# Digital Root Locus in Scilab

I have the following digital plant:

$$\G(z)=\cfrac{z+1}{(z-0.3)(z-1)}\$$

I want to use root locus to design a system with:

(1) position error=0;

(2) overshoot $$\\leq 10\%\$$

(3) settling time $$\\leq\$$ 5 seconds

(4) rise time as small as possible

I made the design manually:

Calculations done so far:

The overshoot requirement leads to $$\ \zeta \geq 0.6 \$$,

$$\t_s=\cfrac{4.5}{|\sigma|}\Rightarrow |\sigma|\geq \cfrac{4.5}{5}=0.9\$$

Unitary circle centered in the origin with radius of $$\e^{-0.9T}\$$. If T=1, the radius is $$\e^{-0.9}\approx 0.41\$$.

$$\-\cfrac{1}{h}=\cfrac{z+1}{(z-0.3)(z-1)}\$$

Zero: z=-1

Poles: z=0.3; z=1

Break point:

$$\N'D-ND'=0 \Leftrightarrow -z^2-2z+1.6=0\leftrightarrow z\approx 0.612 \vee z=-2.612\$$

I need to determine $$\h\$$, so I have to determine $$\z_h\$$. How could I determine $$\h\$$ in Scilab?

• Sorry, but I could not follow at all. How can this be $-\cfrac{1}{h}=\cfrac{z+1}{(z-0.3)(z-1)}$ ? I mean the is no real number $h$ to get this result. Is $h$ some sort of gain? Are you looking for the gain that makes the root locus position the poles at a certain position?
– jDAQ
Jan 30 '20 at 19:55
• @jDAQ $h$ is a gain. I put a diagram in the post to exemplify. Jan 30 '20 at 20:17

Using the following code we can obtain the path the poles go as you change k.


G = poly([-1],'z')/poly([0.3 1],'z');

figure;
evans(G,10)
zgrid;

y = [];
for k = logspace(-2,1,1000)
y = [y abs(roots((k*G/(1+k*G)).den))];
end

figure;
plot2d("ll",logspace(-2,1,1000),y')
legend('a1','a2')

//pick here your optimal gain
L = 0.5*G;
L = L/(1+L);
t = 0:21;
figure;
plot(t,dsimul(tf2ss(L),ones(1,1+max(t))),'x')



module of the poles in function of k.

root locus of the system.

If you manually/algorithmically search the path in $$\ y\$$ you will be able to find the $$\ k \$$ that minimizes the time, for that you don't have to just to minimize $$\ |\sigma|\$$ but also get it to be near the minimum damping $$\ \zeta = 0.6\$$. And get a result similar to