VehicleDynamics.Chassis.Suspensions

Suspensions, models ready to be used as front or rear suspensions.

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension5 VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension5 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension4 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3 VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension VehicleDynamics.Chassis.Suspensions.SimpleSuspension VehicleDynamics.Chassis.Suspensions.SimpleSuspensionNoSteer VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2 VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension2 VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension3 VehicleDynamics.Chassis.Suspensions.FixedAxleSuspension VehicleDynamics.Chassis.Suspensions.FiveLinkSuspension VehicleDynamics.Chassis.Suspensions.SimpleTwistBeamSuspension

Information

 

In this library, suspension models are gahtered. To make the models easily repleaceable, the all share the same basic interface, i.e. one frame_C that is to be connected to the chassis and one frame_W per wheel, normally two, to connect to the wheels. Additionally, some supensions has a rotaty flage for the steering wheel.

 

NameDescription
MacPhersonSuspension5 MacPherson suspension with bushings, including anti roll bar linkage.
MacPhersonSuspension3 MacPherson suspension with bushings and a simplfied anti roll bar.
MultiLink4Suspension5 MultiLink4 suspension containing links with mass properties and an anti roll bar linkage
MultiLink4Suspension4 MultiLink4 suspension containing links with mass properties and simplified anti roll
MultiLink4Suspension3 MultiLink4 suspension with massless rods
TrailingArmSuspension Trailing arm suspension with anti roll linkage.
SimpleSuspension Steerable suspension without geometry. Camber and toe are give as functions of bounce.
SimpleSuspensionNoSteer Suspension without geometry. No steering possibility. Camber and toe are give as functions of bounce.
MacPhersonSuspension2 MacPherson suspension with ideal joints.
DoubleWishBoneSuspension Double wish-bone (A-arm) suspension with ideal joints.
DoubleWishBoneSuspension2 Double wish-bone (A-arm) suspension with an onboard belle-ville to decouple suspension and anti-roll characteristics.
DoubleWishBoneSuspension3 Double wish-bone (A-arm) suspension with onboard mounted struts.
FixedAxleSuspension Suspension with wheel mount points fixed rigidly to the chassis
FiveLinkSuspension Linkage with five links to contrain the motion. Ideal joints are used.
SimpleTwistBeamSuspension A simple twist beam suspension where the twist beam is replaced by a roational spring damper.


VehicleDynamics.Chassis.Suspensions.SimpleSuspension VehicleDynamics.Chassis.Suspensions.SimpleSuspension

Steerable suspension without geometry. Camber and toe are give as functions of bounce.

VehicleDynamics.Chassis.Suspensions.SimpleSuspension

Information


The suspension characteristics is modelled as camber and toe-in as functions of the bounce motion. This could easily be extended to handle also camber and toe-in as functions of side force, which would make it possible to mimic the behaviour of suspensions with bushings and other flexible elements.

Advantages: Fast simulations, possible to do studies of how suspension characterisitcs affects the vehicle's behaviour without the need to specify the type of suspension.

Disadvantages: When modelling a specific suspension, the characteristics must either be measured, meaning that the suspension has to be built, or that the suspension characteristics has to be calculated from a more detailed model.


Parameters

NameDefaultDescription
data  

Modelica definition

model SimpleSuspension 
  "Steerable suspension without geometry. Camber and toe are give as functions of bounce."
   
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Chassis.Components.AckermannSteering steering(
    wheelbase=data.wheelbase, 
    trackwidth=data.trackwidth, 
    ratio=data.ratio);
  Chassis.Components.Simple simple_1(
    scaleFactor=data.scaleFactor, 
    rUW=data.rUW_1, 
    q0Strut=data.q0S_1, 
    leftLinkage=true, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_S=data.data_S_1, 
    steeringPoly=data.data_Link1_steering, 
    camberPoly=data.data_Link1_camber, 
    rCU=data.rCU_1);
  Chassis.Components.Simple simple_2(
    rUW=data.rUW_2, 
    q0Strut=data.q0S_2, 
    leftLinkage=false, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_S=data.data_S_2, 
    steeringPoly=data.data_Link2_steering, 
    camberPoly=data.data_Link2_camber, 
    rCU=data.rCU_2);
  parameter Chassis.Data.SimpleDataFront data;
  Utilities.Forces.SpringDamperTable1D antiRoll(data=data.data_A);
equation 
  
  connect(steering.flange_a, flange_SW);
  connect(steering.flange_b2, simple_2.steerAxis);
  connect(steering.flange_b1, simple_1.steerAxis);
  connect(simple_2.frame_U, frame_U_2);
  connect(simple_1.frame_U, frame_U_1);
  connect(simple_1.frame_C, frame_C);
  connect(simple_2.frame_C, frame_C);
  connect(antiRoll.flange_a, simple_1.bounceAxis);
  connect(antiRoll.flange_b, simple_2.bounceAxis);
end SimpleSuspension;

VehicleDynamics.Chassis.Suspensions.SimpleSuspensionNoSteer VehicleDynamics.Chassis.Suspensions.SimpleSuspensionNoSteer

Suspension without geometry. No steering possibility. Camber and toe are give as functions of bounce.

VehicleDynamics.Chassis.Suspensions.SimpleSuspensionNoSteer

Information


This suspension is identical to SimpleSuspension except that this is not steerable.


Parameters

NameDefaultDescription
data  

Modelica definition

model SimpleSuspensionNoSteer 
  "Suspension without geometry. No steering possibility. Camber and toe are give as functions of bounce."
   
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Simple simple_1(
    scaleFactor=data.scaleFactor, 
    rUW=data.rUW_1, 
    q0Strut=data.q0S_1, 
    leftLinkage=true, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_S=data.data_S_1, 
    steeringPoly=data.data_Link1_steering, 
    camberPoly=data.data_Link1_camber, 
    rCU=data.rCU_1);
  Chassis.Components.Simple simple_2(
    rUW=data.rUW_2, 
    q0Strut=data.q0S_2, 
    leftLinkage=false, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_S=data.data_S_2, 
    steeringPoly=data.data_Link2_steering, 
    camberPoly=data.data_Link2_camber, 
    rCU=data.rCU_2);
  parameter Chassis.Data.SimpleDataRear data;
  Modelica.Mechanics.Rotational.Fixed fixed;
  Utilities.Forces.SpringDamperTable1D antiRoll(data=data.data_A);
equation 
  
  connect(simple_2.frame_U, frame_U_2);
  connect(simple_1.frame_U, frame_U_1);
  connect(simple_1.frame_C, frame_C);
  connect(simple_2.frame_C, frame_C);
  connect(fixed.flange_b, simple_2.steerAxis);
  connect(fixed.flange_b, simple_1.steerAxis);
  connect(antiRoll.flange_a, simple_1.bounceAxis);
  connect(antiRoll.flange_b, simple_2.bounceAxis);
end SimpleSuspensionNoSteer;

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2 VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2

MacPherson suspension with ideal joints.

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2

Information


The MacPherson strut suspension was invented in the 1940s by Earl S. MacPherson of Ford. It was introduced on the 1950 English Ford and has since become one of the dominating suspensions systems of the world because of its compactness and low cost. Unlike other suspension designs, in MacPherson strut suspension, the telescopic shock absorber also serves as a link to control the position of the wheel and makes the upper control arm obsolete. Since the strut is vertically positioned, the whole suspension is very compact and suitable for front-wheel drive cars, whose engine and transmission are all located inside the front compartment and need front suspensions which engage very little width of the car.

Advantages: Compact and cheap.

Disadvantages: Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.

Usage: The MacPherson strut is the dominatin front suspension for cars.

This version does not contain bushings and is completely rigid except for the strut.


Parameters

NameDefaultDescription
data  

Modelica definition

model MacPhersonSuspension2 
  "MacPherson suspension with ideal joints." 
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Components.RackSteering4 rackSteering(
    rXL_1=data.rUL3_1, 
    rRL_1=data.rRL3_1, 
    rX_1=data.rUW_1, 
    rXL_2=data.rUL3_2, 
    rRL_2=data.rRL3_2, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    iSW=data.iSW, 
    data_R=data.data_R);
  Components.MacPherson MacPherson_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCS=data.rCS_1, 
    rUS=data.rUS_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    q0S=data.q0S_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_S=data.data_S_1, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_1, 
    rUL3=data.rUL3_1);
  Components.MacPherson MacPherson_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCS=data.rCS_2, 
    rUS=data.rUS_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    q0S=data.q0S_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_S=data.data_S_2, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_2, 
    rUL3=data.rUL3_2);
  parameter Chassis.Data.MacPhersonData data;
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    scaleFactor=data.scaleFactor, 
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
equation 
  connect(rackSteering.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(MacPherson_1.frame_C, frame_C);
  connect(MacPherson_2.frame_C, frame_C);
  connect(MacPherson_1.frame_U, frame_U_1);
  connect(MacPherson_2.frame_U, frame_U_2);
  connect(antiRollBar.frame_C, frame_C);
  connect(antiRollBar.frame_X_2, MacPherson_2.frame_U);
  connect(antiRollBar.frame_X_1, MacPherson_1.frame_U);
  connect(rackSteering.frame_X_2, MacPherson_2.frame_S);
  connect(MacPherson_1.frame_S, rackSteering.frame_X_1);
end MacPhersonSuspension2;

VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension

Trailing arm suspension with anti roll linkage.

VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension

Information


Trailing arm suspension employs two trailing arms which are pivoted to the car body at the arm's front end's mountin points. To the other end of the arm, the wheel is mouted. The suspension is normally handled by a coil spring at each arm. The suspending motion allow no camber control to the motion induced by body roll. A more common approach is instead the semi trailing arm is that the arm's mouting points are located along a line that is not perpedicular to the car's longitudinal axis, generating a a varying camber, depending on body roll. The drawback is that the camber angle change also occure when going over uneven roads.

Advantages: Cheap and simple, can be made compact.

Disadvantages: Less refined than multi-link suspension which has replaced the trailing arm suspension in more expensive cars.

Usage: Very common until the early 90's. Now often used together with a twist-beam.


Parameters

NameDefaultDescription
data  

Modelica definition

model TrailingArmSuspension 
  "Trailing arm suspension with anti roll linkage." 
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    data=data.data_S_2, 
    s0=sqrt((data.rUS_2 - data.rCS_2)*(data.rUS_2 - data.rCS_2)) + data.q0S_2, 
    rA=data.rUS_2 - data.rUW_2);
  Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    s0=sqrt((data.rUS_1 - data.rCS_1)*(data.rUS_1 - data.rCS_1)) + data.q0S_1, 
    rA=data.rUS_1 - data.rUW_1);
  Chassis.Components.SimpleAntiRollBar antiRollLinkage(
    rCA_1=data.rCA_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rX_2=data.rUW_2, 
    data=data.data_A, 
    rAL_1=data.rAL1_1, 
    rXL_1=data.rUL1_1, 
    rAL_2=data.rAL1_2, 
    rXL_2=data.rUL1_2);
  Chassis.Components.TrailingArm leftTrailingArm(
    rCU=data.rCU_1, 
    rUW=data.rUW_1, 
    nCU=data.nCU_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1);
  Chassis.Components.TrailingArm rightTrailingArm(
    rCU=data.rCU_2, 
    rUW=data.rUW_2, 
    nCU=data.nCU_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2);
  parameter Chassis.Data.TrailingArmData data;
equation 
  connect(antiRollLinkage.frame_X_2, rightTrailingArm.frame_U);
  connect(antiRollLinkage.frame_X_1, leftTrailingArm.frame_U);
  connect(leftTrailingArm.frame_C, frame_C);
  connect(rightTrailingArm.frame_C, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_a, rightTrailingArm.frame_U);
  connect(Strut_1.frame_a, leftTrailingArm.frame_U);
  connect(antiRollLinkage.frame_C, frame_C);
  connect(leftTrailingArm.frame_U, frame_U_1);
  connect(rightTrailingArm.frame_U, frame_U_2);
end TrailingArmSuspension;

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3

MultiLink4 suspension with massless rods

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3

Information


This Multilink 4 suspensio is basically a trailing arm mounted in the chassis with a bushing. To stabilise the motion, three additional links connects the chassis and the arm. These have bushings at each end.

Advantages: Good compromise between a controlable wheel motion and comfort.

Disadvantages: More expensive than trailing arm suspensions. Requires more space.

Usage: The multilink is common in rear suspensions of more expensive cars from mid size and up. There are both MultiLink4 and MultiLink5 suspensions.

This version contains no ideal joints and the links are considered massless.


Parameters

NameDefaultDescription
data  

Modelica definition

model MultiLink4Suspension3 
  "MultiLink4 suspension with massless rods" 
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    s0=sqrt((data.rCS_2 - data.rUS_2)*(data.rCS_2 - data.rUS_2)) + data.q0S_1, 
    data=data.data_S_2, 
    rA=data.rUS_2 - data.rUW_2);
  Components.MultiLink4 multiLink_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCU=data.rCU_2, 
    rUL1=data.rUL1_2, 
    rUL2=data.rUL2_2, 
    rUL3=data.rUL3_2, 
    rUW=data.rUW_2, 
    data_CL1=data.data_CL1_2, 
    data_UL1=data.data_UL1_2, 
    data_CL2=data.data_CL2_2, 
    data_UL2=data.data_UL2_2, 
    data_CL3=data.data_CL3_2, 
    data_UL3=data.data_UL3_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_CU=data.data_CU_2);
  Components.MultiLink4 multiLink_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCU=data.rCU_1, 
    rUL1=data.rUL1_1, 
    rUL2=data.rUL2_1, 
    rUL3=data.rUL3_1, 
    rUW=data.rUW_1, 
    data_CL1=data.data_CL1_1, 
    data_UL1=data.data_UL1_1, 
    data_CL2=data.data_CL2_1, 
    data_UL2=data.data_UL2_1, 
    data_CL3=data.data_CL3_1, 
    data_UL3=data.data_UL3_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_CU=data.data_CU_1);
  Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    rA=data.rUS_1 - data.rUW_1, 
    s0=sqrt((data.rCS_1 - data.rUS_1)*(data.rCS_1 - data.rUS_1)) + data.q0S_1);
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
  parameter Chassis.Data.Multilink4Data data;
equation 
  connect(antiRollBar.frame_X_2, multiLink_2.frame_U);
  connect(multiLink_2.frame_U, frame_U_2);
  connect(multiLink_1.frame_U, frame_U_1);
  connect(antiRollBar.frame_X_1, multiLink_1.frame_U);
  connect(antiRollBar.frame_C, frame_C);
  connect(multiLink_2.frame_C, frame_C);
  connect(multiLink_1.frame_C, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_a, multiLink_1.frame_U);
  connect(Strut_2.frame_a, multiLink_2.frame_U);
end MultiLink4Suspension3;

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3 VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3

MacPherson suspension with bushings and a simplfied anti roll bar.

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3

Information


The MacPherson strut suspension was invented in the 1940s by Earl S. MacPherson of Ford. It was introduced on the 1950 English Ford and has since become one of the dominating suspensions systems of the world because of its compactness and low cost. Unlike other suspension designs, in MacPherson strut suspension, the telescopic shock absorber also serves as a link to control the position of the wheel and makes the upper control arm obsolete. Since the strut is vertically positioned, the whole suspension is very compact and suitable for front-wheel drive cars, whose engine and transmission are all located inside the front compartment and need front suspensions which engage very little width of the car.

Advantages: Compact and cheap.

Disadvantages: Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.

Usage: The MacPherson strut is the dominatin front suspension for cars.

This version contains bushings in the A-arm mount and there is an elacticity in the steering.


Parameters

NameDefaultDescription
data  

Modelica definition

model MacPhersonSuspension3 
  "MacPherson suspension with bushings and a simplfied anti roll bar."
   
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Components.RackSteering4 rackSteering(
    rXL_1=data.rUL3_1, 
    rRL_1=data.rRL3_1, 
    rX_1=data.rUW_1, 
    rXL_2=data.rUL3_2, 
    rRL_2=data.rRL3_2, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    iSW=data.iSW, 
    data_R=data.data_R);
  Components.MacPherson4 MacPherson_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCS=data.rCS_1, 
    rUS=data.rUS_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    q0S=data.q0S_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_S=data.data_S_1, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_1, 
    rUL3=data.rUL3_1);
  Components.MacPherson4 MacPherson_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCS=data.rCS_2, 
    rUS=data.rUS_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    q0S=data.q0S_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_S=data.data_S_2, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_2, 
    rUL3=data.rUL3_2);
  parameter Chassis.Data.MacPhersonData data;
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    scaleFactor=data.scaleFactor, 
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
equation 
  connect(rackSteering.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(MacPherson_1.frame_C, frame_C);
  connect(MacPherson_2.frame_C, frame_C);
  connect(MacPherson_1.frame_U, frame_U_1);
  connect(MacPherson_2.frame_U, frame_U_2);
  connect(antiRollBar.frame_C, frame_C);
  connect(antiRollBar.frame_X_2, MacPherson_2.frame_U);
  connect(antiRollBar.frame_X_1, MacPherson_1.frame_U);
  connect(rackSteering.frame_X_2, MacPherson_2.frame_S);
  connect(MacPherson_1.frame_S, rackSteering.frame_X_1);
end MacPhersonSuspension3;

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension4 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension4

MultiLink4 suspension containing links with mass properties and simplified anti roll

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension4

Information


This Multilink 4 suspensio is basically a trailing arm mounted in the chassis with a bushing. To stabilise the motion, three additional links connects the chassis and the arm. These have bushings at each end.

Advantages: Good compromise between a controlable wheel motion and comfort.

Disadvantages: More expensive than trailing arm suspensions. Requires more space.

Usage: The multilink is common in rear suspensions of more expensive cars from mid size and up. There are both MultiLink4 and MultiLink5 suspensions.

This version contains no ideal joints and the masses of the links are included.


Parameters

NameDefaultDescription
data  

Modelica definition

model MultiLink4Suspension4 
  "MultiLink4 suspension containing links with mass properties and simplified anti roll"
   
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    s0=sqrt((data.rCS_2 - data.rUS_2)*(data.rCS_2 - data.rUS_2)) + data.q0S_1, 
    data=data.data_S_2, 
    rA=data.rUS_2 - data.rUW_2);
  Components.MultiLink42 multiLink_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCU=data.rCU_2, 
    rUL1=data.rUL1_2, 
    rUL2=data.rUL2_2, 
    rUL3=data.rUL3_2, 
    rUW=data.rUW_2, 
    data_CL1=data.data_CL1_2, 
    data_UL1=data.data_UL1_2, 
    data_CL2=data.data_CL2_2, 
    data_UL2=data.data_UL2_2, 
    data_CL3=data.data_CL3_2, 
    data_UL3=data.data_UL3_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_CU=data.data_CU_2);
  Components.MultiLink42 multiLink_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCU=data.rCU_1, 
    rUL1=data.rUL1_1, 
    rUL2=data.rUL2_1, 
    rUL3=data.rUL3_1, 
    rUW=data.rUW_1, 
    data_CL1=data.data_CL1_1, 
    data_UL1=data.data_UL1_1, 
    data_CL2=data.data_CL2_1, 
    data_UL2=data.data_UL2_1, 
    data_CL3=data.data_CL3_1, 
    data_UL3=data.data_UL3_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_CU=data.data_CU_1);
  Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    rA=data.rUS_1 - data.rUW_1, 
    s0=sqrt((data.rCS_1 - data.rUS_1)*(data.rCS_1 - data.rUS_1)) + data.q0S_1);
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
  parameter Chassis.Data.Multilink4Data data;
equation 
  connect(antiRollBar.frame_X_2, multiLink_2.frame_U);
  connect(multiLink_2.frame_U, frame_U_2);
  connect(multiLink_1.frame_U, frame_U_1);
  connect(antiRollBar.frame_X_1, multiLink_1.frame_U);
  connect(antiRollBar.frame_C, frame_C);
  connect(multiLink_2.frame_C, frame_C);
  connect(multiLink_1.frame_C, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_a, multiLink_1.frame_U);
  connect(Strut_2.frame_a, multiLink_2.frame_U);
end MultiLink4Suspension4;

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension

Double wish-bone (A-arm) suspension with ideal joints.

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension

Information


Basically, double wishbones suspension always maintains the wheel perpendicular to the road surface, irrespective of the wheel's bouncing and steering movement, which gives a good camber control. Traditional double wishbones consists of 2 parellel wishbones of equal length which has the drawback of excessive tyre scrubbing due to variation in track width as the wheel moved off the neutral position. This effect can be reduced with unequal-length non-parellel wishbones that are more common nowadays. Anti-dive or anti-squat function is achieved by tilting the wishbones relative to another.

Advantages: The double wishbone suspension gives the designer good control over the wheel's motion and many tuning possibilites.

Disadvantages: The double wishbone suspension is more expensive and requires more space than for example the MacPherson suspension.

Usage: The double wishbone is used both in front and rear suspensions, mostly in race and high performance cars.


Parameters

NameDefaultDescription
data  

Modelica definition

model DoubleWishBoneSuspension 
  "Double wish-bone (A-arm) suspension with ideal joints." 
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Chassis.Components.Strut strut_2(
    scaleFactor=data.scaleFactor, 
    rA=data.rSL3L4_2 - data.rUL3L4_2, 
    rB=data.rCS_2, 
    s0=sqrt((data.rSL3L4_2 - data.rCS_2)*(data.rSL3L4_2 - data.rCS_2)) + data.
        q0S_2, 
    data=data.data_S_2);
  /*  Chassis.Components.DoubleWishBone doubleWishBone_1(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCL4=data.rCL4_1, 
    rUL3L4=data.rUL3L4_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    rRL5=data.rRL5_1, 
    rUL5=data.rUL5_1) annotation (extent=[-22, -80; 18, -40], rotation=270);
  Chassis.Components.DoubleWishBone doubleWishBone_2(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCL4=data.rCL4_2, 
    rUL3L4=data.rUL3L4_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    rRL5=data.rRL5_2, 
    rUL5=data.rUL5_2) annotation (extent=[-24, 80; 16, 40], rotation=270);
  Chassis.Components.RackSteering rackSteering(
    scaleFactor=data.scaleFactor, 
    rX_1=data.rUW_1, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    rXL_1=data.rUL5_1, 
    rRL_1=data.rRL5_1, 
    rXL_2=data.rUL5_2, 
    rRL_2=data.rRL5_2) annotation (extent=[26, -52; 66, -12]);
*/
  
  Chassis.Components.DoubleWishBone doubleWishBone_1(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCL4=data.rCL4_1, 
    rUL3L4=data.rUL3L4_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    rRL5=data.rRL5_1, 
    rUL5=data.rUL5_1);
  Chassis.Components.DoubleWishBone doubleWishBone_2(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCL4=data.rCL4_2, 
    rUL3L4=data.rUL3L4_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    rRL5=data.rRL5_2, 
    rUL5=data.rUL5_2);
  Chassis.Components.RackSteering rackSteering(
    scaleFactor=data.scaleFactor, 
    rX_1=data.rUW_1, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    rXL_1=data.rUL5_1, 
    rRL_1=data.rRL5_1, 
    rXL_2=data.rUL5_2, 
    rRL_2=data.rRL5_2);
  
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    scaleFactor=data.scaleFactor, 
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL6_1, 
    rXL_1=data.rUL6_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL6_2, 
    rXL_2=data.rUL6_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
  Chassis.Components.Strut strut_1(
    scaleFactor=data.scaleFactor, 
    rA=data.rSL3L4_1 - data.rUL3L4_1, 
    rB=data.rCS_1, 
    s0=sqrt((data.rSL3L4_1 - data.rCS_1)*(data.rSL3L4_1 - data.rCS_1)) + data.
        q0S_1, 
    data=data.data_S_1);
  parameter Chassis.Data.DoubleWishBoneData data;
equation 
  connect(doubleWishBone_1.frame_L3L4, strut_1.frame_a);
  connect(doubleWishBone_2.frame_L3L4, strut_2.frame_a);
  connect(frame_U_2, doubleWishBone_2.frame_U);
  connect(doubleWishBone_1.frame_U, frame_U_1);
  connect(antiRollBar.frame_X_1, doubleWishBone_1.frame_U);
  connect(antiRollBar.frame_X_2, doubleWishBone_2.frame_U);
  connect(doubleWishBone_2.frame_C, frame_C);
  connect(strut_2.frame_b, frame_C);
  connect(strut_1.frame_b, frame_C);
  connect(doubleWishBone_1.frame_C, frame_C);
  connect(antiRollBar.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(rackSteering.frame_C, frame_C);
  connect(doubleWishBone_1.frame_S, rackSteering.frame_X_1);
  connect(rackSteering.frame_X_2, doubleWishBone_2.frame_S);
end DoubleWishBoneSuspension;

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension2 VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension2

Double wish-bone (A-arm) suspension with an onboard belle-ville to decouple suspension and anti-roll characteristics.

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension2

Information


The double wishbone linkages are suspended by a single strut with BelleVille anti roll spring. The purpose is to decouple pitch and roll motion of cars. In racing this is desired while it makes tuning more convinient.

Usage: In some race cars


Parameters

NameDefaultDescription
data  

Modelica definition

model DoubleWishBoneSuspension2 
  "Double wish-bone (A-arm) suspension with an onboard belle-ville to decouple suspension and anti-roll characteristics."
   
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Chassis.Components.DoubleWishBone LeftDoubleWishBone(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCL4=data.rCL4_1, 
    rUL3L4=data.rUL3L4_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    rRL5=data.rRL5_1, 
    rUL5=data.rUL5_1);
  Chassis.Components.DoubleWishBone rightDoubleWishBone(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCL4=data.rCL4_2, 
    rUL3L4=data.rUL3L4_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    rRL5=data.rRL5_2, 
    rUL5=data.rUL5_2);
  Chassis.Components.RackSteering rackSteering(
    scaleFactor=data.scaleFactor, 
    rX_1=data.rUW_1, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    rXL_1=data.rUL5_1, 
    rRL_1=data.rRL5_1, 
    rXL_2=data.rUL5_2, 
    rRL_2=data.rRL5_2);
  
  Chassis.Components.MonoDamperBelleVilleAntiRoll 
    MonoDamperBelleVilleAntiRoll(
    scaleFactor=data.scaleFactor, 
    rCP=data.rCP, 
    rCS=data.rCS, 
    rPS=data.rPS, 
    nCP=data.nCP, 
    q0S=data.q0S, 
    rPL_1=data.rPL6_1, 
    rXL_1=data.rUL3L4_1, 
    rX_1=data.rUL3L4_1, 
    rPL_2=data.rPL6_2, 
    rXL_2=data.rUL3L4_2, 
    rX_2=data.rUL3L4_2, 
    data=data.data_S, 
    data_A=data.data_A);
  parameter Chassis.Data.DoubleWishBoneData2 data;
equation 
  connect(rightDoubleWishBone.frame_U, frame_U_2);
  connect(rackSteering.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(MonoDamperBelleVilleAntiRoll.FromChassis2, rightDoubleWishBone.
    frame_L3L4);
  connect(MonoDamperBelleVilleAntiRoll.FromChassis1, frame_C);
  connect(rightDoubleWishBone.frame_C, frame_C);
  connect(LeftDoubleWishBone.frame_C, frame_C);
  connect(LeftDoubleWishBone.frame_U, frame_U_1);
  connect(MonoDamperBelleVilleAntiRoll.FromChassis, LeftDoubleWishBone.
    frame_L3L4);
  connect(rightDoubleWishBone.frame_S, rackSteering.frame_X_2);
  connect(rackSteering.frame_X_1, LeftDoubleWishBone.frame_S);
end DoubleWishBoneSuspension2;

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension3 VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension3

Double wish-bone (A-arm) suspension with onboard mounted struts.

VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension3

Information


This suspension consist of a double wish bone linkage with a speclial linkage to mount the struts between the mouting points of the wishbones. The purpose is to be able to mount these inside the body of a formula car.

Usage: In some formula race cars.


Parameters

NameDefaultDescription
data  

Modelica definition

model DoubleWishBoneSuspension3 
  "Double wish-bone (A-arm) suspension with onboard mounted struts." 
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Chassis.Components.DoubleWishBone LeftDoubleWishBone(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCL4=data.rCL4_1, 
    rUL3L4=data.rUL3L4_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    rRL5=data.rRL5_1, 
    rUL5=data.rUL5_1);
  Chassis.Components.DoubleWishBone rightDoubleWishBone(
    scaleFactor=data.scaleFactor, 
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCL4=data.rCL4_2, 
    rUL3L4=data.rUL3L4_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    rRL5=data.rRL5_2, 
    rUL5=data.rUL5_2);
  Chassis.Components.RackSteering rackSteering(
    scaleFactor=data.scaleFactor, 
    rXL_1=data.rUL5_1, 
    rRL_1=data.rRL5_1, 
    rX_1=data.rUW_1, 
    rXL_2=data.rUL5_2, 
    rRL_2=data.rRL5_2, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack);
  Chassis.Components.TwinDamperTorsionAntiRoll twinDamperTorsionAntiRoll(
    scaleFactor=data.scaleFactor, 
    rCP_1=data.rCP_1, 
    rCS_1=data.rCS_1, 
    rPS_1=data.rPS_1, 
    rPL1_1=data.rPL6_1, 
    rX_1=data.rUL3L4_1, 
    rXL1_1=data.rUL6_1, 
    rPL2_1=data.rPL7_1, 
    rAL2_1=data.rAL7_1, 
    rCA_1=data.rCA_1, 
    nP_1=data.nP_1, 
    q0S_1=data.q0S_1, 
    rCP_2=data.rCP_2, 
    rCS_2=data.rCS_2, 
    rPS_2=data.rPS_2, 
    rPL1_2=data.rPL6_2, 
    rX_2=data.rUL3L4_2, 
    rXL1_2=data.rUL6_2, 
    rPL2_2=data.rPL7_2, 
    rAL2_2=data.rAL7_2, 
    rCA_2=data.rCA_2, 
    nP_2=data.nP_2, 
    q0S_2=data.q0S_1, 
    data_A=data.data_A, 
    data_S_1=data.data_S_1, 
    data_S_2=data.data_S_2);
  parameter Data.DoubleWishBoneData3 data;
equation 
  connect(LeftDoubleWishBone.frame_U, frame_U_1);
  connect(rightDoubleWishBone.frame_U, frame_U_2);
  connect(rightDoubleWishBone.frame_L3L4, twinDamperTorsionAntiRoll.frame_X_2);
  connect(twinDamperTorsionAntiRoll.frame_X_1, LeftDoubleWishBone.frame_L3L4);
  connect(rightDoubleWishBone.frame_C, frame_C);
  connect(twinDamperTorsionAntiRoll.FromChassis, frame_C);
  connect(LeftDoubleWishBone.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(rackSteering.frame_C, frame_C);
  connect(rightDoubleWishBone.frame_S, rackSteering.frame_X_2);
  connect(rackSteering.frame_X_1, LeftDoubleWishBone.frame_S);
end DoubleWishBoneSuspension3;

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension5 VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension5

MultiLink4 suspension containing links with mass properties and an anti roll bar linkage

VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension5

Information


This Multilink 4 suspensio is basically a trailing arm mounted in the chassis with a bushing. To stabilise the motion, three additional links connects the chassis and the arm. These have bushings at each end.

Advantages: Good compromise between a controlable wheel motion and comfort.

Disadvantages: More expensive than trailing arm suspensions. Requires more space.

Usage: The multilink is common in rear suspensions of more expensive cars from mid size and up. There are both MultiLink4 and MultiLink5 suspensions.

This version contains no ideal joints and the masses of the links are included. In addition the anti roll bar is also modelled as a linkage with bushings.


Parameters

NameDefaultDescription
data  

Modelica definition

model MultiLink4Suspension5 
  "MultiLink4 suspension containing links with mass properties and an anti roll bar linkage"
   
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    s0=sqrt((data.rCS_2 - data.rUS_2)*(data.rCS_2 - data.rUS_2)) + data.q0S_1, 
    data=data.data_S_2, 
    rA=data.rUS_2 - data.rUW_2);
  Components.MultiLink42 multiLink_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCU=data.rCU_2, 
    rUL1=data.rUL1_2, 
    rUL2=data.rUL2_2, 
    rUL3=data.rUL3_2, 
    rUW=data.rUW_2, 
    data_CL1=data.data_CL1_2, 
    data_UL1=data.data_UL1_2, 
    data_CL2=data.data_CL2_2, 
    data_UL2=data.data_UL2_2, 
    data_CL3=data.data_CL3_2, 
    data_UL3=data.data_UL3_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_CU=data.data_CU_2);
  Components.MultiLink42 multiLink_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCU=data.rCU_1, 
    rUL1=data.rUL1_1, 
    rUL2=data.rUL2_1, 
    rUL3=data.rUL3_1, 
    rUW=data.rUW_1, 
    data_CL1=data.data_CL1_1, 
    data_UL1=data.data_UL1_1, 
    data_CL2=data.data_CL2_1, 
    data_UL2=data.data_UL2_1, 
    data_CL3=data.data_CL3_1, 
    data_UL3=data.data_UL3_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_CU=data.data_CU_1);
  Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    rA=data.rUS_1 - data.rUW_1, 
    s0=sqrt((data.rCS_1 - data.rUS_1)*(data.rCS_1 - data.rUS_1)) + data.q0S_1);
  Chassis.Components.BushingAntiRollBar antiRollBar(
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
  parameter Chassis.Data.Multilink4Data data;
equation 
  connect(antiRollBar.frame_X_2, multiLink_2.frame_U);
  connect(multiLink_2.frame_U, frame_U_2);
  connect(multiLink_1.frame_U, frame_U_1);
  connect(antiRollBar.frame_X_1, multiLink_1.frame_U);
  connect(antiRollBar.frame_C, frame_C);
  connect(multiLink_2.frame_C, frame_C);
  connect(multiLink_1.frame_C, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_a, multiLink_1.frame_U);
  connect(Strut_2.frame_a, multiLink_2.frame_U);
end MultiLink4Suspension5;

VehicleDynamics.Chassis.Suspensions.FixedAxleSuspension VehicleDynamics.Chassis.Suspensions.FixedAxleSuspension

Suspension with wheel mount points fixed rigidly to the chassis

VehicleDynamics.Chassis.Suspensions.FixedAxleSuspension

Information


The wheels are mounted rigidly to the chassis.

Advantages: Compact and cheap.

Disadvantages:

Very poor ride and handling

Usage: Some cheap trailiers.


Parameters

NameDefaultDescription
data  

Modelica definition

model FixedAxleSuspension 
  "Suspension with wheel mount points fixed rigidly to the chassis" 
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  ModelicaAdditions.MultiBody.Parts.FrameTranslation rSuspension(r=
        Utilities.Functions.EWM((data.rUW_1 + data.rUW_2)/2, data.scaleFactor));
  Utilities.Parts.Body rLeftWheel(r=Utilities.Functions.EWM(data.rUW_1 - (
        data.rUW_1 + data.rUW_2)/2, data.scaleFactor));
  Utilities.Parts.Body rRightWheel(r=Utilities.Functions.EWM(data.rUW_2 - (
        data.rUW_1 + data.rUW_2)/2, data.scaleFactor));
  parameter Data.FixedAxleData data;
equation 
  connect(rLeftWheel.frame_a, rSuspension.frame_b);
  connect(rRightWheel.frame_a, rSuspension.frame_b);
  connect(rRightWheel.frame_b, frame_U_2);
  connect(rSuspension.frame_a, frame_C);
  connect(rLeftWheel.frame_b, frame_U_1);
end FixedAxleSuspension;

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension5 VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension5

MacPherson suspension with bushings, including anti roll bar linkage.

VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension5

Information


The MacPherson strut suspension was invented in the 1940s by Earl S. MacPherson of Ford. It was introduced on the 1950 English Ford and has since become one of the dominating suspensions systems of the world because of its compactness and low cost. Unlike other suspension designs, in MacPherson strut suspension, the telescopic shock absorber also serves as a link to control the position of the wheel and makes the upper control arm obsolete. Since the strut is vertically positioned, the whole suspension is very compact and suitable for front-wheel drive cars, whose engine and transmission are all located inside the front compartment and need front suspensions which engage very little width of the car.

Advantages: Compact and cheap.

Disadvantages: Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.

Usage: The MacPherson strut is the dominatin front suspension for cars.

This version contains bushings in the A-arm mount and in the anti-roll linkage. Furthermore there is an elacticity in the steering.


Parameters

NameDefaultDescription
data  

Modelica definition

model MacPhersonSuspension5 
  "MacPherson suspension with bushings, including anti roll bar linkage."
   
  
  extends Chassis.Interfaces.SteerableSuspensionInterface;
  
  Components.RackSteering4 rackSteering(
    rXL_1=data.rUL3_1, 
    rRL_1=data.rRL3_1, 
    rX_1=data.rUW_1, 
    rXL_2=data.rUL3_2, 
    rRL_2=data.rRL3_2, 
    rX_2=data.rUW_2, 
    ratioWheelToRack=data.ratioWheelToRack, 
    iSW=data.iSW, 
    data_R=data.data_R);
  Components.MacPherson4 MacPherson_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCS=data.rCS_1, 
    rUS=data.rUS_1, 
    rUL1L2=data.rUL1L2_1, 
    rUW=data.rUW_1, 
    q0S=data.q0S_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    data_S=data.data_S_1, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_1, 
    rUL3=data.rUL3_1);
  Components.MacPherson4 MacPherson_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCS=data.rCS_2, 
    rUS=data.rUS_2, 
    rUL1L2=data.rUL1L2_2, 
    rUW=data.rUW_2, 
    q0S=data.q0S_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    data_S=data.data_S_2, 
    mL1L2=1, 
    i11L1L2=1, 
    i22L1L2=1, 
    i33L1L2=1, 
    rRL3=data.rRL3_2, 
    rUL3=data.rUL3_2);
  parameter Chassis.Data.MacPhersonData data;
  Chassis.Components.BushingAntiRollBar antiRollBar(
    scaleFactor=data.scaleFactor, 
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL4_1, 
    rXL_1=data.rUL4_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL4_2, 
    rXL_2=data.rUL4_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
equation 
  connect(rackSteering.frame_C, frame_C);
  connect(rackSteering.flange_a, flange_SW);
  connect(MacPherson_1.frame_C, frame_C);
  connect(MacPherson_2.frame_C, frame_C);
  connect(MacPherson_1.frame_U, frame_U_1);
  connect(MacPherson_2.frame_U, frame_U_2);
  connect(antiRollBar.frame_C, frame_C);
  connect(antiRollBar.frame_X_2, MacPherson_2.frame_U);
  connect(antiRollBar.frame_X_1, MacPherson_1.frame_U);
  connect(rackSteering.frame_X_2, MacPherson_2.frame_S);
  connect(MacPherson_1.frame_S, rackSteering.frame_X_1);
end MacPhersonSuspension5;

VehicleDynamics.Chassis.Suspensions.FiveLinkSuspension VehicleDynamics.Chassis.Suspensions.FiveLinkSuspension

Linkage with five links to contrain the motion. Ideal joints are used.

VehicleDynamics.Chassis.Suspensions.FiveLinkSuspension

Information


This suspension uses five links to contrain the constrain the motion of the upright. This version uses ideal joints which can be replaced by bushings by replacing the links with pushrods.

Advantages: Good posibilties to control the upright motion.

Disadvantages: Requires space, expensive

This version contains ideal joints and the masses of the links are included.


Parameters

NameDefaultDescription
data  

Modelica definition

model FiveLinkSuspension 
  "Linkage with five links to contrain the motion. Ideal joints are used."
   
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  
  Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    s0=sqrt((data.rCS_2 - data.rUS_2)*(data.rCS_2 - data.rUS_2)) + data.q0S_1, 
    data=data.data_S_2, 
    rA=data.rUS_2 - data.rUW_2);
  Components.FiveLink fiveLink_2(
    rCL1=data.rCL1_2, 
    rCL2=data.rCL2_2, 
    rCL3=data.rCL3_2, 
    rCL4=data.rCL4_2, 
    rCL5=data.rCL5_2, 
    rUL1=data.rUL1_2, 
    rUL2=data.rUL2_2, 
    rUL3=data.rUL3_2, 
    rUL4=data.rUL4_2, 
    rUL5=data.rUL5_2, 
    rUW=data.rUW_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    scaleFactor=data.scaleFactor);
  Components.FiveLink fiveLink_1(
    rCL1=data.rCL1_1, 
    rCL2=data.rCL2_1, 
    rCL3=data.rCL3_1, 
    rCL4=data.rCL4_1, 
    rCL5=data.rCL5_1, 
    rUL1=data.rUL1_1, 
    rUL2=data.rUL2_1, 
    rUL3=data.rUL3_1, 
    rUL4=data.rUL4_1, 
    rUL5=data.rUL5_1, 
    rUW=data.rUW_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    scaleFactor=data.scaleFactor);
  Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    rA=data.rUS_1 - data.rUW_1, 
    s0=sqrt((data.rCS_1 - data.rUS_1)*(data.rCS_1 - data.rUS_1)) + data.q0S_1);
  Chassis.Components.SimpleAntiRollBar antiRollBar(
    rCA_1=data.rCA_1, 
    rAL_1=data.rAL6_1, 
    rXL_1=data.rUL6_1, 
    rX_1=data.rUW_1, 
    rCA_2=data.rCA_2, 
    rAL_2=data.rAL6_2, 
    rXL_2=data.rUL6_2, 
    rX_2=data.rUW_2, 
    data=data.data_A);
  parameter Chassis.Data.FiveLinkData data;
equation 
  connect(antiRollBar.frame_X_2, fiveLink_2.frame_U);
  connect(fiveLink_2.frame_U, frame_U_2);
  connect(fiveLink_1.frame_U, frame_U_1);
  connect(antiRollBar.frame_X_1, fiveLink_1.frame_U);
  connect(antiRollBar.frame_C, frame_C);
  connect(fiveLink_2.frame_C, frame_C);
  connect(fiveLink_1.frame_C, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_a, fiveLink_1.frame_U);
  connect(Strut_2.frame_a, fiveLink_2.frame_U);
end FiveLinkSuspension;

VehicleDynamics.Chassis.Suspensions.SimpleTwistBeamSuspension VehicleDynamics.Chassis.Suspensions.SimpleTwistBeamSuspension

A simple twist beam suspension where the twist beam is replaced by a roational spring damper.

VehicleDynamics.Chassis.Suspensions.SimpleTwistBeamSuspension

Information


A twist beam suspension is basically a trailing arm suspension where the trailing arms are connected by a twist beam. This then replaces the anti roll linkage and the whole thing can be manufacutred in one piece giving an compact and cheap suspension.

Advantages: Compact and cheap.

Disadvantages:

Limited possibilites to adjust ride and handling.

Usage: Most cars up to C class.


Parameters

NameDefaultDescription
data  

Modelica definition

model SimpleTwistBeamSuspension 
  "A simple twist beam suspension where the twist beam is replaced by a roational spring damper."
   
  
  extends Chassis.Interfaces.NoSteerSuspensionInterface;
  Utilities.Forces.SpringDamperTableRot1D twistBeam(data=data.data_A);
  parameter VehicleDynamics.Chassis.Data.SimpleTwistBeamData data;
  VehicleDynamics.Chassis.Components.Strut Strut_2(
    rB=data.rCS_2, 
    data=data.data_S_2, 
    s0=sqrt((data.rUS_2 - data.rCS_2)*(data.rUS_2 - data.rCS_2)) + data.q0S_2, 
    rA=data.rUS_2 - data.rUW_2, 
    scaleFactor=data.scaleFactor);
  VehicleDynamics.Chassis.Components.Strut Strut_1(
    rB=data.rCS_1, 
    data=data.data_S_1, 
    s0=sqrt((data.rUS_1 - data.rCS_1)*(data.rUS_1 - data.rCS_1)) + data.q0S_1, 
    rA=data.rUS_1 - data.rUW_1, 
    scaleFactor=data.scaleFactor);
  VehicleDynamics.Chassis.Components.TrailingArm leftTrailingArm(
    rCU=data.rCU_1, 
    rUW=data.rUW_1, 
    nCU=data.nCU_1, 
    rCMU=data.rCMU_1, 
    mU=data.mU_1, 
    i11U=data.i11U_1, 
    i22U=data.i22U_1, 
    i33U=data.i33U_1, 
    i21U=data.i21U_1, 
    i31U=data.i31U_1, 
    i32U=data.i32U_1, 
    scaleFactor=data.scaleFactor);
  VehicleDynamics.Chassis.Components.TrailingArm rightTrailingArm(
    rCU=data.rCU_2, 
    rUW=data.rUW_2, 
    nCU=data.nCU_2, 
    rCMU=data.rCMU_2, 
    mU=data.mU_2, 
    i11U=data.i11U_2, 
    i22U=data.i22U_2, 
    i33U=data.i33U_2, 
    i21U=data.i21U_2, 
    i31U=data.i31U_2, 
    i32U=data.i32U_2, 
    scaleFactor=data.scaleFactor);
equation 
  connect(leftTrailingArm.frame_C, frame_C);
  connect(rightTrailingArm.frame_C, frame_C);
  connect(Strut_2.frame_b, frame_C);
  connect(Strut_1.frame_b, frame_C);
  connect(Strut_2.frame_a, rightTrailingArm.frame_U);
  connect(Strut_1.frame_a, leftTrailingArm.frame_U);
  connect(leftTrailingArm.frame_U, frame_U_1);
  connect(rightTrailingArm.frame_U, frame_U_2);
  connect(twistBeam.flange_a, leftTrailingArm.axis);
  connect(twistBeam.flange_b, rightTrailingArm.axis);
end SimpleTwistBeamSuspension;

HTML-documentation generated by Dymola Tue Jul 15 13:22:35 2003 .