ElastoBacklash2
Backlash connected in series to linear spring and damper (backlash is modeled with elasticity; at start of contact the flange torque can jump)
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
Name | Label | Description | Data Type | Valid 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 |
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 | |
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 | |
mo_v_rel/start | start | Cell of scalars |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_stateSelect | stateSelect | Priority to use s_rel and v_rel as states | Structure | |
mo_stateSelect/choice1 | StateSelect.never | Number | 0 | |
mo_stateSelect/choice2 | StateSelect.avoid | Number | 0 | |
mo_stateSelect/choice3 | StateSelect.default | Number | 0 | |
mo_stateSelect/choice4 | StateSelect.prefer | Number | 0 | |
mo_stateSelect/choice5 | StateSelect.always | Number | 0 | |
mo_s_nominal | s_nominal | Nominal value of s_rel (used for scaling) | Scalar |
Name | Label | Description | Data Type | Valid 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' | |
mo__modifiers/attribute | Attribute | Cell of strings | 'start' | |
mo__modifiers/value | Value |
Ports
Name | Type | Description | IO Type | Number |
---|---|---|---|---|
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 |