Quarter Suspension On Matlab
Quarter Suspension On Matlab
To create a cost-effective automobile suspension system that can be extensively employed in vehicles, the
major automotive agencies and research institutes in the industry have now committed significant people
and material resources. Retaining non-stop avenue wheel contact to provide avenue grip and shielding the
car body from the road's abnormalities are the two main goals of the suspension system. According to
several studies, drivers' physical and mental health are impacted by energy depletion caused by vibrations
from irregular road surfaces [1].
One of the most crucial components of a car is the suspension system, which may lessen impact loads
from the road to increase the comfort and stability of the ride. In contrast to semi-active and passive
suspension systems, the active suspension system has the ability to provide energy from a force from an
outside source in order to accomplish the intended outcome [1]. The ongoing halt system's exceptional
performance and control characteristics make it a popular choice for automobiles. The ride comfort, ride
quality, and vehicle suspension performance indicators are the major road holding, suspension deflection,
and other factors; nonetheless, these three indices are typically at odds with one another. For example,
increasing ride comfort causes the suspension deflection to rise and the reduction in the road holding of
the tires [2]. The purpose of the suspension system's design is not only to pass the reaction force straight
to the chassis but also to reduce vibration, assure ride comfort, and enhance stability control. A
corresponding sensor, an actuator, and the active suspension system and a control device capable of
providing the suspension system with force and displacement depending on the passive suspension
configuration. The actuator has the ability to produce force based on changes in the road input in real time
[20]
MATLAB Code
% Physical parameters
mb = 300; % kg
mw = 60; % kg
bs = 1000; % N/m/s
ks = 16000 ; % N/m
kt = 190000; % N/m
% State matrices
A = [ 0 1 0 0; [-ks -bs ks bs]/mb ; ...
0 0 0 1; [ks bs -ks-kt -bs]/mw];
B = [ 0 0; 0 1e3/mb ; 0 0 ; [kt -1e3]/mw];
C = [1 0 0 0; 1 0 -1 0; A(2,:)];
D = [0 0; 0 0; B(2,:)];
qcar = ss(A,B,C,D);
qcar.StateName = {'body travel (m)';'body vel (m/s)';...
'wheel travel (m)';'wheel vel (m/s)'};
qcar.InputName = {'r';'fs'};
qcar.OutputName = {'xb';'sd';'ab'};
The transfer function from actuator to body travel and acceleration has an imaginary-axis zero with
natural frequency 56.27 rad/s. This is called the tire-hop frequency.
tzero(qcar({'xb','ab'},'fs'))
Similarly, the transfer function from actuator to suspension deflection has an imaginary-axis zero with
natural frequency 22.97 rad/s. This is called the rattlespace frequency.
Get
zero(qcar('sd','fs'))
Road disturbances influence the motion of the car and suspension. Passenger comfort is associated with
small body acceleration. The allowable suspension travel is constrained by limits on the actuator
displacement. Plot the open-loop gain from road disturbance and actuator force to body acceleration and
suspension displacement.
bodemag(qcar({'ab','sd'},'r'),'b',qcar({'ab','sd'},'fs'),'r',{1 100});
legend('Road disturbance (r)','Actuator force (fs)','location','SouthWest')
title({'Gain from road dist (r) and actuator force (fs) ';
'to body accel (ab) and suspension travel (sd)'})
Because of the imaginary-axis zeros, feedback control cannot improve the response from road
disturbance r to body acceleration ab at the tire-hop frequency, and from r to suspension deflection sd at
the rattle space frequency. Moreover, because of the relationship xw=xb−sd and the fact that the wheel
position xw roughly follows r at low frequency (less than 5 rad/s), there is an inherent trade-off between
passenger comfort and suspension deflection: any reduction of body travel at low frequency will result in
an increase of suspension deflection..
The hydraulic actuator used for active suspension control is connected between the body mass mb and the
wheel assembly mass mw. The nominal actuator dynamics are represented by the first-order transfer
function 1/(1+s/60) with a maximum displacement of 0.05 m.
Get
This nominal model only approximates the physical actuator dynamics. We can use a family of actuator
models to account for modeling errors and variability in the actuator and quarter-car models. This family
consists of a nominal model with a frequency-dependent amount of uncertainty. At low frequency, below
3 rad/s, the model can vary up to 40% from its nominal value. Around 3 rad/s, the percentage variation
starts to increase. The uncertainty crosses 100% at 15 rad/s and reaches 2000% at approximately 1000
rad/s. The weighting function Wunc is used to modulate the amount of uncertainty with frequency.
Get
Wunc = makeweight(0.40,15,3);
unc = ultidyn('unc',[1 1],'SampleStateDim',5);
Act = ActNom*(1 + Wunc*unc);
Act.InputName = 'u';
Act.OutputName = 'fs';
The result Act is an uncertain state-space model of the actuator. Plot the Bode response of 20 sample
values of Act and compare with the nominal value.
Get
rng('default')
bode(Act,'b',Act.NominalValue,'r+',logspace(-1,3,120))
Time-Domain Evaluation
To further evaluate the three designs, perform time-domain simulations using a road disturbance
signal r(t) representing a road bump of height 5 cm.
Get
% Road disturbance
t = 0:0.0025:1;
roaddist = zeros(size(t));
roaddist(1:101) = 0.025*(1-cos(8*pi*t(1:101)));
% Closed-loop model
SIMK = connect(qcar,Act.Nominal,K,'r',{'xb';'sd';'ab';'fs'});
% Simulate
p1 = lsim(qcar(:,1),roaddist,t);
y1 = lsim(SIMK(1:4,1,1),roaddist,t);
y2 = lsim(SIMK(1:4,1,2),roaddist,t);
y3 = lsim(SIMK(1:4,1,3),roaddist,t);
% Plot results
subplot(211)
plot(t,p1(:,1),'b',t,y1(:,1),'r.',t,y2(:,1),'m.',t,y3(:,1),'k.',t,roaddist,'g')
title('Body travel'), ylabel('x_b (m)')
subplot(212)
plot(t,p1(:,3),'b',t,y1(:,3),'r.',t,y2(:,3),'m.',t,y3(:,3),'k.',t,roaddist,'g')
title('Body acceleration'), ylabel('a_b (m/s^2)')
subplot(211)
plot(t,p1(:,2),'b',t,y1(:,2),'r.',t,y2(:,2),'m.',t,y3(:,2),'k.',t,roaddist,'g')
title('Suspension deflection'), xlabel('Time (s)'), ylabel('s_d (m)')
subplot(212)
plot(t,zeros(size(t)),'b',t,y1(:,4),'r.',t,y2(:,4),'m.',t,y3(:,4),'k.',t,roaddist,'g'
)
title('Control force'), xlabel('Time (s)'), ylabel('f_s (kN)')
legend('Open-loop','Comfort','Balanced','Handling','Road
Disturbance','location','SouthEast')
Use hinfsyn to compute an H∞ controller for each value of the blending factor β.
Get
gamma
gamma = 3×1
0.9405
0.6727
0.8892
The three controllers achieve closed-loop H∞ norms of 0.94, 0.67 and 0.89, respectively. Construct the
corresponding closed-loop models and compare the gains from road disturbance to xb,sd,ab for the passive
and active suspensions. Observe that all three controllers reduce suspension deflection and body
acceleration below the rattlespace frequency (23 rad/s).
Get
% Closed-loop models
K.u = {'sd','ab'}; K.y = 'u';
CL = connect(qcar,Act.Nominal,K,'r',{'xb';'sd';'ab'});
Control Objectives
The example has the following three control objectives:
Good handling defined from road disturbance to suspension deflection.
User comfort defined from road disturbance to body acceleration.
Reasonable control bandwidth.
The nominal values of the spring constant and damper between the body and
the wheel assembly are not exact and due to the imperfections in the materials, these values can
be constant but different. Assess the impact on the system control using a variety of parameter
values.
mdl = 'rct_suspension.slx';
open_system(mdl)
Model the road disturbance of magnitude seven centimeters and use a constant weight.
Get
Wroad = ss(0.07);
Define the closed-loop target for handling from road disturbance to suspension deflection as
Get
HandlingTarget = 0.044444 * tf([1/8 1],[1/80 1]);
Define the target for comfort from road disturbance to body acceleration.
Get
ComfortTarget = 0.6667 * tf([1/0.45 1],[1/150 1]);
Limit the control bandwidth by the weight function from road disturbance to the control signal.
Get
Wact = tf(0.1684*[1 500],[1 50]);
For more information on selecting the closed-loop targets and the weight function, see Robust Control of
Active Suspension.
https://www.mdpi.com/1999-4893/11/12/205