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.
Name | Description |
---|---|
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. |
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.
Name | Default | Description |
---|---|---|
data |
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;
This suspension is identical to SimpleSuspension except that this is not steerable.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
The wheels are mounted rigidly to the chassis.
Advantages: Compact and cheap.
Disadvantages:
Very poor ride and handlingUsage: Some cheap trailiers.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;
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.
Name | Default | Description |
---|---|---|
data |
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;