루덴스코드 Blog

Solution to the Ball & Beam Problem Using Root Locus Method

The open-loop transfer function of the plant for the ball and beam experiment is given below:

사용자 삽입 이미지
The design criteria for this problem are:
  • Settling time less than 3 seconds
  • Overshoot less than 5%

To see the derivation of the equations for this problem refer to the ball and beam modeling page. A schematic of the closed loop system with a controller is given below:

사용자 삽입 이미지

Open-loop Root Locus

The main idea of the root locus design is to estimate the closed-loop response from the open-loop root locus plot. By adding zeroes and/or poles to the original system (adding a compensator), the root locus and thus the closed-loop response will be modified. Let us first view the root locus for the plant in open loop. Create an m-file with the following Matlab code in order to model the plant and plot the root locus.

.....m = 0.111;
.....R = 0.015;
.....g = -9.8;
.....L = 1.0;
.....d = 0.03;
.....J = 9.99e-6;

.....K = (m*g*d)/(L*(J/R^2+m));   %simplifies input

.....num = [-K];
.....den = [1 0 0];

.....rlocus(num,den)

NOTE: Matlab commands from the control system toolbox are highlighted in red.

Now, run the m-file and you should see the following root locus plot:

사용자 삽입 이미지
As you can see the system has two poles at the origin which go off to infinity along the imaginary axes.

The design criteria can also be plotted onto the root locus using the sgrid command. This command generates a grid of constant damping ratio and natural frequency. The damping ratio and natural frequency were found using the following equation, which relates the them to our percent overshoot (PO) and settling time (Ts) requirements:

사용자 삽입 이미지
사용자 삽입 이미지
Note, that the equation with Ts is found by assuming settled is when the response remains within 2% of it's final value. From these equation damping ratio and natural frequency were found to be 0.7 and 1.9 respectively.

.....sgrid(0.70, 1.9)
.....axis([-5 5 -2 2])

사용자 삽입 이미지
The area between the two dotted diagnol lines represents locations where the percent overshoot is less than 5%. The area outside the curved line represents locations where the setttling time is less than 3 seconds. Note that no region of the plot falls within the design criteria shown be these lines. To remedy this and bring the root locus into the left-hand plane for stability we will try adding a lead-compensator to the system.

Lead Controller
A first order lead compensator tends to shift the root locus into the left-hand plane. For a more detailed description of lead compensators refer to the Lead & Lag Compensator Design page. A lead compensator has the form given below:

사용자 삽입 이미지
where, the magnitude of zo is less than the magnitude of po.

Now, let us add the controller to the plant and view the root locus. We will position the zero near the origin to cancel out one of the poles. The pole of our compensator will be placed to the left of the origin to pull the root locus further into the left-hand plane. Add the following lines of Matlab code to your m-file.

.....zo = 0.01;
.....po = 5;

.....numlead = [1 zo];
.....denlead = [1 po];

.....numl = conv(num,numlead);
.....denl = conv(den,denlead);

.....rlocus(numl,denl)
.....sgrid(0.70, 1.9)


Run your m-file in the Matlab command window and you should see the following:

사용자 삽입 이미지
Now, the branches of the root locus are within our design criteria.

Selecting a Gain
Now that we have moved the root locus into the left-hand plane, we may select a gain that will satisfy our design requirements. We can use the rlocfind command to help us do this. Add the following onto the end of your m-file.

.....[kc,poles]=rlocfind(numl,denl)

Go to the plot and select a point near those indicated by the cross mark on the plot below:

사용자 삽입 이미지
You should see in the Matlab command window something similar to the following (your numbers will be slightly different):


.....selected_point =
.....  -2.4988+ 1.2493i
 
.....kc =
.....   37.3131
 
.....poles =
.....  -2.4950+ 1.2493i
.....  -2.4950- 1.2493i
.....  -0.0101       


Now, we can plot the response with this gain.

Plotting the Closed-loop Response
This value of kc can be put into the system and the closed-loop response to a step input of 0.25 m can be obtained. Add the following lines to your m-file to perform this analysis.

.....numl2 = kc*numl;
.....[numcl,dencl] = cloop(numl2,denl);
.....t=0:0.01:5;
.....figure
.....step(0.25*numcl,dencl,t)

Run your m-file and you select a point on the root locus similar to the selected point above. The step response should look like the following:

사용자 삽입 이미지
From this plot we see that when a 0.25m step input is given to the system both the settling time and percent overshoot design criteria are met.
Note: A design problem does not necessarily have a unique answer. Using this method (or any other) may result in many different compensators. Try running your m-file several more times selecting a different point each time and study the effect this has on the step response. For practice you may also want to go back to the original open-loop root locus and try to find other ways to add zeros and poles to get a better response.

Comment +0