WOLFRAM SYSTEM MODELER
ElastoBacklashBacklash connected in series to linear spring and damper (backlash is modeled with elasticity) 
SystemModel["Modelica.Mechanics.Rotational.Components.ElastoBacklash"]
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 nonzero, 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 1e10 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:
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 ifexpression, 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:
See also the discussion State Selection in the User's Guide of the Rotational library.
phi_nominal 
Value: 1e4 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 
flange_a 
Type: Flange_a Description: Left flange of compliant 1dim. rotational component 


flange_b 
Type: Flange_b Description: Right flange of compliant 1dim. rotational component 

heatPort 
Type: HeatPort_a Description: Optional port to which dissipated losses are transported in form of heat 
Modelica.Mechanics.Rotational.Examples Example to demonstrate backlash 
Modelica.Mechanics.Rotational.Components Realistic model of a gearbox (based on LossyGear) 