Active Suspension System Model Based Design - Part 1
Active Suspension System Model Based Design - Part 1
In This study, we’ll go through the process of designing an Active Suspension System by looking at three phases of the design
process, which are, Modelling, Control System Design, and State Estimation for the system.
During Every step of the Way We'll Apply our techniques on MATLAB and Simulink to Simulate and Validate our design.
We'll Start with a traditional passive suspension system and then Build our way up of making it Active.
Modelling
The essential function of a suspension system is to carry the Vehicle's Chassis with the wheels and absorb the vibrations
and forces coming from the road surface.
Modelling Aim: Describe how the road surface affects the wheel & chassis motion.
We’ll apply this study on the quarter car suspension system.
1. Structuring
𝑧𝑤 (𝑡), 𝑧𝑐 (𝑡)
We can start our system structuring with a simple block diagram 𝑧𝑟 (𝑡) Suspension 𝑣𝑤 (𝑡), 𝑣𝑐 (𝑡)
explaining the inputs to our system and the outputs from our system. System
We can declare the input (𝑧𝑟 (𝑡)) as the road distribution, and the outputs ( 𝑧𝑤 (𝑡), 𝑧𝑐 (𝑡),𝑣𝑤 (𝑡), 𝑣𝑐 (𝑡)) are the wheel’s position
and velocity, and the chassis’ position and velocity. The Suspension System can be Modelled as a Mass-Spring-Damper System.
𝐹𝑑 𝐹𝑐
𝑧𝑤 𝑧𝑐
𝑚𝑤 𝑚𝑐
𝐹𝑡 𝐹𝑑 𝐹𝑐
In the figures above, we deduced a simple Free Body Diagram representing the quarter model suspension system where: ( 𝐹𝑑 ) is
the Damper force, ( 𝐹𝑐 ) is the Spring force, and ( 𝐹𝑡 ) is the forces generated at the wheels.
2. System Equations
𝑚𝑤 𝑎𝑤 = 𝐹𝑑 + 𝐹𝑐 − 𝐹𝑡
1) Conservation Laws
𝑚𝑐 𝑎𝑐 = −𝐹𝑐 − 𝐹𝑑
2) Constitutive Laws
Elongation
𝑥̇ = 𝑓(𝑥, 𝑢, 𝑑)
3. Forming The State-Space System Output
General State-Space form
𝑦 = 𝑓(𝑥, 𝑢, 𝑑)
signal
Input
To form our State-Space system we need to go through a signal
four-step process:
1. Choosing the state variables, which form the state vector (x).
2. Differentiating the state variables.
3. Apply variable change.
4. Rewrite the equations in Matrix Form.
1. Choosing the state variables: State variables
We can do this by asking ourselves, what are the states that are changing in the system equations?
The answer to this question, in this system is: we have four changing variables in the system equations: (𝒛𝒘 , 𝒛𝒄 , 𝒗𝒘 , 𝒗𝒄 ).
2. Differentiating the state variables:
→ 𝑧̇𝑤 = 𝑣𝑤
1 1
→ 𝑣̇𝑤 = 𝑎𝑤 = (𝐹𝑑 + 𝐹𝑐 − 𝐹𝑡 ) = (𝑑𝑠 (𝑣𝑐 − 𝑣𝑤 ) + 𝑐𝑠 (𝑧𝑐 − 𝑧𝑤 ) − 𝑐𝑤 (𝑧𝑤 − 𝑧𝑟 ))
𝑚𝑤 𝑚𝑤
→ 𝑧̇𝑐 = 𝑣𝑐
1 1
→ 𝑣̇𝑐 = 𝑎𝑐 = (−𝐹𝑐 − 𝐹𝑑 ) = (−𝑐𝑠 (𝑧𝑐 − 𝑧𝑤 ) − 𝑑𝑠 (𝑣𝑐 − 𝑣𝑤 ))
𝑚𝑤 𝑚𝑤
Set: 𝑥1 = 𝑧𝑤 ,
𝑥2 = 𝑣𝑤 ,
State Variables
𝑥3 = 𝑧𝑐 ,
𝑥4 = 𝑣𝑐 ,
𝑢 = 𝑧𝑟 , The Input signal to our suspension system, which is the road
𝑦1 = 𝑧𝑤 = 𝑥1 , disturbance
The outputs to our system can be chosen however we like. In this case the outputs are chosen to
𝑦2 = 𝑣𝑐 = 𝑥3 be the wheel position, and chassis position.
→ 𝑥̇ 1 = 𝑥2
1
→ 𝑥̇ 2 = (𝑑𝑠 (𝑥4 − 𝑥2 ) + 𝑐𝑠 (𝑥3 − 𝑥1 ) − 𝑐𝑤 (𝑥1 − 𝑢))
𝑚𝑤
→ 𝑥̇ 3 = 𝑥4
1
→ 𝑥̇ 4 = (−𝑐𝑠 (𝑥3 − 𝑥1 ) − 𝑑𝑠 (𝑥4 − 𝑥2 ))
𝑚𝑐
→ 𝑦1 = 𝑥1
→ 𝑦2 = 𝑥3
4. Rewrite the equations in Matrix Form:
0 1 0 0
𝑥̇ 1 −(𝑐𝑠 +𝑐𝑤 ) −𝑑𝑠 𝑐𝑠 𝑑𝑠 𝑥1 0
𝑐𝑤
𝑥̇ 2 𝑚𝑤 𝑚𝑤 𝑚𝑤 𝑚𝑤 𝑥2
[ ]= [𝑥 ] + 𝑚𝑤 𝑢
𝑥̇ 3 0 0 0 1 3
𝑐𝑠 𝑑𝑠 −𝑐𝑠 −𝑑𝑠 𝑥4 0
𝑥̇ 4 [ 0 ]
[ 𝑚𝑐 𝑚𝑐 𝑚𝑐 𝑚𝑐 ]
If we can recall the general
state-space matrix form: 𝑥̇ = 𝑨 𝑥 + 𝑩𝑢
𝑥1
𝑦1 1 0 0 0 𝑥2 0
[𝑦 ] = [ ] [𝑥 ] + [ ] 𝑢
2 0 0 1 0 3 0
𝑥4
𝑦 = 𝑪 𝑥 + 𝑫𝑢
0 1 0 0
−(𝑐𝑠 +𝑐𝑤 ) −𝑑𝑠 𝑐𝑠 𝑑𝑠
𝑚𝑤 𝑚𝑤 𝑚𝑤 𝑚𝑤
So, our state-space matrices are: 𝐴 =
0 0 0 1
𝑐𝑠 𝑑𝑠 −𝑐𝑠 −𝑑𝑠
System Dynamics Matrix [ 𝑚𝑐 𝑚𝑐 𝑚𝑐 𝑚𝑐 ]
0
𝑐𝑤
𝑚𝑤 1 0 0 0 0
𝐵= 𝐶=[ ] 𝐷=[ ]
0 0 0 1 0 0
Inputs Matrix [0]
Measurements Matrix Feedthrough Matrix
5. MATLAB Implementation
We can easily implement our system in MATLAB in a few lines of code and simulate it on Simulink to test out the system in any
gives scenario.
Our scenario will be: The Vehicle Going over a 5 cm speed bump. This will be the input to our system as the road distribution. The
simulation will be 10 seconds with the speed bump occurring in 2.5 seconds.
The following table contains the physical parameters to our vehicle and suspension system:
Description Parameter Value
Quarter car chassis mass 𝑚𝑐 401 Kg
Wheel mass 𝑚𝑤 48 Kg
Suspension damping coefficient 𝑑𝑠 5,000 Ns/m
Suspension spring coefficient 𝑐𝑠 10,000 N/m
Wheel spring coeffiecient 𝑐𝑤 250,000 N/m
The scope we should be focusing on would be the Chassis’ position scope on the far right. We can see that at 2.5 seconds when
the vehicle went over the 2.5-cm speed bump, the Chassis started moving up and down because of the speed bump and the
suspension system as well.
We can also test our system on various road distribution to really push our system’s stability testing to the extremes.
The positions of the wheels and the chassis are important quantities to keep track of when studying chassis dynamics properties
like vehicle handling or ride comfort. Unfortunately, it's difficult to measure these quantities directly. Therefore, the relative
distance between the wheel and chassis and the acceleration of the chassis can be measured instead.
Fortunately, due to the systematic nature of our modelling process, it’s easy to apply any changes we’d like on our systems.
1. The displacement, relative distance, between the wheel and the chassis is given as: (𝑧𝑐 − 𝑧𝑤 ), or (𝑥3 − 𝑥1 ).
1 1
2. The acceleration of the chassis is equal to (𝑣̇𝑐 = 𝑎𝑐 = (−𝐹𝑐 − 𝐹𝑑 ) = (−𝑐𝑠 (𝑧𝑐 − 𝑧𝑤 ) − 𝑑𝑠 (𝑣𝑐 − 𝑣𝑤 )), or
𝑚𝑤 𝑚𝑤
1
(𝑥̇ 4 = (−𝑐𝑠 (𝑥3 − 𝑥1 ) − 𝑑𝑠 (𝑥4 − 𝑥2 )).
𝑚𝑐
𝑐𝑠 𝑑𝑠 𝑐𝑠 𝑑𝑠
3. We can rewrite the Chassis acceleration equation as: 𝑥̇ 4 = 𝑥1 + 𝑥2 − 𝑥3 − 𝑥
𝑚𝑐 𝑚𝑐 𝑚𝑐 𝑚𝑐 4
4. The new output becomes:
𝑥1
𝑦1 −1 0 1 0 𝑥
[𝑦 ] = [ 𝑐𝑠 𝑑𝑠 𝑐𝑠 𝑑 𝑠 ] [ 2 ] + [0 ] 𝑢
2 − − 𝑥3 0
𝑚𝑐 𝑚𝑐 𝑚𝑐 𝑚𝑐
𝑥4
−1 0 1 0 0
Where, our new C-Matrix is [ 𝑐𝑠 −
𝑑𝑠
− ],
𝑐𝑠 and the
𝑑𝑠 D-Matrix remains to equal [ ]. This State-Space system now allows the
𝑚𝑐 𝑚𝑐 𝑚𝑐 𝑚𝑐 0
outputs to be the relative distance between the wheel and chassis and the acceleration of the chassis as required.
5. To simulate our modifications to the system, we just need to change the C-matrix in our MATLAB code as the following:
C = [-1 0 1 0;
cs/mc ds/mc -cs/mc -ds/mc];
Now, all we have to do is test our model furthermore and fine tune it to meet the requirement that should be fulfilled.
6. Testing the Suspension Model
• Having the same code as before but with the new C-Matrix we can use the same Simulink model, but the outputs will be the
relative distance between the wheel and chassis and the acceleration of the chassis.
• By simulating the same road distribution of a speed bump of 5 cm that occurs at 2.5 seconds we can see the performance as
follows:
• These scopes already have given us an insight that probably the ride comfort is low because of the high amplitude oscillations
in the chassis acceleration and vertical distance being experienced by the vehicle going over the speed bump.
We can recall that the A-Matrix is We can use this matrix to analyze the
Quick Note on Stability Analysis: system’s stability by calculating its
called the system dynamics matrix.
eigen values.
• If we calculate the Eigen values of our A-Matrix with the eig(A) command in MATLAB, we get the following values:
−50.1661 + 35.4229𝑖 We can confidently assume that
−50.1661 − 35.4229𝑖 our suspension system is STABLE
because all our eigen values have
−13.8094
negative real values.
−2.4939
• So, Yeah! The system is stable. Sweet.
One final note, in suspension designs, it’s always a trade-off between ride-comfort and ride-handling. And the parameters we
can tweak and tune to achieve a certain requirement are the Suspension damping coefficient and the Suspension spring
coefficient.
We can further investigate this point using simulations to validate the changes that the system would experience when we tweak
those two values between: 300 ≤ 𝑑𝑠 ≤ 5000 & 10,000 ≤ 𝑐𝑠 ≤ 40,000.
Between the following values, we need to determine the best settings for maximum road handling and ride comfort:
Case #1 𝒄𝒔 = 𝟏𝟎, 𝟎𝟎𝟎 𝒅𝒔 = 𝟑𝟎𝟎
Case #2 𝑐𝑠 = 17,000 𝑑𝑠 = 1000
Case #3 𝑐𝑠 = 23,000 𝑑𝑠 = 2200
Case #4 𝑐𝑠 = 30,000 𝑑𝑠 = 3100
Case #5 𝑐𝑠 = 40,000 𝑑𝑠 = 4500
Using the same MATLAB code but changing the values as in the table and plotting the Chassis acceleration and displacement we
get the following figures:
We can now understand the huge impact the values of the spring coefficient and damper coefficient have on the system.
And by looking carefully at the plots, we can see that Case #3 can achieve the best road handling and ride comfort and
Here’s why:
→ When our vehicle goes over the 5 cm speed bump, case #3 adjustments allow the vehicle to achieve both relatively low
peak values with relatively low settling time, but with also little oscillations as well.
→ Any other case may achieve low chassis movements but can be accompanied with aggressive accelerations, and vice
versa.