The open-loop transfer function for this problem is:
The design criteria are:
To see the original problem setup, refer to Cruise Control Modeling page.
Recall from the Root-Locus Tutorial page, the root-locus plot shows the locations of all possible closed-loop poles when a single gain is varied from zero to infinity. Thus, only a proportional controller (Kp) will be considered to solve this problem. The closed-loop transfer function becomes:
Also, from the Root-Locus Tutorial, we know that the MATLAB command called sgrid should be used to find an acceptable region of the root-locus plot. To use the sgrid, both the damping ratio (zeta) and the natural frequency (Wn) need to be determined first. The following two equations will be used to find the damping ratio and the natural frequency:
One of our design criteria is to have a rise time of less than 5 seconds. From the first equation, we see that the natural frequency must be greater than 0.36. Also using the second equation, we see that the damping ratio must be greater than 0.6, since the maximum overshoot must be less than 10%.
Now, we are ready to generate a root-locus plot and use the sgrid to find an acceptable region on the root-locus. Create an new m-file and enter the following commands.
Running this m-file should give you the following root-locus plot.
The two dotted lines in an angle indicate the locations of constant damping ratio (zeta=0.6); the damping ratio is greater than 0.6 in between these lines and less than 0.6 outside the lines. The semi-ellipse indicates the locations of constant natural frequency (Wn=0.36); the natural frequency is greater than 0.36 outside the semi-ellipse, and smaller than 0.36 inside.
If you look at the MATLAB command window, you should see a prompt asking you to pick a point on the root-locus plot. Since you want to pick a point in between dotted lines (zeta>0.6) and outside the semi-ellipse (Wn>0.36), click on the real axis just outside the semi-ellipse (around -0.4).
You should see the gain value (Kp) and pole locations in the MATLAB command window. Also you should see the closed-loop step response similar to the one shown below.
With the specified gain Kp (the one you just picked), the rise time and the overshoot criteria have been met; however, a steady-state error of more than 10% remains.
To reduce the steady-state error, a lag controller will be added to the system. The transfer function of the lag controller is:
The open-loop transfer function (not including Kp) now becomes:
Finally, the closed-loop transfer function becomes:
If you read the "Lag or Phase-Lag Compensator using Root-Locus" section in Lead and Lag Compensator page, the pole and the zero of a lag controller need to be placed close together. Also, it states that the steady-state error will be reduce by a factor of Zo/Po. For these reasons, let Zo equal -0.3 and Po equal -0.03.
Create an new m-file, and enter the following commands.
m = 1000; b = 50; u = 10; Zo=0.3; Po=0.03; num=; den=[m b]; cruise=tf(num,den); contr=tf([1 Zo],[1 Po]); rlocus(contr*cruise); axis([-0.6 0 -0.4 0.4]) sgrid(0.6,0.36); [Kp, poles]=rlocfind(contr*cruise); sys_cl=feedback(Kp*contr*cruise,1); t=0:0.1:20; step(u*sys_cl,t) axis ([0 20 0 12])
Running this m-file should give you a root-locus plot similar to the following:
In the MATLAB command window, you should see the prompt asking you to select a point on the root-locus plot. Once again, click on the real axis around -0.4. You should have the following response.
As you can see, the steady-state error has been reduced to near zero. The slight overshoot is a result of the zero added in the lag controller.
Now all of the design criteria have been met and no further iterations are needed.