Example: Modeling a Bus Suspension System
Physical setup
Design requirements
Equations of motion
Entering equations into Matlab
Open-loop response
Transfer function

Physical setup

Designing an automatic suspension system for a bus turns out to be an interesting control problem. When the suspension system is designed, a 1/4 bus model (one of the four wheels) is used to simplify the problem to a one dimensional spring-damper system. The block-diagram of this system is shown below:


Where:

* body mass (m1) = 2500 kg,
* suspension mass (m2) = 320 kg
* spring rate (k) = 10,000 N/m,
* damping constant (b) = 140,000 Ns/m.
* control force (u) = force from the controller we are going to design.

Design requirements:

A good bus suspension system should have satisfactory road holding ability, while still providing comfort while riding over the bumps and holes in the road. When the bus is experiencing any road disturbance (i.e. pot holes, cracks, and uneven pavement),the bus body should not have large oscillations, and the oscillations should dissipate quickly. Since the distance X1-W is very difficult to measure, and the deformation of the tire (X2-W) is negligible, we will use the distance X1-X2 instead of X1-W as the output in our problem. Keep in mind that this is an estimation.

The road disturbance (W) in this problem will be simulated by a step input. This step could represent the bus coming out of a pothole. We want to design a feedback controller so that the output (X1-X2) has an overshoot less than 5% and a settling time shorter than 5 seconds. For example, when the bus runs onto a 10 cm high step, the bus body will oscillate within a range of +/- 5 mm and return to a smooth ride within 5 seconds.

Equations of motion:

From the picture above and Newton's law, we can obtain the dynamic equations as the following:


The equations above can be expressed in state-space form by choosing X1, X2, and their derivatives as the state variables:

Entering equations into Matlab

We can put the above space-form equations into Matlab by defining the four matrices, A, B, C, and D, of the standard state-space equation


Now, let's create a new m-file and enter the following code:

Open-loop response

We can use Matlab to see how the original open-loop system performs (without any feedback control). Add the following commands into the m-file and run it in the Matlab command window to see the response to a 0.1 m high step disturbance input. Note that the B matrix has been multiplied by 0.1 to simulate a 10 cm high step.

To see some details, you can change the axis:

From this figure we see that when the bus passes a bump on the road, the bus body will oscillate for an unacceptably long time. People sitting in the bus will not be comfortable with such an oscillation. The big overshoot (from the impact itself) and the slow settling time will cause damage to the suspension system. The solution to this problem is to add a feedback controller into the system to improve the performance. The schematic of the closed-loop system is the following:

Transfer function

Before we start designing the controller, let's first find the transfer functions for the Plant and the disturbance transfer function, F respectively. We can find the transfer function of the plant (from u to X1-X2) by adding the following code into your m-file:

Rerun the m-file and you should get the results from your Matlab command window as the following: Note that the numerator polynomial of 5th order with two leading zeros. This may get us some trouble in the future when we add a controller to the system. When the numerator is combined with the controller numerator, the two leading zeros may increase the order of magnitude of the closed-loop numerator polynomial so that it is of higher order than the denominator polynomial. This situation is not allowed by Matlab and will result in an error. Click here and read about transforming state-space equations to transfer functions to learn more about this problem. To eliminate these two digits, redefine the num to be only the last three digits by adding the following text into the m-file: Now we know the transfer function of the plant is nump/denp, but what is the transfer function of F? First we need to find out the transfer function from W to X1-X2: Matlab should return: Add the following lines into your m-file: From the schematic above we see that F * Plant=num1/den1, so that F=num1/(den1*Plant), or:

Now the schematic becomes:

These tutorials contain solutions to this control problem using four different design methods: PID, root locus, frequency response, and state-space; links to these solutions are given below.


User Survey
Your anonymous answers to the following questions will help us to improve future versions of these tutorials.
How useful was this example?
Very useful Useful Somewhat useful Not very useful A waste of time
How was the level of the example?
Too simple About right Too difficult
How much time did you spend on it?
Less than 30 mins. 30 - 60 mins. More than 60 mins.
How much of the Matlab code did you run?
None Some Most

We would like to hear about suggestions you have for improvement, difficulties you had with the tutorials, errors that you found, or any other comments that you have. This feedback is anonymous.

If you would like to receive a response, send your comments or questions to ctm-feedback@umich.edu


Modeling Examples
Cruise Control | DC Motor | Bus Suspension | Inverted Pendulum

Bus Suspension Examples
Modeling | PID | Root Locus | Frequency Response | State Space

Tutorials
Basics | Modeling | PID | Root Locus | Frequency Response | State Space | Examples

Home Index commands

8/29/96 YS