LossyGear

Gear with mesh efficiency and bearing friction (stuck/rolling possible)

    LossyGear

Library

Modelica/Mechanics/Rotational/Components

Description

This component models the gear ratio and the losses of a standard gear box in a reliable way including the stuck phases that may occur at zero speed. The gear boxes that can be handled are fixed in the ground or on a moving support, have one input and one output shaft, and are essentially described by the equations:

             flange_a.phi  = i*flange_b.phi;
-(flange_b.tau - tau_bf_b) = i*eta_mf*(flange_a.tau - tau_bf_a);

// or        -flange_b.tau = i*eta_mf*(flange_a.tau - tau_bf_a - tau_bf_b/(i*eta_mf));

where

  • i is the constant gear ratio,
  • eta_mf = eta_mf(w_a) is the mesh efficiency due to the friction between the teeth of the gear wheels,
  • tau_bf_a = tau_bf_a(w_a) is the bearing friction torque on the flange_a side,
  • tau_bf_b = tau_bf_b(w_a) is the bearing friction torque on the flange_b side, and
  • w_a = der(flange_a.phi) is the speed of flange_a

The loss terms "eta_mf", "tau_bf_a" and "tau_bf_b" are functions of the absolute value of the input shaft speed w_a and of the energy flow direction. They are defined by parameter lossTable[:,5] where the columns of this table have the following meaning:

|w_a| eta_mf1 eta_mf2 |tau_bf1| |tau_bf2|
... ... ... ... ...
... ... ... ... ...

with

|w_a| Absolute value of angular velocity of input shaft flange_a
eta_mf1 Mesh efficiency in case that flange_a is driving
eta_mf2 Mesh efficiency in case that flange_b is driving
|tau_bf1| Absolute resultant bearing friction torque with respect to flange_a in case that flange_a is driving
(= |tau_bf_a*eta_mf1 + tau_bf_b/i|)
|tau_bf2| Absolute resultant bearing friction torque with respect to flange_a in case that flange_b is driving
(= |tau_bf_a/eta_mf2 + tau_bf_b/i|)

With these variables, the mesh efficiency and the bearing friction are formally defined as:

if (flange_a.tau - tau_bf_a)*w_a > 0 or
   (flange_a.tau - tau_bf_a) == 0 and w_a > 0 then
   eta_mf := eta_mf1
   tau_bf := tau_bf1
elseif (flange_a.tau - tau_bf_a)*w_a < 0 or
       (flange_a.tau - tau_bf_a) == 0 and w_a < 0 then
   eta_mf := 1/eta_mf2
   tau_bf := tau_bf2
else // w_a == 0
   eta_mf and tau_bf are computed such that der(w_a) = 0
end if;
-flange_b.tau = i*(eta_mf*flange_a.tau - tau_bf);

Note, that the losses are modeled in a physically meaningful way taking into account that at zero speed the movement may be locked due to the friction in the gear teeth and/or in the bearings. Due to this important property, this component can be used in situations where the combination of the components Modelica.Mechanics.Rotational.IdealGear and Modelica.Mechanics.Rotational.GearEfficiency will fail because, e.g., chattering occurs when using the Modelica.Mechanics.Rotational.GearEfficiency model.

Acknowledgement:

  • The essential idea to model efficiency in this way is from Christoph Pelchen, ZF Friedrichshafen.
  • The article (Pelchen et.al. 2002), see Literature below, and the first implementation of LossyGear (up to version 3.1 of package Modelica) contained a bug leading to a non-converging solution in cases where the driving side is not obvious. This was pointed out by Christian Bertsch and Max Westenkirchner, Bosch, and Christian Bertsch proposed a concrete solution how to fix this bug, see Literature below.

Literature

Parameters

LossyGear_0

NameLabelDescriptionData TypeValid Values

mo_useSupport

useSupport

= true, if support flange enabled, otherwise implicitly grounded

Number

0
1

mo_ratio

ratio

Transmission ratio (flange_a.phi/flange_b.phi)

Scalar

mo_lossTable

lossTable

Array for mesh efficiencies and bearing friction depending on speed

Matrix of size Mx5

mo_useHeatPort

useHeatPort

=true, if heatPort is enabled

Number

0
1

mo_Unknown

Unknown

Value of mode is not known

Scalar

mo_Free

Free

Element is not active

Scalar

mo_Forward

Forward

w_a > 0 (forward rolling)

Scalar

mo_Stuck

Stuck

w_a = 0 (forward rolling, locked or backward rolling)

Scalar

mo_Backward

Backward

w_a < 0 (backward rolling)

Scalar

mo_unitAngularAcceleration

unitAngularAcceleration

Scalar

mo_unitTorque

unitTorque

Scalar

mo_eta_mf1_0

eta_mf1_0

Scalar

mo_eta_mf2_0

eta_mf2_0

Scalar

mo_tau_bf1_0

tau_bf1_0

Scalar

mo_tau_bf2_0

tau_bf2_0

Scalar

mo_tau_bf_a_0

tau_bf_a_0

Scalar

LossyGear_1

NameLabelDescriptionData TypeValid Values

mo_lossPower

lossPower

lossPower

Structure

mo_lossPower/fixed

fixed

Cell of scalars

true
false

mo_lossPower/start

start

Cell of scalars

mo_phi_a

phi_a

phi_a

Structure

mo_phi_a/fixed

fixed

Cell of scalars

true
false

mo_phi_a/start

start

Cell of scalars

mo_phi_b

phi_b

phi_b

Structure

mo_phi_b/fixed

fixed

Cell of scalars

true
false

mo_phi_b/start

start

Cell of scalars

mo_sa

sa

sa

Structure

mo_sa/fixed

fixed

Cell of scalars

true
false

mo_sa/start

start

Cell of scalars

mo_w_a

w_a

w_a

Structure

mo_w_a/fixed

fixed

Cell of scalars

true
false

mo_w_a/start

start

Cell of scalars

mo_a_a

a_a

a_a

Structure

mo_a_a/fixed

fixed

Cell of scalars

true
false

mo_a_a/start

start

Cell of scalars

mo_interpolation_result

interpolation_result

interpolation_result

Structure

mo_interpolation_result/fixed

fixed

cell of matrices of size 1x4

true
false

mo_interpolation_result/start

start

cell of matrices of size 1x4

mo_eta_mf1

eta_mf1

eta_mf1

Structure

mo_eta_mf1/fixed

fixed

Cell of scalars

true
false

mo_eta_mf1/start

start

Cell of scalars

mo_eta_mf2

eta_mf2

eta_mf2

Structure

mo_eta_mf2/fixed

fixed

Cell of scalars

true
false

mo_eta_mf2/start

start

Cell of scalars

mo_tau_bf_a

tau_bf_a

tau_bf_a

Structure

mo_tau_bf_a/fixed

fixed

Cell of scalars

true
false

mo_tau_bf_a/start

start

Cell of scalars

mo_tau_eta

tau_eta

tau_eta

Structure

mo_tau_eta/fixed

fixed

Cell of scalars

true
false

mo_tau_eta/start

start

Cell of scalars

mo_tau_bf1

tau_bf1

tau_bf1

Structure

mo_tau_bf1/fixed

fixed

Cell of scalars

true
false

mo_tau_bf1/start

start

Cell of scalars

mo_tau_bf2

tau_bf2

tau_bf2

Structure

mo_tau_bf2/fixed

fixed

Cell of scalars

true
false

mo_tau_bf2/start

start

Cell of scalars

mo_quadrant1

quadrant1

quadrant1

Structure

mo_quadrant1/fixed

fixed

Cell of scalars

true
false

mo_quadrant1/start

start

Cell of scalars

mo_quadrant2

quadrant2

quadrant2

Structure

mo_quadrant2/fixed

fixed

Cell of scalars

true
false

mo_quadrant2/start

start

Cell of scalars

mo_quadrant3

quadrant3

quadrant3

Structure

mo_quadrant3/fixed

fixed

Cell of scalars

true
false

mo_quadrant3/start

start

Cell of scalars

mo_quadrant4

quadrant4

quadrant4

Structure

mo_quadrant4/fixed

fixed

Cell of scalars

true
false

mo_quadrant4/start

start

Cell of scalars

mo_quadrant1_p

quadrant1_p

quadrant1_p

Structure

mo_quadrant1_p/fixed

fixed

Cell of scalars

true
false

mo_quadrant1_p/start

start

Cell of scalars

mo_quadrant2_p

quadrant2_p

quadrant2_p

Structure

mo_quadrant2_p/fixed

fixed

Cell of scalars

true
false

mo_quadrant2_p/start

start

Cell of scalars

mo_quadrant3_m

quadrant3_m

quadrant3_m

Structure

mo_quadrant3_m/fixed

fixed

Cell of scalars

true
false

mo_quadrant3_m/start

start

Cell of scalars

mo_quadrant4_m

quadrant4_m

quadrant4_m

Structure

mo_quadrant4_m/fixed

fixed

Cell of scalars

true
false

mo_quadrant4_m/start

start

Cell of scalars

mo_tauLoss

tauLoss

tauLoss

Structure

mo_tauLoss/fixed

fixed

Cell of scalars

true
false

mo_tauLoss/start

start

Cell of scalars

mo_tauLossMax

tauLossMax

tauLossMax

Structure

mo_tauLossMax/fixed

fixed

Cell of scalars

true
false

mo_tauLossMax/start

start

Cell of scalars

mo_tauLossMin

tauLossMin

tauLossMin

Structure

mo_tauLossMin/fixed

fixed

Cell of scalars

true
false

mo_tauLossMin/start

start

Cell of scalars

mo_tauLossMax_p

tauLossMax_p

tauLossMax_p

Structure

mo_tauLossMax_p/fixed

fixed

Cell of scalars

true
false

mo_tauLossMax_p/start

start

Cell of scalars

mo_tauLossMin_m

tauLossMin_m

tauLossMin_m

Structure

mo_tauLossMin_m/fixed

fixed

Cell of scalars

true
false

mo_tauLossMin_m/start

start

Cell of scalars

mo_tau_aPos

tau_aPos

tau_aPos

Structure

mo_tau_aPos/fixed

fixed

Cell of scalars

true
false

mo_tau_aPos/start

start

Cell of scalars

mo_tau_etaPos

tau_etaPos

tau_etaPos

Structure

mo_tau_etaPos/fixed

fixed

Cell of scalars

true
false

mo_tau_etaPos/start

start

Cell of scalars

mo_startForward

startForward

startForward

Structure

mo_startForward/fixed

fixed

Cell of scalars

true
false

mo_startForward/start

start

Cell of scalars

mo_startBackward

startBackward

startBackward

Structure

mo_startBackward/fixed

fixed

Cell of scalars

true
false

mo_startBackward/start

start

Cell of scalars

mo_locked

locked

locked

Structure

mo_locked/fixed

fixed

Cell of scalars

true
false

mo_locked/start

start

Cell of scalars

mo_ideal

ideal

ideal

Structure

mo_ideal/fixed

fixed

Cell of scalars

true
false

mo_ideal/start

start

Cell of scalars

mo_mode

mode

mode

Structure

mo_mode/fixed

fixed

Cell of scalars

true
false

mo_mode/start

start

Cell of scalars

mo_tau_eta_p

tau_eta_p

tau_eta_p

Structure

mo_tau_eta_p/fixed

fixed

Cell of scalars

true
false

mo_tau_eta_p/start

start

Cell of scalars

mo_tau_eta_m

tau_eta_m

tau_eta_m

Structure

mo_tau_eta_m/fixed

fixed

Cell of scalars

true
false

mo_tau_eta_m/start

start

Cell of scalars

Ports

NameTypeDescriptionIO TypeNumber

flange_a

implicit

Flange of left shaft

input

1

flange_b

implicit

Flange of right shaft

output

1

Port 3

implicit

Support/housing of component

input

mo_useSupport

Port 4

implicit

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

input

mo_useHeatPort