This package contains basic components 1D mechanical translational drive trains.
Extends from Modelica.Icons.Package (Icon for standard packages).Name | Description |
---|---|
Fixed | Fixed flange |
Mass | Sliding mass with inertia |
Rod | Rod without inertia |
Spring | Linear 1D translational spring |
Damper | Linear 1D translational damper |
SpringDamper | Linear 1D translational spring and damper in parallel |
ElastoGap | 1D translational spring damper combination with gap |
SupportFriction | Coulomb friction in support |
Brake | Brake based on Coulomb friction |
IdealGearR2T | Gearbox transforming rotational into translational motion |
IdealRollingWheel | Simple 1-dim. model of an ideal rolling wheel without inertia |
InitializeFlange | Initializes a flange with pre-defined position, speed and acceleration (usually, this is reference data from a control bus) |
MassWithStopAndFriction | Sliding mass with hard stop and Stribeck friction |
RelativeStates | Definition of relative state variables |
The flange of a 1D translational mechanical system fixed at an position s0 in the housing. May be used:
Name | Description |
---|---|
s0 | Fixed offset position of housing [m] |
Name | Description |
---|---|
flange |
Sliding mass with inertia, without friction and two rigidly connected flanges.
The sliding mass has the length L, the position coordinate s is in the middle. Sign convention: A positive force at flange flange_a moves the sliding mass in the positive direction. A negative force at flange flange_a moves the sliding mass to the negative direction.
Extends from Translational.Interfaces.PartialRigid (Rigid connection of two translational 1D flanges).
Name | Description |
---|---|
m | Mass of the sliding mass [kg] |
L | Length of component, from left flange to right flange (= flange_b.s - flange_a.s) [m] |
Advanced | |
stateSelect | Priority to use s and v as states |
Name | Description |
---|---|
flange_a | Left flange of translational component |
flange_b | Right flange of translational component |
Rod without inertia and two rigidly connected flanges.
Extends from Translational.Interfaces.PartialRigid (Rigid connection of two translational 1D flanges).
Name | Description |
---|---|
L | Length of component, from left flange to right flange (= flange_b.s - flange_a.s) [m] |
Name | Description |
---|---|
flange_a | Left flange of translational component |
flange_b | Right flange of translational component |
A linear 1D translational spring. The component can be connected either between two sliding masses, or between a sliding mass and the housing (model Fixed), to describe a coupling of the sliding mass with the housing via a spring.
Extends from Translational.Interfaces.PartialCompliant (Compliant connection of two translational 1D flanges).
Name | Description |
---|---|
c | Spring constant [N/m] |
s_rel0 | Unstretched spring length [m] |
Initialization | |
s_rel | Relative distance (= flange_b.s - flange_a.s) [m] |
Name | Description |
---|---|
flange_a | Left flange of compliant 1-dim. translational component |
flange_b | Right flange of compliant 1-dim. translational component |
Linear, velocity dependent damper element. It can be either connected between a sliding mass and the housing (model Fixed), or between two sliding masses.
Extends from Translational.Interfaces.PartialCompliantWithRelativeStates (Base model for the compliant connection of two translational 1-dim. shaft flanges where the relative position and relative velocities are used as states), Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT (Partial model to include a conditional HeatPort in order to dissipate losses, used for textual modeling, i.e., for elementary models).
Name | Description |
---|---|
d | Damping constant [N.s/m] |
useHeatPort | =true, if heatPort is enabled |
Initialization | |
s_rel | Relative distance (= flange_b.s - flange_a.s) [m] |
v_rel | Relative velocity (= der(s_rel)) [m/s] |
Advanced | |
stateSelect | Priority to use phi_rel and w_rel as states |
s_nominal | Nominal value of s_rel (used for scaling) [m] |
Name | Description |
---|---|
flange_a | Left flange of compliant 1-dim. translational component |
flange_b | Right flange of compliant 1-dim. translational component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
A spring and damper element connected in parallel. The component can be connected either between two sliding masses to describe the elasticity and damping, or between a sliding mass and the housing (model Fixed), to describe a coupling of the sliding mass with the housing via a spring/damper.
Extends from Translational.Interfaces.PartialCompliantWithRelativeStates (Base model for the compliant connection of two translational 1-dim. shaft flanges where the relative position and relative velocities are used as states), Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT (Partial model to include a conditional HeatPort in order to dissipate losses, used for textual modeling, i.e., for elementary models).
Name | Description |
---|---|
c | Spring constant [N/m] |
d | Damping constant [N.s/m] |
s_rel0 | Unstretched spring length [m] |
useHeatPort | =true, if heatPort is enabled |
Initialization | |
s_rel | Relative distance (= flange_b.s - flange_a.s) [m] |
v_rel | Relative velocity (= der(s_rel)) [m/s] |
Advanced | |
stateSelect | Priority to use phi_rel and w_rel as states |
s_nominal | Nominal value of s_rel (used for scaling) [m] |
Name | Description |
---|---|
flange_a | Left flange of compliant 1-dim. translational component |
flange_b | Right flange of compliant 1-dim. translational component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
This component models a spring damper combination that can lift off. It can be connected between a sliding mass and the housing (model Fixed), to describe the contact of a sliding mass with the housing.
As long as s_rel > s_rel0, no force is exerted (s_rel = flange_b.s - flange_a.s). If s_rel ≤ s_rel0, the contact force is basically computed with a linear spring/damper characteristic. With parameter n≥1 (exponent of spring force), a nonlinear spring force can be modeled:
desiredContactForce = c*|s_rel - s_rel0|^n + d*der(s_rel)
Note, Hertzian contact is described by:
The above force law leads to the following difficulties:
In the literature there are several proposals to fix problem (2). Especially, often the following model is used (see, e.g., Lankarani, Nikravesh: Continuous Contact Force Models for Impact Analysis in Multibody Systems, Nonlinear Dynamics 5, pp. 193-207, 1994, pdf-download):
f = c*s_rel^n + (d*s_rel^n)*der(s_rel)
However, this and other models proposed in literature violate issue (1), i.e., unphysical pulling forces can occur (if d*der(s_rel) becomes large enough). Note, if the force law is of the form "f = f_c + f_d", then a necessary condition is that |f_d| ≤ |f_c|, otherwise (1) and (2) are violated. For this reason, the most simplest approach is used in the ElastoGap model to fix both problems by using this necessary condition in the force law directly. If s_rel0 = 0, the equations are:
if s_rel ≥ 0 then f = 0; // contact force else f_c = -c*|s_rel|^n; // contact spring force (Hertzian contact force) f_d2 = d*der(s_rel); // linear contact damper force f_d = if f_d2 < f_c then f_c else if f_d2 > -f_c then -f_c else f_d2; // bounded damper force f = f_c + f_d; // contact force end if;
Note, since |f_d| ≤ |f_c|, pulling forces cannot occur and the contact force is always continuous, especially around the start of the penetration at s_rel = s_rel0.
In the next figure, a typical simulation with the ElastoGap model is shown (Examples.ElastoGap) where the different effects are visualized:
Extends from Modelica.Mechanics.Translational.Interfaces.PartialCompliantWithRelativeStates (Base model for the compliant connection of two translational 1-dim. shaft flanges where the relative position and relative velocities are used as states), Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT (Partial model to include a conditional HeatPort in order to dissipate losses, used for textual modeling, i.e., for elementary models).
Name | Description |
---|---|
c | Spring constant [N/m] |
d | Damping constant [N.s/m] |
s_rel0 | Unstretched spring length [m] |
n | Exponent of spring force ( f_c = -c*|s_rel-s_rel0|^n ) |
useHeatPort | =true, if heatPort is enabled |
Initialization | |
s_rel | Relative distance (= flange_b.s - flange_a.s) [m] |
v_rel | Relative velocity (= der(s_rel)) [m/s] |
Advanced | |
stateSelect | Priority to use phi_rel and w_rel as states |
s_nominal | Nominal value of s_rel (used for scaling) [m] |
Name | Description |
---|---|
flange_a | Left flange of compliant 1-dim. translational component |
flange_b | Right flange of compliant 1-dim. translational component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
This element describes Coulomb friction in support, i.e., a frictional force acting between a flange and the housing. The positive sliding friction force "f" has to be defined by table "f_pos" as function of the absolute velocity "v". E.g.
v | f ---+----- 0 | 0 1 | 2 2 | 5 3 | 8
gives the following table:
f_pos = [0, 0; 1, 2; 2, 5; 3, 8];
Currently, only linear interpolation in the table is supported. Outside of the table, extrapolation through the last two table entries is used. It is assumed that the negative sliding friction force has the same characteristic with negative values. Friction is modelled in the following way:
When the absolute velocity "v" is not zero, the friction force is a function of v and of a constant normal force. This dependency is defined via table f_pos and can be determined by measurements, e.g., by driving the gear with constant velocity and measuring the needed driving force (= friction force).
When the absolute velocity becomes zero, the elements connected by the friction element become stuck, i.e., the absolute position remains constant. In this phase the friction force is calculated from a force balance due to the requirement, that the absolute acceleration shall be zero. The elements begin to slide when the friction force exceeds a threshold value, called the maximum static friction force, computed via:
maximum_static_friction = peak * sliding_friction(v=0) (peak >= 1)
This procedure is implemented in a "clean" way by state events and leads to continuous/discrete systems of equations if friction elements are dynamically coupled which have to be solved by appropriate numerical methods. The method is described in:
More precise friction models take into account the elasticity of the material when the two elements are "stuck", as well as other effects, like hysteresis. This has the advantage that the friction element can be completely described by a differential equation without events. The drawback is that the system becomes stiff (about 10-20 times slower simulation) and that more material constants have to be supplied which requires more sophisticated identification. For more details, see the following references, especially (Armstrong and Canudas de Witt 1996):
Name | Description |
---|---|
useSupport | = true, if support flange enabled, otherwise implicitly grounded |
useHeatPort | =true, if heatPort is enabled |
f_pos[:, 2] | [v, f] Positive sliding friction characteristic (v>=0) |
peak | peak*f_pos[1,2] = Maximum friction force for v==0 |
Initialization | |
startForward | true, if v_rel=0 and start of forward sliding |
startBackward | true, if v_rel=0 and start of backward sliding |
locked | true, if v_rel=0 and not sliding |
Advanced | |
v_small | Relative velocity near to zero (see model info text) [m/s] |
Name | Description |
---|---|
flange_a | Flange of left shaft |
flange_b | Flange of right shaft |
support | Support/housing of component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
This component models a brake, i.e., a component where a frictional force is acting between the housing and a flange and a controlled normal force presses the flange to the housing in order to increase friction. The normal force fn has to be provided as input signal f_normalized in a normalized form (0 ≤ f_normalized ≤ 1), fn = fn_max*f_normalized, where fn_max has to be provided as parameter. Friction in the brake is modelled in the following way:
When the absolute velocity "v" is not zero, the friction force is a function of the velocity dependent friction coefficient mue(v) , of the normal force "fn", and of a geometry constant "cgeo" which takes into account the geometry of the device and the assumptions on the friction distributions:
frictional_force = cgeo * mue(v) * fn
Typical values of coefficients of friction:
dry operation : mue = 0.2 .. 0.4 operating in oil: mue = 0.05 .. 0.1
The positive part of the friction characteristic mue(v), v >= 0, is defined via table mue_pos (first column = v, second column = mue). Currently, only linear interpolation in the table is supported.
When the absolute velocity becomes zero, the elements connected by the friction element become stuck, i.e., the absolute position remains constant. In this phase the friction force is calculated from a force balance due to the requirement, that the absolute acceleration shall be zero. The elements begin to slide when the friction force exceeds a threshold value, called the maximum static friction force, computed via:
frictional_force = peak * cgeo * mue(w=0) * fn (peak >= 1)
This procedure is implemented in a "clean" way by state events and leads to continuous/discrete systems of equations if friction elements are dynamically coupled. The method is described in:
More precise friction models take into account the elasticity of the material when the two elements are "stuck", as well as other effects, like hysteresis. This has the advantage that the friction element can be completely described by a differential equation without events. The drawback is that the system becomes stiff (about 10-20 times slower simulation) and that more material constants have to be supplied which requires more sophisticated identification. For more details, see the following references, especially (Armstrong and Canudas de Witt 1996):
Name | Description |
---|---|
useSupport | = true, if support flange enabled, otherwise implicitly grounded |
useHeatPort | =true, if heatPort is enabled |
mue_pos[:, 2] | [v, f] Positive sliding friction characteristic (v>=0) |
peak | peak*mue_pos[1,2] = Maximum friction force for v==0 |
cgeo | Geometry constant containing friction distribution assumption |
fn_max | Maximum normal force [N] |
Initialization | |
startForward | true, if v_rel=0 and start of forward sliding |
startBackward | true, if v_rel=0 and start of backward sliding |
locked | true, if v_rel=0 and not sliding |
Advanced | |
v_small | Relative velocity near to zero (see model info text) [m/s] |
Name | Description |
---|---|
flange_a | Flange of left shaft |
flange_b | Flange of right shaft |
support | Support/housing of component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
f_normalized | Normalized force signal 0..1 (normal force = fn_max*f_normalized; brake is active if > 0) |
Couples rotational and translational motion, like a toothed wheel with a toothed rack, specifying the ratio of rotational / translational motion.
Extends from Modelica.Mechanics.Rotational.Components.IdealGearR2T (Gearbox transforming rotational into translational motion).
Name | Description |
---|---|
useSupportR | = true, if rotational support flange enabled, otherwise implicitly grounded |
useSupportT | = true, if translational support flange enabled, otherwise implicitly grounded |
ratio | Transmission ratio (flange_a.phi/flange_b.s) [rad/m] |
Name | Description |
---|---|
flangeR | Flange of rotational shaft |
flangeT | Flange of translational rod |
supportR | Rotational support/housing of component |
supportT | Translational support/housing of component |
Couples rotational and translational motion, like an ideal rolling wheel, specifying the wheel radius.
Extends from Modelica.Mechanics.Rotational.Components.IdealRollingWheel (Simple 1-dim. model of an ideal rolling wheel without inertia).
Name | Description |
---|---|
useSupportR | = true, if rotational support flange enabled, otherwise implicitly grounded |
useSupportT | = true, if translational support flange enabled, otherwise implicitly grounded |
radius | Wheel radius [m] |
Name | Description |
---|---|
flangeR | Flange of rotational shaft |
flangeT | Flange of translational rod |
supportR | Rotational support/housing of component |
supportT | Translational support/housing of component |
This component is used to optionally initialize the position, speed, and/or acceleration of the flange to which this component is connected. Via parameters use_s_start, use_v_start, use_a_start the corresponding input signals s_start, v_start, a_start are conditionally activated. If an input is activated, the corresponding flange property is initialized with the input value at start time.
For example, if "use_s_start = true", then flange.s is initialized with the value of the input signal "s_start" at the start time.
Additionally, it is optionally possible to define the "StateSelect" attribute of the flange position and the flange speed via parameter "stateSelection".
This component is especially useful when the initial values of a flange shall be set according to reference signals of a controller that are provided via a signal bus.
Extends from Modelica.Blocks.Icons.Block (Basic graphical layout of input/output block).
Name | Description |
---|---|
use_s_start | = true, if initial position is defined by input s_start, otherwise not initialized |
use_v_start | = true, if initial speed is defined by input v_start, otherwise not initialized |
use_a_start | = true, if initial acceleration is defined by input a_start, otherwise not initialized |
stateSelect | Priority to use flange angle and speed as states |
Name | Description |
---|---|
s_start | Initial position of flange [m] |
v_start | Initial speed of flange [m/s] |
a_start | Initial angular acceleration of flange [m/s2] |
flange | Flange that is initialized |
This element describes the Stribeck friction characteristics of a sliding mass, i. e. the frictional force acting between the sliding mass and the support. Included is a hard stop for the position.
The surface is fixed and there is friction between sliding mass and surface. The frictional force f is given for positive velocity v by:
f = F_Coulomb + F_prop * v + F_Stribeck * exp (-fexp * v)
The distance between the left and the right connector is given by parameter L. The position of the center of gravity, coordinate s, is in the middle between the two flanges.
There are hard stops at smax and smin, i. e. if
flange_a.s >= smin
and flange_b.s <= xmax
the sliding mass can move freely.
When the absolute velocity becomes zero, the sliding mass becomes stuck, i.e., the absolute position remains constant. In this phase the friction force is calculated from a force balance due to the requirement that the absolute acceleration shall be zero. The elements begin to slide when the friction force exceeds a threshold value, called the maximum static friction force, computed via:
maximum_static_friction = F_Coulomb + F_Stribeck
This requires the states Stop.s and Stop.v . If these states are eliminated during the index reduction the model will not work. To avoid this any inertias should be connected via springs to the Stop element, other sliding masses, dampers or hydraulic chambers must be avoided.
For more details of the used friction model see the following reference:
The friction model is implemented in a "clean" way by state events and leads to continuous/discrete systems of equations which have to be solved by appropriate numerical methods. The method is described in:
More precise friction models take into account the elasticity of the material when the two elements are "stuck", as well as other effects, like hysteresis. This has the advantage that the friction element can be completely described by a differential equation without events. The drawback is that the system becomes stiff (about 10-20 times slower simulation) and that more material constants have to be supplied which requires more sophisticated identification. For more details, see the following references, especially (Armstrong and Canudas de Witt 1996):
The dissipated energy is transported in form of heat to the optional heatPort connector that can be enabled via parameter "useHeatPort". Independently whether the heatPort is or is not enabled, the dissipated power is defined with variable "lossPower". If contact occurs at the hard stops, the lossPower is not correctly modelled at this time instant, because the hard stop would introduce a Dirac impulse in the lossPower due to the discontinuously changing kinetic energy of the mass (lossPower is the derivative of the kinetic energy at the time instant of the impact).
Extends from PartialFrictionWithStop (Base model of Coulomb friction elements with stop), Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT (Partial model to include a conditional HeatPort in order to dissipate losses, used for textual modeling, i.e., for elementary models).
Name | Description |
---|---|
smax | Right stop for (right end of) sliding mass [m] |
smin | Left stop for (left end of) sliding mass [m] |
L | Length of component, from left flange to right flange (= flange_b.s - flange_a.s) [m] |
m | Mass [kg] |
F_prop | Velocity dependent friction [N.s/m] |
F_Coulomb | Constant friction: Coulomb force [N] |
F_Stribeck | Stribeck effect [N] |
fexp | Exponential decay [s/m] |
useHeatPort | =true, if heatPort is enabled |
Initialization | |
startForward | = true, if v_rel=0 and start of forward sliding or v_rel > v_small |
startBackward | = true, if v_rel=0 and start of backward sliding or v_rel < -v_small |
locked | true, if v_rel=0 and not sliding |
s | Absolute position of center of component (s = flange_a.s + L/2 = flange_b.s - L/2) [m] |
Advanced | |
v_small | Relative velocity near to zero (see model info text) [m/s] |
Name | Description |
---|---|
flange_a | Left flange of translational component |
flange_b | Right flange of translational component |
heatPort | Optional port to which dissipated losses are transported in form of heat |
Usually, the absolute position and the absolute velocity of Modelica.Mechanics.Translational.Inertia models are used as state variables. In some circumstances, relative quantities are better suited, e.g., because it may be easier to supply initial values. In such cases, model RelativeStates allows the definition of state variables in the following way:
An example is given in the next figure
Here, the relative position and the relative velocity between the two masses are used as state variables. Additionally, the simulator selects either the absolute position and absolute velocity of model mass1 or of model mass2 as state variables.
Extends from Translational.Interfaces.PartialTwoFlanges (Component with two translational 1D flanges).
Name | Description |
---|---|
stateSelect | Priority to use the relative angle and relative speed as states |
Name | Description |
---|---|
flange_a | (left) driving flange (flange axis directed in to cut plane, e. g. from left to right) |
flange_b | (right) driven flange (flange axis directed out of cut plane) |