ElastoBacklash2

Backlash connected in series to linear spring and damper (backlash is modeled with elasticity; at start of contact the flange torque can jump)

    ElastoBacklash2

Library

ModelicaExtras/Mechanics/Translational

Description

This element consists of a backlash element connected in series to a spring and damper element which are connected in parallel. The spring constant shall be non-zero, otherwise the component cannot be used.

During initialization, the backlash characteristic is replaced by a continuous approximation in the backlash region, in order to reduce problems during initialization, especially for inverse models.

If the backlash b is smaller as 1e-8 m (especially, if b=0), then the backlash is ignored and the component reduces to a spring/damper element in parallel.

In the backlash region (-b/2 ≤ flange_b.s - flange_a.s - s_rel0 ≤ b/2) no force is exerted (flange_b.f = 0). Outside of this region, contact is present and the contact force is basically computed with a linear spring/damper characteristic:

            desiredContactTorque = c*s_contact + d*der(s_contact)                    s_contact = s_rel - s_rel0 - b/2 if s_rel - s_rel0 >  b/2                              = s_rel - s_rel0 + b/2 if s_rel - s_rel0 < -b/2                    s_rel     = flange_b.s - flange_a.s;            

This force characteristic leads to the following difficulty:

  • If the damper force becomes larger as the spring force and with opposite sign, the contact force would be "pulling/sticking" which is unphysical, since during contact only pushing torques can occur.

In the literature this issue seems to be not discussed. For this reason, the most simple approach is used in the ElastoBacklash2 model, by slightly changing the linear spring/damper characteristic to:

                // Force characteristic when s_rel > s_rel0                if s_rel - s_rel0 < b/2 then                   f_c = 0;          // spring force                   f_d = 0;          // damper force                   flange_b.f = 0;                else                   f_c = c*(s_rel - s_rel0);    // spring force                   f_d = d*der(s_rel);            // damper force                   flange_b.f = if f_c + f_d ≤ 0 then 0 else f_c + f_d;                end if;            

Note, when sticking would occur (f_c + f_d ≤ 0), then the contact force is explicitly set to zero.

This model of backlash is slightly different to the ElastoBacklash component:

  • An event occurs when contact occurs or when contact is released.
  • When contact occurs, the force changes discontinuously, due to the damping.

See also the discussion State Selection in the User's Guide of the Rotational library.

Parameters

ElastoBacklash2_0

NameLabelDescriptionData TypeValid Values

mo_c

c

Spring constant (c > 0 required)

Scalar

mo_d

d

Damping constant

Scalar

mo_b

b

Total backlash

Scalar

mo_s_rel0

s_rel0

Unstretched spring length

Scalar

mo_useHeatPort

useHeatPort

=true, if heatPort is enabled

Number

0
1

mo_bMax

bMax

Backlash in range bMin <= s_rel - s_rel0 <= bMax

Scalar

mo_bMin

bMin

Backlash in range bMin <= s_rel - s_rel0 <= bMax

Scalar

mo_s_rel

s_rel

s_rel

Structure

mo_s_rel/fixed

fixed

Cell of scalars

true
false

mo_s_rel/start

start

Cell of scalars

mo_v_rel

v_rel

v_rel

Structure

mo_v_rel/fixed

fixed

Cell of scalars

true
false

mo_v_rel/start

start

Cell of scalars

ElastoBacklash2_1

NameLabelDescriptionData TypeValid Values

mo_stateSelect

stateSelect

Priority to use s_rel and v_rel as states

Structure

mo_stateSelect/choice1

StateSelect.never

Number

0
1

mo_stateSelect/choice2

StateSelect.avoid

Number

0
1

mo_stateSelect/choice3

StateSelect.default

Number

0
1

mo_stateSelect/choice4

StateSelect.prefer

Number

0
1

mo_stateSelect/choice5

StateSelect.always

Number

0
1

mo_s_nominal

s_nominal

Nominal value of s_rel (used for scaling)

Scalar

ElastoBacklash2_2

NameLabelDescriptionData TypeValid Values

mo__nmodifiers

Number of Modifiers

Specifies the number of modifiers

Number

mo__modifiers

Modifiers

Add new modifier

Structure

mo__modifiers/varname

Variable name

Cell of strings

'f'
'lossPower'
'f_c'
'f_d'
's_diff'

mo__modifiers/attribute

Attribute

Cell of strings

'start'
'fixed'

mo__modifiers/value

Value

Ports

NameTypeDescriptionIO TypeNumber

flange_a

implicit

Left flange of compliant 1-dim. translational component

input

1

flange_b

implicit

Right flange of compliant 1-dim. translational component

output

1

Port 3

implicit

Optional port to which dissipated losses are transported in form of heat

input

mo_useHeatPort

See Also