modelOneWayClutch
Extends from Modelica.Mechanics.Rotational.Icons.Clutch (Icon of a clutch), Modelica.Mechanics.Rotational.Interfaces.PartialCompliantWithRelativeStates (Partial model for the compliant connection of two rotational 1-dim. shaft flanges where the relative angle and speed are used as preferred states), Modelica.Thermal.HeatTransfer.Interfaces.PartialElementaryConditionalHeatPortWithoutT (Partial model to include a conditional HeatPort in order to dissipate losses, used for textual modeling, i.e., for elementary models).
Information
This component models a one-way clutch, i.e., a component with two flanges where friction is present between the two flanges and these flanges are pressed together via a normal force. These flanges may be sliding with respect to each other.
A one-way-clutch is an element where a clutch is connected in parallel to a free wheel. This special element is provided, because such a parallel connection introduces an ambiguity into the model (the constraint torques are not uniquely defined when both elements are stuck) and this element resolves it by introducing one constraint torque only instead of two constraints.
Note, initial values have to be chosen for the model such that the relative speed of the one-way-clutch ≥ 0. Otherwise, the configuration is physically not possible and an error occurs.
The normal force fn has to be provided as input signal f_normalized in a normalized form (0 ≤ f_normalized ≤ 1), fn = fn_max * f_normalized, where fn_max has to be provided as parameter.
The friction in the clutch is modeled in the following way. When the relative angular velocity is positive, the friction torque is a function of the velocity dependent friction coefficient mu(w_rel), of the normal force fn, and of a geometry constant cgeo which takes into account the geometry of the device and the assumptions on the friction distributions:
frictional_torque = cgeo * mu(w_rel) * fn
Typical values of coefficients of friction mu:
- 0.2 … 0.4 for dry operation,
- 0.05 … 0.1 when operating in oil.
The geometry constant is calculated - under the assumption of a uniform rate of wear at the friction surfaces - in the following way:
cgeo = N*(r0 + ri)/2
where ri is the inner radius, ro is the outer radius and N is the number of friction interfaces,
The positive part of the friction characteristic mu(w_rel), w_rel >= 0, is defined via table mu_pos (first column = w_rel, second column = mu).
When the relative angular velocity w_rel becomes zero, the elements connected by the friction element become stuck, i.e., the relative angle remains constant. In this phase the friction torque is calculated from a torque balance due to the requirement that the relative acceleration shall be zero. The elements begin to slide when the friction torque exceeds a threshold value, called the maximum static friction torque, computed via:
frictional_torque = peak * cgeo * mu(w_rel=0) * fn, (peak >= 1)
This procedure is implemented in a "clean" way by state events and leads to continuous/discrete systems of equations if friction elements are dynamically coupled. The method is described in (see also a short sketch in UsersGuide.ModelingOfFriction):
- Otter M., Elmqvist H., and Mattsson S.E. (1999):
- Hybrid Modeling in Modelica based on the Synchronous Data Flow Principle. CACSD'99, Aug. 22.-26, Hawaii.
See also the discussion State Selection in the User's Guide of the Rotational library.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Real[:,2] | mu_pos | [0, 0.5] | Positive sliding friction coefficient [-] as function of w_rel [rad/s] (w_rel>=0) |
| Smoothness | smoothness | Smoothness.LinearSegments | Smoothness of table interpolation in mu_pos |
| Real | peak | 1 | Peak for maximum value of mu at w==0 (mu0_max = peak*mu_pos[1,2]) |
| Real | cgeo | 1 | Geometry constant containing friction distribution assumption |
| SI.Force | fn_max | Maximum normal force | |
| Boolean | useHeatPort (from PartialElementaryConditionalHeatPortWithoutT) | false | = true, if heatPort is enabled |
| Advanced | |||
| SI.Angle | phi_nominal (from PartialCompliantWithRelativeStates) | 1e-4 | Nominal value of phi_rel (used for scaling) |
| StateSelect | stateSelect (from PartialCompliantWithRelativeStates) | StateSelect.prefer | Priority to use phi_rel and w_rel as states |
| SI.AngularVelocity | w_small | 1e10 | Relative angular velocity near to zero if jumps due to a reinit(..) of the velocity can occur (set to low value only if such impulses can occur) |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Flange_a | flange_a (from PartialCompliantWithRelativeStates) | Left flange of compliant 1-dim. rotational component | |
| Flange_b | flange_b (from PartialCompliantWithRelativeStates) | Right flange of compliant 1-dim. rotational component | |
| HeatTransfer.Interfaces.HeatPort_a | heatPort (from PartialElementaryConditionalHeatPortWithoutT) | Optional port to which dissipated losses are transported in form of heat | |
| Modelica.Blocks.Interfaces.RealInput | f_normalized | Normalized force signal 0..1 (normal force = fn_max*f_normalized; clutch is engaged if > 0) |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| SI.Angle | phi_rel (from PartialCompliantWithRelativeStates) | Relative rotation angle (= flange_b.phi - flange_a.phi) | |
| SI.AngularVelocity | w_rel (from PartialCompliantWithRelativeStates) | Relative angular velocity (= der(phi_rel)) | |
| SI.AngularAcceleration | a_rel (from PartialCompliantWithRelativeStates) | Relative angular acceleration (= der(w_rel)) | |
| SI.Torque | tau (from PartialCompliantWithRelativeStates) | Torque between flanges (= flange_b.tau) | |
| SI.Power | lossPower (from PartialElementaryConditionalHeatPortWithoutT) | Loss power leaving component via heatPort (> 0, if heat is flowing out of component) | |
| Real | u | Normalized force input signal (0..1) | |
| Real | mu | Friction coefficient | |
| SI.Force | fn | Normal force (fn=fn_max*inPort.signal) | |
| Boolean | startForward | = true, if w_rel=0 and start of forward sliding or w_rel > w_small | |
| Boolean | locked | = true, if w_rel=0 and not sliding | |
| Boolean | stuck | w_rel=0 (locked or start forward sliding) |