WOLFRAM SYSTEMMODELER

ElastoBacklash

Backlash connected in series to linear spring and damper (backlash is modeled with elasticity)

Wolfram Language

In[1]:=
Click for copyable input
SystemModel["Modelica.Mechanics.Rotational.Components.ElastoBacklash"]
Out[1]:=

Information

This information is part of the Modelica Standard Library maintained by the Modelica Association.

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.

In combination with components IdealGear, the ElastoBacklash model can be used to model a gear box with backlash, elasticity and damping.

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-10 rad (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.phi - flange_a.phi - phi_rel0 ≤ b/2) no torque is exerted (flange_b.tau = 0). Outside of this region, contact is present and the contact torque is basically computed with a linear spring/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 difficulties:

  1. 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.
  2. When contact occurs with a non-zero relative speed (which is the usual situation), the damping torque has a non-zero value and therefore the contact torque changes discontinuously at phi_rel = phi_rel0. Again, this is not physical because the torque can only change continuously. (Note, this component is not an idealized model where a steep characteristic is approximated by a discontinuity, but it shall model the steep characteristic.)

In the literature there are several proposals to fix problem (2). However, there seems to be no proposal to avoid sticking. For this reason, the most simple approach is used in the ElastoBacklash model, to fix both problems by slight changes to the linear spring/damper characteristic:

    // 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 + min( tau_c, tau_d );
    end if;

Note, when sticking would occur (tau_c + tau_d ≤ 0), then the contact torque is explicitly set to zero. The "min(tau_c, tau_d)" part in the if-expression, limits the damping torque when it is pushing. This means that at the start of the contact (phi_rel - phi_rel0 = b/2), the damping torque is zero and is continuous. The effect of both modifications is that the absolute value of the damping torque is always limited by the absolute value of the spring torque: |tau_d| ≤ |tau_c|.

In the next figure, a typical simulation with the ElastoBacklash model is shown (Examples.Backlash) where the different effects are visualized:

  1. Curve 1 (elastoBacklash1.tau) is the unmodified contact torque, i.e., the linear spring/damper characteristic. A pulling/sticking torque is present at the end of the contact.
  2. Curve 2 (elastoBacklash2.tau) is the contact torque, where the torque is explicitly set to zero when pulling/sticking occurs. The contact torque is discontinuous at begin of contact.
  3. Curve 3 (elastoBacklash3.tau) is the ElastoBacklash model of this library. No discontinuity and no pulling/sticking occurs.

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

Connectors (3)

flange_a

Type: Flange_a

Description: Left flange of compliant 1-dim. rotational component

flange_b

Type: Flange_b

Description: Right flange of compliant 1-dim. rotational component

heatPort

Type: HeatPort_a

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

Parameters (9)

phi_nominal

Value: 1e-4

Type: Angle (rad)

Description: Nominal value of phi_rel (used for scaling)

stateSelect

Value: StateSelect.prefer

Type: StateSelect

Description: Priority to use phi_rel and w_rel as states

useHeatPort

Value: false

Type: Boolean

Description: =true, if heatPort is enabled

c

Value:

Type: RotationalSpringConstant (N·m/rad)

Description: Spring constant (c > 0 required)

d

Value:

Type: RotationalDampingConstant (N·m·s/rad)

Description: Damping constant

b

Value: 0

Type: Angle (rad)

Description: Total backlash

phi_rel0

Value: 0

Type: Angle (rad)

Description: Unstretched spring angle

bMax

Value: b / 2

Type: Angle (rad)

Description: Backlash in range bMin <= phi_rel - phi_rel0 <= bMax

bMin

Value: -bMax

Type: Angle (rad)

Description: Backlash in range bMin <= phi_rel - phi_rel0 <= bMax

Used in Examples (2)

Backlash

Example to demonstrate backlash

HeatLosses

Demonstrate the modeling of heat losses

Used in Components (1)

Gearbox

Realistic model of a gearbox (based on LossyGear)