ElastoBacklash2
Backlash connected in series to linear spring and damper (backlash is modeled with elasticity; at start of contact the flange torque can jump, contrary to the ElastoBacklash model)
Library
Modelica/Mechanics/Rotational/Components
Description
This element consists of a backlash element connected in seriesto a spring and damper element which are connected in parallel.The spring constant shall be non-zero, otherwise the component cannot be used.
In combination with components IdealGear, the ElastoBacklash2 modelcan be used to model a gear box with backlash, elasticity and damping.
During initialization, the backlash characteristic is replaced by a continuousapproximation in the backlash region, in order to reduce problems duringinitialization, especially for inverse models.
If the backlash b is smaller as 1e-10 rad (especially, if b=0),then the backlash is ignored and the component reduces to a spring/damperelement in parallel.
In the backlash region (-b/2 ≤ flange_b.phi - flange_a.phi - phi_rel0 ≤ b/2) no torqueis exerted (flange_b.tau = 0). Outside of this region, contact is present andthe contact torque is basically computed with a linearspring/damper characteristic:
desiredContactTorque = c*phi_contact + d*der(phi_contact) phi_contact = phi_rel - phi_rel0 - b/2 if phi_rel - phi_rel0 > b/2 = phi_rel - phi_rel0 + b/2 if phi_rel - phi_rel0 < -b/2 phi_rel = flange_b.phi - flange_a.phi;
This torque characteristic leads to the following difficulty:
- If the damper torque becomes larger as the spring torque and with opposite sign, the contact torque 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 simpleapproach is used in the ElastoBacklash2 model, by slightly changingthe linear spring/damper characteristic to:
// Torque characteristic when phi_rel > phi_rel0 if phi_rel - phi_rel0 < b/2 then tau_c = 0; // spring torque tau_d = 0; // damper torque flange_b.tau = 0; else tau_c = c*(phi_rel - phi_rel0); // spring torque tau_d = d*der(phi_rel); // damper torque flange_b.tau = if tau_c + tau_d ≤ 0 then 0 else tau_c + tau_d; end if;
Note, when sticking would occur (tau_c + tau_d ≤ 0), then the contact torqueis explicitly set to zero.
This model of backlash is slightly different to theElastoBacklashcomponent:
- An event occurs when contact occurs or when contact is released (contrary to the ElastoBacklash component).
- When contact occurs, the torque changes discontinuously, due to the damping. The damping is larger as for the ElastoBacklash component (for the same damping coefficient), because the ElastoBacklash component has a heuristic to avoid the discontinuity of the torque when contact occurs.
- For some models, the ElastoBacklash2 component leads to faster simulations (as compared when using the ElastBacklash component).
See also the discussionState Selectionin 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_phi_rel0 | phi_rel0 | Unstretched spring angle | Scalar | |
mo_useHeatPort | useHeatPort | =true, if heatPort is enabled | Number | 0 |
mo_bMax | bMax | Backlash in range bMin <= phi_rel - phi_rel0 <= bMax | Scalar | |
mo_bMin | bMin | Backlash in range bMin <= phi_rel - phi_rel0 <= bMax | Scalar | |
mo_phi_rel | phi_rel | phi_rel | Structure | |
mo_phi_rel/fixed | fixed | Cell of scalars | true | |
mo_phi_rel/start | start | Cell of scalars | ||
mo_w_rel | w_rel | w_rel | Structure | |
mo_w_rel/fixed | fixed | Cell of scalars | true | |
mo_w_rel/start | start | Cell of scalars | ||
mo_a_rel | a_rel | a_rel | Structure | |
mo_a_rel/fixed | fixed | Cell of scalars | true | |
mo_a_rel/start | start | Cell of scalars |
Name | Label | Description | Data Type | Valid Values |
---|---|---|---|---|
mo_phi_nominal | phi_nominal | Nominal value of phi_rel (used for scaling) | Scalar | |
mo_stateSelect | stateSelect | Priority to use phi_rel and w_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 |
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 | 'tau' | |
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. rotational component | input | 1 |
flange_b | implicit | Right flange of compliant 1-dim. rotational component | output | 1 |
Port 3 | implicit | Optional port to which dissipated losses are transported in form of heat | input | mo_useHeatPort |