File contents
package VehicleDynamics "Package for vehicle dynamics modelling"
package SI = Modelica.SIunits;
annotation (
Dymola(checkSum="148749709:2164628697"),
Settings(
NewStateSelection=true,
Evaluate=true,
OutputCPUtime=true,
Hidden(SupportConstrain=true)),
Coordsys(
extent=[0, 0; 440, 456],
grid=[2, 2],
component=[20, 20]),
Window(
x=0.45,
y=0.01,
width=0.35,
height=0.49,
library=1,
autolayout=1),
Icon,
Diagram,
Documentation(info="<HTML>
<H1>VehicleDynamics Library</H1>
<p> This library is used to model <b>vehicle
chassis</b>. The library is divided into suspensions and
components. Suspensions are complete front and rear suspensions
ready to use, e.g. MacPherson, Double wishbone and Multilink. The
components are used to build these suspensions, e.g. struts,
wishbones, and anti-roll linkages. Below, the model structure, its
hierarchical levels and the parametrisation are explained. There are
also some predefined chassis that serves as examples of how the parts
can be gathered, in figure 1 and figure 2, a BMW 3-series and a Dallara
F3 are shown, respecitvely.
</p>
<p>
<IMG SRC=\"../Images/BMW.gif\" ALT=\"BMW\"> </p><p><b>Figure
1</b> A BMW 3-series sedan.</p>
<p>
<IMG SRC=\"../Images/Dallara.gif\" ALT=\"Dallara\"> </p><p><b>Figure
2</b> A Dallara formula 3 chassis.</p>
<H2>\"Modelling grammar\"</H2>
<H3> The structure of a chassis model</H3> <p>The Chassis library
is based on the ModelicaAdditions.MultiBody library and thus, the
Car models must follow the tree structure requirements presented
above. To handle this the direction of the car modelling is chosen
to go from chassis towards the ground via the wheels as
illustrated in figure 3. Since the model must start with an
inertial system, in this case the ground, there must be an
additional connection from ground to chassis. This is achieved
with a free motion joint.</p>
<p> This way of modelling may seem awkward but has some important
advantages: </p>
<ul>
<li> The car can be modelled the same way it is built up. Start with
chassis and add suspensions, anti roll linkages, dampers etc. All
this can then be tested without wheels and tyres by simply
attaching the model directly to the ground.
</li>
<li>All suspensions have the same direction in the tree, which make
them replaceable. This would not have been the case if the tree
direction had been through one wheel towards the car and then back
through the other wheels.
</li>
<li>The number of states can be reduced in a convenient way. For
example could a constant speed test be done by simply modifying
the free motion joint.
</p>
<p> <IMG SRC=\"../Images/structure.png\" ALT=\"structure\"> </p><p><b>Figure
3</b> A complete chassis model. The tree structure starts with the
ground element. Via the freeMotion element, the Body Geometric Reference (BGR) of the car's
coordinate system is reached. From BGR, the tree is defined
towards the wheels and the road.</li>
</ul>
<H3>Hierarchical levels </H3> <p>The library is based on a
hierarchical structure within the total model. This is done to
give a clear overview of the model and simplify reusage of
components and suspensions. The hierarchy contains the following
levels that can bee seen in figure 4:</p>
<p>
<b>A. Vehicle level.</b>
</p><p>
<b>B. Chassis level.</b>
</p><p>
<b>C. Suspension level.</b>
</p><p>
<b>D. Component level.</b>
</p>
<p>
<IMG SRC=\"../Images/hierarchy.png\" ALT=\"hierarchy\"> </p><p><b>Figure
4</b> The hierarchical levels of a vehicle model. <b>a</b>, the
vehicle level, <b>b</b>, the chassis level, <b>c</b>, the suspension level, <b>c</b> the component level and <b>d</b>, the elementary level.</p>
<p><b>Vehicle level</b> The total model of the vehicle/car contains
typically a chassis model. Additionally, models for drivers,
power-trains, aerodynamics etc. can be added.</p>
<p><b>Chassis level</b> Within the chassis level, a complete
chassis is built up, typically with a front and a rear suspension,
wheels and a body</p>
<p><b>Suspension level</b> The idea with the suspension level is
to make it easy to reconfigure a car by just swapping suspension
and therefore, all suspension should share the same basic
interface, i.e. one MBS-cut for the connection to the body. There
should also be an MBS cut for each wheel (normally two) that is to
be connected to the suspension. Additionally, there may be some
extra connectors depending on the suspension. For example will a
steerable suspension also have a connector for a steering wheel. All availible Suspensions are gathered under Chassis.Suspensions.
</p>
<p><b>Component level</b> With the component level, the
foundation for efficient reuse of vehicle models is laid.
Components like a-arms, bushings, MacPherson struts, trailing arms,
multilinks, anti roll linkages, rack steerings etc. are available.
These components are based on the Modelica and ModelicaAdditions
libraries as well as some special models found under Utilities. </p>
<H3>Parameterisation</H3><p> To specify a linkage, the geometry has
to be defined. Additionally, the mass and inertia properties of
the parts within the linkage can be defined. For an understandable
parameterisation of these properties, a systematic definition of
the parameter names is necessary.</p>
<b>Nomenclature </b><p>The geometry is mainly defied by the
connection joint locations, connection points. Additionally, the
direction(s) of a joints' degree(s) of freedom must be given if it
is (are) not defined by the connection joint points. The geometry
parameters are named according to <pre>
<b>[geometry parameter]=[property][connection point]_[wheel no]
[connection point]=[part 1][part 2][part n]</b>
</pre> while the mass and inertia properties are component specific and
are thus named according to<pre>
<b>[component parameter]=[property][part]_[wheel no]</b>
</pre></p><p>The properties are named according to <pre>
<b>[property]</b>
<b>r</b> - location
<b>n</b> - direction of rotation or translation
<b>m</b> - mass
<b>rcm</b> - location of centre of mass
<b>c</b> - stiffness
<b>d</b> - damping
<b>f</b> - force
<b>t</b> - torque
<b>i</b> - inertia element, (gear) ratio
<b>q0</b> - Relative offset of the unaffected state for spring/damper/strut,
compared to the state given by the geometrical parameters.
Typically, if a strut is mounted in at rA and rB, then it Is
unaffected length is |rA-rB|+q0.
<b>qInit</b>- Initial value
</pre>and the parts are named according to<pre>
<b>[part]</b>
<b>C</b> - chassis
<b>R</b> - steering (rack)
<b>U</b> - upright, part that holds the wheel
<b>P</b> - pivot element,used for example in Watt's linkage
<b>S</b> - strut, 1D force element
<b>L</b> - link or rod
<b>B</b> - body or bushing
<b>A</b> - antiroll
<b>X</b> - Undefined part/General part, for instance an anti-roll linkage
could be attached to links as well as uprights.
<b>W</b> - wheel</pre>
When there is more then one part of the same type, a number is
added to the character. For example if there are more than one
link, as in a double-wishbone, they are numbered L1, L2, etc.,
starting at the front upper link.</p>
<p>The wheels are numbered from front left towards right and rear.
For a four wheel car this yields: <pre>
<b>[wheel no]</b>
<b>1</b> - front left wheel
<b>2</b> - front right wheel
<b>3</b> - rear left wheel
<b>4</b> - rear right wheel
</pre> Some examples of how parameters are named: <pre>
<b>rCL1_2</b> - Location of connection joint between chassis and link 1 at
front right wheel.
<b>i22L1_3</b> - Inertia element i22 of link 1 at rear left wheel.
<b>nCL1_4</b> - Direction of revolution of the joint that connects link 1 to
the chassis at the right rear wheel. This could for example be the rotation
axis of a swing axle.
<b>rUL1L2_1</b>- Location of connection joint between the upright and link 1
and 2 at the front left wheel. This could for example be the upper spindle
joint at a double wishbone suspension
</pre></p>
<p>
The frames are named after the part they are attached to. The
frames are normally located at the parts outermost point referred
to the tree structure.
Examples: <pre>
<b>frame_L1L2</b>- A frame attached to links 1 and 2 at their outer end. For a
MacPherson linkage this would mean that the frame is attached to
the link at the location of the spindle.
<b>frame_U_2</b> - The frame attached at the outermost point of the right upright.
Typically this is the location of the wheel centre.
</pre></p>
<b>Coordinate system</b><p>The coordinate systems used within the library refers to the DIN standard, the x,y and z axes point forward, left and upward respectively, see figure 5.
</p>
<IMG SRC=\"../Images/coords.gif\" ALT=\"coordinate system\"> </p><p><b>Figure
5</b> The coordinate system used to define the suspension geometries.</p>
<b>Scaling</b><p>In many cases it is convenient to mirror
components in a car, for example left and right suspensions. To
handle this there is a three-dimensional scaleFactor. This can be
used to rescale and mirror objects, for example <pre>
<b>scaleFactor={1,-1,1}</b></pre> mirrors the model around the xz-plane
</p>
<dl>
<dt><b>Main Author:</b>
<dd><a href=\"http://www.ave.kth.se/staff/fdn/johan/index.html\">Johan Andreasson</a><br>
Div. of Vehicle Dynamics<br>
Royal Institute of Technology<br>
Teknikringen 8c<br>
SE-10044 Stockholm, Sweden<br>
email: <A HREF=\"mailto:johan@fkt.kth.se\">johan@fkt.kth.se</A><br>
</dl>
<p><b>Release Notes:</b></p>
<ul>
<li><i>April 29, 2003</i><br>
First beta release (version 0.5) implemented with largely extended
vehicle components. Contains especially
5 models of a typical sedan car with different levels of model
details leading to 14 to 87 degrees of freedom.
</li>
<li><i>Nov. 1, 2000</i><br>
First pre beta release implemented, containing especially
the model of a racing car.
</ul>
<p>
<b>Acknowledgements:</b><br>
Some components of this library, such as the base wheel, the Rill tyre model
and the aggregation joints for analytically solving kinematic loops, have been
developed by <a href=\"http://www.robotic.dlr.de/Martin.Otter\">Martin Otter</a>, from
<a href=\"http://www.robotic.dlr.de\">DLR - Institute of Robotics and Mechatronics</a>,
Germany.<br>
Part of this library was developed with financial support from Dynasim AB, Sweden
and DLR - Institute of Robotics and Mechatronics, Germany.
Some of the models are originally developed for the Driving Dynamics project within the \"The Green Vehicle\"/FCHEV Programme.
</p>
<p><b>Copyright © 2003, Modelica Association, Johan Andreasson, DLR and
Dynasim</b></p>
</HTML>
"));
package Examples
import Modelica.SIunits;
partial model CarBase
"A sedan car modeled with linkages as parameterisised curves based on wheel travel."
extends Modelica.Icons.Example;
inner replaceable block Road = Environments.NoGraphicsRoad extends
VehicleDynamics.Environments.Interfaces.TyreRoadInterface annotation (
choicesAllMatching, extent=[-104, -16; -74, 24]);
inner replaceable block Weather = Environments.ConstantWind extends
VehicleDynamics.Environments.Interfaces.WeatherInterface annotation (
choicesAllMatching, extent=[-96, -52; -76, -32]);
// INITIAL CONDITIONS
parameter SI.Velocity v_x0=20 "|Initial conditions| start velocity x";
parameter SI.Position r_x0=0 "|Initial conditions| start position x";
parameter SI.Position r_y0=0 "|Initial conditions| start position y";
parameter SI.Position r_z0=0.24 "|Initial conditions| start position z";
protected
parameter SI.Position[3] rInit={r_x0,r_y0,r_z0};
parameter Real[3] vInit={v_x0,0,0};
parameter SI.Angle[3] phiInit={0,0,0};
// DRIVER
// STEERING
parameter Real kLaneChange=1
"|Steering|LaneChange| Gain of Lane Change output, use this to turn on/off output";
parameter SI.Time t1LaneChange=2.5
"|Steering|LaneChange| start time of sine1 ";
parameter SI.Time t2LaneChange=5.5
"|Steering|LaneChange|start time of sine2";
parameter SI.Time p1LaneChange=2 "|Steering|LaneChange|period of sine1";
parameter SI.Time p2LaneChange=2 "|Steering|LaneChange| period of sine2";
parameter SI.Angle a1LaneChange=0.6
"|Steering|LaneChange| amplitude of sine1";
parameter SI.Angle a2LaneChange=-0.6
"|Steering|LaneChange| amplitude of sine2";
parameter Boolean generateEvent=false
"|Steering|LaneChange| generate event for discontinuities";
parameter Real kRampSteering=0
"|Steering|Ramp| Gain of Ramp output, use this to turn on/off output";
parameter SI.Angle heightRampSteering=0.0 "|Steering|Ramp| Height of ramp";
parameter SI.Time durationRampSteering(min=Modelica.Constants.SMALL) =
0.001 "|Steering|Ramp| Duration of ramp";
parameter SI.Angle offsetRampSteering=0 "|Steering|Ramp| Ramp offset";
parameter SI.Time startTimeRampSteering=1.5
"|Steering|Ramp| Output = offset for time < startTime";
parameter Real kTableSteering=0
"|Steering|TimeTable| Gain of Table output, use this to turn on/off output";
parameter Real tableSteering[:, :]=[0, 0; 1, 1; 2, 4]
"|Steering|TimeTable| Table matrix (time = first column)";
parameter Real kRampDrive=0
"|Drive|Ramp| Gain of Ramp output, use this to turn on/off output";
parameter Real heightRampDrive=500 "|Drive|Ramp| Height of ramp";
parameter Real durationRampDrive(min=Modelica.Constants.SMALL) = 2
"|Drive|Ramp| Duration of ramp";
parameter Real offsetRampDrive=0 "|Drive|Ramp| Ramp offset";
parameter SI.Time startTimeRampDrive=1
"|Drive|Ramp| Output = offset for time < startTime";
protected
Drivers.OpenLoopDriver driver(
kLaneChange=kLaneChange,
t1LaneChange=t1LaneChange,
t2LaneChange=t2LaneChange,
p1LaneChange=p1LaneChange,
p2LaneChange=p2LaneChange,
a1LaneChange=a1LaneChange,
a2LaneChange=a2LaneChange,
generateEvent=generateEvent,
kRampSteering=kRampSteering,
heightRampSteering=heightRampSteering,
durationRampSteering=durationRampSteering,
offsetRampSteering=offsetRampSteering,
startTimeRampSteering=startTimeRampSteering,
tableSteering=tableSteering,
kTableSteering=kTableSteering,
kRampDrive=kRampDrive,
heightRampDrive=heightRampDrive,
durationRampDrive=durationRampDrive,
offsetRampDrive=offsetRampDrive,
startTimeRampDrive=startTimeRampDrive)
annotation (extent=[-104, -16; -64, 24]);
annotation (Diagram);
annotation (Diagram);
end CarBase;
model SedanCar_Level1_LinkageTables
"Car model with suspensions toe in and camber charactistics from polynomials."
annotation (Commands(
file="Scripts/LaneChange1.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
extends StandardCar(chassis(redeclare
VehicleDynamics.Chassis.Suspensions.SimpleSuspension frontSuspension,
redeclare
VehicleDynamics.Chassis.Suspensions.SimpleSuspensionNoSteer
rearSuspension));
annotation (Diagram, Documentation(info="<HTML><h3><span lang=EN-GB>Level 1 Linkage tables</span></h3>
<p class=MsoNormal><span lang=EN-US>The wheel suspensions are described by
tables defining camber and toe-in angles as functions of wheel bounce, i.e., a
vertical motion of the wheel with constrained changes of the Camber and toe-in
angles.</span></p>
<p class=MsoNormal><span lang=EN-GB>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. However, the drawback with this method is that 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.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>Steering is defined by an Ackermann
function. The tables for camber and toe-in angles are implemented as scaled
polynomials. Dymolas symbolic engine differentiates these polynomials twice to
handle the reduction of degrees-of-freedom.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>The complexity of the model is
characterized in the following table showing the number of degrees-of-freedom (DOFs).</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<div align=center>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Individual DOFs</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Component count</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Total DOFs</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=Bodyafter><span lang=EN-US>Comment</span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Chassis</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wheel bounce</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wheel rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Steering</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'> </span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US> </span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=109 valign=top style='width:81.9pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'>Total</span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US>15</span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
</table>
</div>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>The tires have each 2 state variables for the
deflection in x and y directions, i.e., 4*2 = 8 states. The total number of
states for the vehicle dynamics itself is thus 2*15 + 8 = 38.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>The steering in the benchmark model is a
parameterized, given function which is filtered by a second order low pass
filter to model driving behavior. The driver model of the benchmark model
contains two additional state variables for the accelerator behavior. This is
not used in this model since the vehicle maneuver is made with idle gear. The
total number of state variables is thus 38 + 2 = 40.</span></p>
</HTML>"));
end SedanCar_Level1_LinkageTables;
model SedanCar_Level2_RigidLinkages
"Car model with rigid suspensions linkages."
annotation (Commands(
file="Scripts/LaneChange2.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
extends StandardCar(chassis(redeclare
VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2
frontSuspension, redeclare
VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension
rearSuspension));
annotation (Diagram, Documentation(info="<HTML>
<h3><span lang=EN-GB>Level 2 Linkage with ideal joints</span></h3>
<p class=Bodyafter><span lang=EN-US>The table description used in level 1is
limited to only Camber and toe-in angles. It would of course be possible to
extend to Caster angle trail as well as track width and wheel base translations.
However, in many cases, in particular when trying new designs, it?s easier to
describe the suspension in terms of the linkage that is used.</span></p>
<p class=Bodyafter><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-GB>The suspensions in level 2 consist of rigid
mechanical components, i.e. all flexible elements, except for the struts, are
replaced by ideal joints. Instead of a multi-link suspension, a trailing arm
with similar geometry is used. The advantage over level 1 is that the
suspension can be modelled with physical data and no precalculations or
measurements are therefore needed.</span></p>
<p class=Bodyafter><span lang=EN-US> </span></p>
<p class=Bodyafter><span lang=EN-US>The level 2 model uses a MacPherson type
front wheel suspension, with the wishbone attached to the chassis via an ideal
revolute joint (1 DOF). A strut is placed between the chassis and the wishbone
via two spherical joints. The eigen rotation of the strut around its axis (1 DOF)
is constrained by the distance constraint of an additional rod with two
spherical joints on each end (1 constraint). One of the spherical joints of
this rod is attached to the steering. In total, the suspension has therefore
one degree of freedom, if the steering angle is given. The anti-roll bar is
approximated by a spring/damper combination where the vertical force acting at
its mount point on the lower part of the MacPherson strut is proportional to
the relative vertical distance of the left and the right mount points. The rear
suspension is a type trailing arm with one DOF, the anti roll bar is modeled
like in the front suspension.</span></p>
<p class=Bodyafter><span lang=EN-US> </span></p>
<p class=Bodyafter><span lang=EN-US>When using base elements of the MultiBody
library to build up the MacPherson suspension, several non-linear algebraic
loops appear. By using composite joint models (e.g., an aggregation of a
revolute, a spherical and a universal joint) that contain analytic solutions of
the non-linear kinematic relationships within the aggregation, the non-linear
algebraic loops do no longer occur in the generated code. In the following
table the degrees of freedom of this vehicle model is summarized.</span></p>
<p class=Bodyafter><span lang=EN-US> </span></p>
<p class=Bodyafter><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<div align=center>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Individual DOFs</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Component count</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Total DOFs</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=Bodyafter><span lang=EN-US>Comment</span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Chassis</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wishbone rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Steering</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Trailing arm rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wheel rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'> </span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US> </span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.6pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'>Total</span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US>15</span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
</table>
</div>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=Bodyafter><span lang=EN-GB>Similar to the level 1 car, there are 4*2 =
8 states for the tire deflections and 2 unused states. As a result, this model
has also 40 states. Note, that the elasticity of the tires in vertical
direction has been modified slightly (both for the level 1 and the level 2
cars) in order to approximately compensate for the neglected bushings.</span></p>
</HTML>"));
end SedanCar_Level2_RigidLinkages;
model SedanCar_Level3_Bushings
"Car model with bushings in suspensions linkages and massless rods."
annotation (Commands(
file="Scripts/LaneChange3.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
extends StandardCar(chassis(redeclare
VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3
rearSuspension, redeclare
VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3
frontSuspension));
annotation (Diagram, Documentation(info="<HTML>
<h3><span lang=EN-GB>Level 3 Linkage with bushings and massless bars</span></h3>
<p class=MsoNormal><span lang=EN-US>Using ideal joint models for the linkage is
not accurate enough for severe driving conditions since bushings with certain
flexibility are used in the real vehicle. </span><span lang=EN-GB>Flexible
elements are introduced in the suspensions</span><span lang=EN-US> of the
level 3 model. </span><span lang=EN-GB>The front suspension has bushings in the
A-arm mounts</span><span lang=EN-US>. </span><span lang=EN-GB>The rear
multilink suspension has no ideal joints and the links are modelled as
mass-less bars. </span><span lang=EN-US>If the mass and inertia of the rod
connecting two bushings would not be neglected, 6 DOF would be added for every
such pushrod. However, the mass and inertia are usually very small compared to,
say, the wheel and carrier masses, and therefore it is a good approximation to
neglect the pushrod masses and inertias. </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>If the bushings would be described solely
by springs, then no states would be added, since springs in series connection
leads to algebraic equations to solve for the spring deflections. Since
bushings have additionally a damping part, there are the states of the dampers
(= 2*6). Once the states of one damper are known, the states of the other
damper can be computed by relative kinematics. To summarize, a pushrod has 6
states, if the mass and inertia of the rod connecting the two bushings is
neglected. There are 3 such bushing pairs at each rear wheel, i.e. the number
of states is 2*´3*6=36 states.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>Additionally, the elasticity in the
steering is taken into account by having a spring/damper system in the rack
steering adding one additional DOF. </span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>The number of degrees of freedom is shown
below.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<div align=center>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Individual DOFs</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Component count</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Total DOFs</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=Bodyafter><span lang=EN-US>Comment</span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Chassis</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Front wheel carrier</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>12</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Steering</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Rack steering </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Rear wheel carrier</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>12</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wheel rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\";font-weight:normal'> </span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'>Total</span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US>36</span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
</table>
</div>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>There are 4*2 = 8 states for the tire
deflections and 2 unused states. As a result, this model has 2*36 + 36 + 8 + 2
= 118 states. </span></p>
</HTML>"));
end SedanCar_Level3_Bushings;
model SedanCar_Level4_MassRods
"Car model with bushings in suspensions linkages and mass rods."
annotation (Commands(
file="Scripts/LaneChange4.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
extends StandardCar(chassis(redeclare
VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension3
frontSuspension, redeclare
VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension4
rearSuspension));
annotation (Diagram, Documentation(info="<HTML>
<h3><span lang=EN-GB>Level 4 Linkage with bushings and non-massless bars</span></h3>
<p class=MsoNormal><span lang=EN-US>A slightly more detailed model is obtained
by not neglecting the masses of the push rods. The number of degrees of freedom
is shown below.</span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
<div align=center>
<table class=MsoNormalTable border=1 cellspacing=0 cellpadding=0
style='border-collapse:collapse;border:none'>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Individual DOFs</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Component count</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Total DOFs</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border:solid windowtext 1.0pt;
border-left:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=Bodyafter><span lang=EN-US>Comment</span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Chassis</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Front wheel carrier</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>12</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Steering</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Rack steering </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Rear wheel carrier</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>12</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Pushrods of rear wheel carrier</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>6</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>2*3</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>36</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US>Wheel rotation</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>1</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US>4</span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\";font-weight:normal'> </span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
<tr>
<td width=118 valign=top style='width:88.75pt;border:solid windowtext 1.0pt;
border-top:none;padding:0cm 5.4pt 0cm 5.4pt'>
<h3 style='margin:0cm;margin-bottom:.0001pt'><span lang=EN-US
style='font-family:\"Times New Roman\"'>Total</span></h3>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><span lang=EN-US> </span></p>
</td>
<td width=78 valign=top style='width:58.5pt;border-top:none;border-left:none;
border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal align=right style='text-align:right'><b><span lang=EN-US>72</span></b></p>
</td>
<td width=120 valign=top style='width:90.0pt;border-top:none;border-left:
none;border-bottom:solid windowtext 1.0pt;border-right:solid windowtext 1.0pt;
padding:0cm 5.4pt 0cm 5.4pt'>
<p class=MsoNormal><span lang=EN-US> </span></p>
</td>
</tr>
</table>
</div>
<p class=MsoNormal><span lang=EN-US> </span></p>
<p class=MsoNormal><span lang=EN-US>This model has 2*72 + 8 + 2 = 154 states<b>.</b></span></p>
<p class=MsoNormal><span lang=EN-US> </span></p>
</HTML>"));
end SedanCar_Level4_MassRods;
model Dallara
"Car model with bushings in suspensions linkages and mass rods."
annotation (Commands(
file="Scripts/LaneChangeDallara.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
Chassis.FormulaChassis chassis(
vInit=vInit,
rInit=rInit,
phiInit=phiInit) annotation (extent=[-20, -20; 40, 40]);
annotation (Diagram, Documentation(info="<HTML>
<p>This is a model of a Dallara F3 race car. Typical for a formula car is stiff spring elements and the lack of bushings. This version uses inboard mouted struts both front and rear, adding more kinematical loops. In front, there is a BelleVille linkage that decouples roll and bounce stiffness. In the rear suspension, two struts are mounted onboard and the anti roll is handled by a bar with levers.
</p></HTML>"));
Aerodynamics.BasicAirResistance airResistance
annotation (extent=[-44, 24; -24, 44], rotation=180);
extends CarBase(r_z0=0.26, phiInit={0,0.015,0});
// For plotting
output SI.Acceleration sideAcceleration=chassis.BGR.a[2];
output SI.AngularVelocity yawVelocity=chassis.BGR.w[3];
output SI.Velocity longitudinalSpeed=chassis.BGR.v[1];
output SI.Velocity lateralSpeed=chassis.BGR.v[2];
equation
connect(driver.flange_Lat, chassis.flange_SW)
annotation (points=[-62, 10; -19.4, -2], style(color=0));
connect(airResistance.frame_a, chassis.BGR)
annotation (points=[-23.5, 34; -20, 22]);
end Dallara;
model StandardCar "Standard car chassis"
annotation (Commands(
file="Scripts/LaneChangeStandard.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
Chassis.StandardChassis chassis(
vInit=vInit,
rInit=rInit,
phiInit=phiInit,
redeclare VehicleDynamics.Chassis.Suspensions.MultiLink4Suspension3
rearSuspension) annotation (extent=[-20, -8; 40, 52]);
extends CarBase(redeclare block Road =
VehicleDynamics.Environments.SplitMueRoad);
Aerodynamics.BasicAirResistance airResistance
annotation (extent=[-60, 24; -40, 44], rotation=180);
// For plotting
output SI.Acceleration sideAcceleration=chassis.BGR.a[2];
output SI.AngularVelocity yawVelocity=chassis.BGR.w[3];
output SI.Velocity longitudinalSpeed=chassis.BGR.v[1];
output SI.Velocity lateralSpeed=chassis.BGR.v[2];
ModelicaAdditions.MultiBody.Parts.BoxBody load(
r={-lLoad,0,0},
r0=rLoad + {lLoad/2,0,0},
LengthDirection={1,0,0},
WidthDirection={0,1,0},
Length=lLoad,
Width=wLoad,
Height=hLoad,
rho=rhoLoad,
Material={0,0,1,0.7}) annotation (extent=[-20, 60; 0, 80]);
parameter SI.Density rhoLoad=0 "|Additional Load||Density of load";
parameter SI.Length lLoad=0 "|Additional Load||Length of load";
parameter SI.Length wLoad=0 "|Additional Load||Width of load";
parameter SI.Length hLoad=0 "|Additional Load||Height of load";
parameter SI.Position[3] rLoad={-2.6,0.4,1.5}
"|Additional Load||Position of load centre";
equation
connect(driver.flange_Lat, chassis.flange_SW)
annotation (points=[-62, 10; -19.4, 10], style(color=0));
annotation (Documentation(info="<HTML>
<p>This is a model standard four wheeled car driven by an open loop driver, i.e. no feedback is considered. Only the front wheels can be steered. To the wheel flanges, a powertrain can be added.</p></HTML>"),
Diagram);
connect(airResistance.frame_a, chassis.BGR)
annotation (points=[-39.5, 34; -20, 34]);
connect(load.frame_a, chassis.BGR)
annotation (points=[-20.5, 70; -30, 70; -30, 34; -20, 34]);
end StandardCar;
model SedanCarWithTrailer "Car model with rigid suspensions linkages."
annotation (Commands(
file="Scripts/LaneChangeTrailer.mos" "Simulate double lane change",
file="Scripts/FrontLeftAboveView.mos"
"Front left above view of animation",
file="Scripts/FrontLeftView.mos" "Front left view of animation",
file="Scripts/HighAboveView.mos" "High above view of animation"),
Diagram);
extends StandardCar(chassis(redeclare
VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2
frontSuspension, redeclare
VehicleDynamics.Chassis.Suspensions.TrailingArmSuspension
rearSuspension));
annotation (Diagram, Documentation(info="<HTML>
<p>In this model, the StandardCar example is extended with a trailer.
</p></HTML>"));
Chassis.Trailer trailer annotation (extent=[42, -20; 102, 40]);
equation
connect(chassis.BGR, trailer.frame_a)
annotation (points=[-20, 34; -20, 40; 40, 40; 40, 10; 45, 10]);
end SedanCarWithTrailer;
model SuspensionTestRig "Rig for isolated testing of suspenson suspensions"
annotation (Commands(file="SCRIPT/TestRig.mos"
"Script to simulate test rig"), Diagram);
parameter SI.Force[1] k={4000} "Additional force";
parameter SI.Mass weightOnSuspension=400
"The amount of weight on the tested suspension.";
parameter SI.Distance width=0.23 "Tyre width";
parameter SI.Distance radius=0.295 "Tyre radius";
parameter SI.Distance rimRadius=0.22 "Rim radius";
parameter Boolean animation=true
"This should be false if the tyres should not be animated.";
ModelicaAdditions.MultiBody.Parts.InertialSystem ground(ng={0,0,1})
annotation (extent=[-80, 2; -60, 22]);
annotation (
Diagram,
Icon(Bitmap(extent=[-100, -100; 100, 100], name="images/MacPherson.png"),
Rectangle(extent=[-100, 100; 100, -100])),
Documentation(info="<HTML>
<p>This rig is used to test suspensions separated from the rest of the car. The proper load on the suspension can be set with a parameter. Additionally there are sensors to measuere the rotation of the wheel carrier (upright). The suspension to be mesured can be selected from the parameter dialog.
</p></HTML>"));
replaceable VehicleDynamics.Chassis.Suspensions.MacPhersonSuspension2
suspension extends Chassis.Interfaces.SuspensionInterface annotation (
choicesAllMatching,
extent=[-22, 0; 20, 40],
rotation=180);
Utilities.Parts.Body leftWheel(
shape="tire",
length=width,
material={0.2,0.2,0.2,0.2},
width=2*radius,
height=2*radius,
extra=rimRadius/radius,
m=weightOnSuspension/2,
animation=animation,
lengthDirection={0,1,0})
annotation (extent=[-10, 60; 10, 80], rotation=90);
Utilities.Parts.Body rightWheel(
shape="tire",
length=width,
material={0.2,0.2,0.2,0.2},
width=2*radius,
height=2*radius,
extra=rimRadius/radius,
m=weightOnSuspension/2,
lengthDirection={0,-1,0},
animation=animation) annotation (extent=[-10, -40; 10, -20], rotation=270);
ModelicaAdditions.MultiBody.Forces.ExtLineForce leftForce(n={0,0,1})
annotation (extent=[26, 74; 46, 94], rotation=180);
ModelicaAdditions.MultiBody.Forces.ExtLineForce rightForce(n={0,0,1})
annotation (extent=[28, -52; 48, -32], rotation=180);
Modelica.Blocks.Sources.Pulse pulse1(
amplitude=k,
period={4},
offset=-k/3) annotation (extent=[64, 74; 84, 94], rotation=180);
Modelica.Blocks.Sources.Pulse pulse2(
amplitude=k,
period={8},
offset=-k/3) annotation (extent=[64, -52; 84, -32], rotation=180);
Modelica.Mechanics.Rotational.Fixed fixed
annotation (extent=[-48, 18; -28, 38], rotation=270);
equation
connect(ground.frame_b, suspension.frame_C) annotation (points=[-59.5, 12;
-39.175, 12; -39.175, 12.2; -18.85, 12.2]);
connect(leftWheel.frame_a, suspension.frame_U_1) annotation (points=[-6.42918e-016,
59.5; -6.42918e-016, 54.625; 0.89, 54.625; 0.89, 41]);
connect(rightWheel.frame_a, suspension.frame_U_2) annotation (points=[
1.92876e-015, -19.5; 1.92876e-015, -14.625; 0.89, -14.625; 0.89, -1]);
connect(leftForce.frame_b, leftWheel.frame_b) annotation (points=[25.5, 84;
12.75, 84; 12.75, 80.5; 6.42918e-016, 80.5]);
connect(rightForce.frame_b, rightWheel.frame_b) annotation (points=[27.5, -42;
13.75, -42; 13.75, -40.5; -1.92876e-015, -40.5]);
connect(pulse1.outPort, leftForce.inPort)
annotation (points=[63, 84; 46, 84], style(color=3));
connect(pulse2.outPort, rightForce.inPort)
annotation (points=[63, -42; 48, -42], style(color=3));
connect(fixed.flange_b, suspension.flange_SW) annotation (points=[-38, 28;
-28.425, 28; -28.425, 27.8; -18.85, 27.8], style(color=0));
end SuspensionTestRig;
model DoubleWishBoneTest
"Test of a double wishbone suspension mounted in a rig. The suspension can easilly be replaced by selecting another suspension in the parameter dialog."
annotation (Commands(file="SCRIPT/TestRig2.mos"
"Script to simulate test rig"), Diagram);
extends Modelica.Icons.Example;
SuspensionTestRig suspensionTestRig(
animation=false,
redeclare VehicleDynamics.Chassis.Suspensions.DoubleWishBoneSuspension
suspension,
k={2500},
weightOnSuspension=150) annotation (extent=[-38, -40; 42, 40]);
annotation (Documentation(info="<HTML>
<p>This an example showing the use of the SuspensionTestRig for a MacPhersonSuspension
</p></HTML>"));
end DoubleWishBoneTest;
end Examples;
package Chassis "Modelica library to model vehicle chassis."
extends Modelica.Icons.Library;
annotation (
Coordsys(
extent=[0, 0; 840, 1086],
grid=[2, 2],
component=[20, 20]),
Window(
x=0.45,
y=0.01,
width=0.53,
height=0.95,
library=1,
autolayout=1),
Documentation(info="<HTML>
</HTML>
"));
package Interfaces
extends Modelica.Icons.Library;
annotation (Coordsys(
extent=[0, 0; 632, 426],
grid=[2, 2],
component=[20, 20]), Window(
x=0.14,
y=0.24,
width=0.4,
height=0.4,
library=1,
autolayout=1));
partial model SuspensionInterface
annotation (Coordsys(
extent=[-100, -100; 100, 100],
grid=[2, 2],
component=[20, 20]), Icon(
Rectangle(extent=[-90, 90; 70, -90], style(fillColor=8)),
Text(extent=[-90, 40; 70, -40], string="%name"),
Text(
extent=[-100, -40; 80, -100],
string="left",
style(color=61))));
ModelicaAdditions.MultiBody.Interfaces.Frame_b frame_U_1
annotation (extent=[6, -120; -24, -90], rotation=270);
ModelicaAdditions.MultiBody.Interfaces.Frame_b frame_U_2
annotation (extent=[-24, 90; 6, 120], rotation=90);
ModelicaAdditions.MultiBody.Interfaces.Frame_a frame_C
annotation (extent=[70, 24; 100, 54], rotation=180);
end SuspensionInterface;
partial model ChassisInterface
parameter Real[3] vInit={10,0,0}
"|Initial conditions| initial speed of vehicle";
parameter SI.Position[3] rInit={0,0,0.3}
"|Initial conditions| initial position of vehicle";
parameter SI.Angle[3] phiInit={0,0,0}
"|Initial conditions| initial rotation of vehicle";
annotation (
Coordsys(
extent=[-100, -100; 100, 100],
grid=[2, 2],
component=[20, 20]),
Diagram,
Window(
x=0.45,
y=0.01,
width=0.28,
height=0.42),
Icon);
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_SW
annotation (extent=[-108, -50; -88, -30]);
ModelicaAdditions.MultiBody.Interfaces.Frame_b BGR
"Body Geometric Reference. All coordinates within the chassis are defined from here"
annotation (extent=[-110, 30; -90, 50], rotation=180);
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_2
annotation (extent=[-70, 60; -50, 80], rotation=180);
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_4
annotation (extent=[50, 60; 70, 80], rotation=180);
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_1
annotation (extent=[-70, -80; -50, -60]);
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_3
annotation (extent=[50, -80; 70, -60]);
end ChassisInterface;
model Interface "Interface for linkages"
annotation (
Coordsys(
extent=[-100, -100; 100, 100],
grid=[2, 2],
component=[20, 20]),
Icon,
Diagram,
Window(
x=0.45,
y=0.01,
width=0.28,
height=0.42),
Documentation(info="<HTML>
<p>
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.
</p>
<p>
Advantages:
Compact and cheap.
</p>
<p>
Disadvantages:
Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.
</p>
<p>
Usage:
The MacPherson strut is the dominatin front suspension for cars.
</p>
<p>
The following parameters are used to define the component, see nomenclature for further information:
</p>
<pre>
scaleFactor: The component can be scaled assymetrically, e.g. {1,-1,1} makes a left-hand linkage into a right-hand dito.
rUL1L2: location of outer ball joint, resolved in frame_C
rCL1: location of inner front joint, resolved in frame_C
rCL2: location of inner rear joint, resolved in frame_C
rCS: location of strut mount in chassis, resolved in frame_C
rUS: location of strut mount in upright, resolved in frame_C
rUW: location of frame_W, resolved in frame_C
forceTable: To set the force generation table add a component named [name] of class Utilties.Forces.Utilities.ForceTable1D to the model and write forceTable=[name] in the modifiers row
Mass and inertia properties not yet solved!
</pre>
</HTML>
"));
public
ModelicaAdditions.MultiBody.Interfaces.Frame_a frame_C
annotation (extent=[-120, -16; -90, 14]);
ModelicaAdditions.MultiBody.Interfaces.Frame_b frame_U
annotation (extent=[90, -14; 120, 16]);
end Interface;
partial model SteerableSuspensionInterface
extends VehicleDynamics.Chassis.Interfaces.SuspensionInterface;
Modelica.Mechanics.Rotational.Interfaces.Flange_a flange_SW
annotation (extent=[70, -54; 100, -24]);
end SteerableSuspensionInterface;
model NoSteerSuspensionInterface
extends SuspensionInterface;
end NoSteerSuspensionInterface;
end Interfaces;
package Suspensions
"Suspensions, models ready to be used as front or rear suspensions."
extends Modelica.Icons.Library;
annotation (
Coordsys(
extent=[0, 0; 744, 786],
grid=[1, 1],
component=[20, 20]),
Window(
x=0.45,
y=0.01,
width=0.47,
height=0.7,
library=1,
autolayout=1),
Documentation(info="<HTML>
<p>
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.
</p>
</HTML>
"));
model MacPhersonSuspension5
"MacPherson suspension with bushings, including anti roll bar linkage."
extends Chassis.Interfaces.SteerableSuspensionInterface;
annotation (
Coordsys(
extent=[-100, -100; 100, 100],
grid=[1, 1],
component=[20, 20]),
Diagram,
Images(Parameters(name="|Geometric reference|", source=
"images/MacPherson_text.png")),
Icon(Text(
extent=[-90, 90; 70, 34],
string="MacPherson",
style(color=0))),
Window(
x=0.45,
y=0.01,
width=0.28,
height=0.42),
Documentation(info="<HTML>
<p>
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.
</p>
<p>
Advantages:
Compact and cheap.
</p>
<p>
Disadvantages:
Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.
</p>
<p>
Usage:
The MacPherson strut is the dominatin front suspension for cars.
</p>
<p>
This version contains bushings in the A-arm mount and in the anti-roll linkage. Furthermore there is an elacticity in the steering.</p>
</HTML>"));
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) annotation (extent=[20, -41; 60, -1]);
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)
annotation (extent=[-30.5, -69.5; 9, -30], rotation=270);
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) annotation (extent=[10, 30; -30, 70], rotation=90);
parameter Chassis.Data.MacPhersonData data
annotation (extent=[-114, 40; -80, 80]);
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)
annotation (extent=[-71.5, -19.5; -36.5, 15.5], rotation=270);
equation
connect(rackSteering.frame_C, frame_C)
annotation (points=[60, -11.8; 78, -11.8; 78, 34], style(thickness=4));
connect(rackSteering.flange_a, flange_SW)
annotation (points=[62, -28; 80, -28; 80, -44], style(color=0));
connect(MacPherson_1.frame_C, frame_C) annotation (points=[-10, -29.0125;
-10, 26; 74, 26], style(thickness=4));
connect(MacPherson_2.frame_C, frame_C)
annotation (points=[-8, 28; -8, 26; 78, 26], style(thickness=4));
connect(MacPherson_1.frame_U, frame_U_1)
annotation (points=[-10, -70; -10, -100], style(thickness=4));
connect(MacPherson_2.frame_U, frame_U_2)
annotation (points=[-10, 72; -10, 96], style(thickness=4));
connect(antiRollBar.frame_C, frame_C)
annotation (points=[-38, -2; -10, -2; -10, 26; 74, 26]);
connect(antiRollBar.frame_X_2, MacPherson_2.frame_U)
annotation (points=[-61, 17; -61, 52; -10, 72], style(thickness=4));
connect(antiRollBar.frame_X_1, MacPherson_1.frame_U)
annotation (points=[-60, -20; -60, -56; -12, -70], style(thickness=4));
connect(rackSteering.frame_X_2, MacPherson_2.frame_S) annotation (points=
[28, 2; 28, 20; 34, 24; 34, 30; 28, 34; 28, 80; 6, 80; 6, 33],
style(thickness=4));
connect(MacPherson_1.frame_S, rackSteering.frame_X_1) annotation (points=
[4, -32.9625; 4, -80; 28, -80; 28, -40], style(thickness=4));
end MacPhersonSuspension5;
model MacPhersonSuspension3
"MacPherson suspension with bushings and a simplfied anti roll bar."
extends Chassis.Interfaces.SteerableSuspensionInterface;
annotation (
Coordsys(
extent=[-100, -100; 100, 100],
grid=[1, 1],
component=[20, 20]),
Diagram,
Images(Parameters(name="|Geometric reference|", source=
"images/MacPherson_text.png")),
Icon(Text(
extent=[-90, 90; 70, 34],
string="MacPherson",
style(color=0))),
Window(
x=0.45,
y=0.01,
width=0.28,
height=0.42),
Documentation(info="<HTML>
<p>
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.
</p>
<p>
Advantages:
Compact and cheap.
</p>
<p>
Disadvantages:
Body roll and wheel's movement lead to variation in camber, although not as severe as swing axle suspension.
</p>
<p>
Usage:
The MacPherson strut is the dominatin front suspension for cars.
</p>
<p>