- Timestamp:
- 10/10/2007 03:17:26 PM (15 months ago)
- Files:
-
- 1 modified
Legend:
- Unmodified
- Added
- Removed
-
Modelica/branches/maintenance/2.2.2/Modelica/Mechanics/Rotational.mo
r659 r660 3210 3210 3211 3211 // Friction torque 3212 tau = if locked then sa else (if startForward then3212 tau = if locked then sa*unitTorque else (if startForward then 3213 3213 Modelica.Math.tempInterpol1(w, tau_pos, 2) else if startBackward then - 3214 3214 Modelica.Math.tempInterpol1(-w, tau_pos, 2) else if pre(mode) == Forward then … … 3411 3411 3412 3412 // friction torque 3413 tau = if locked then sa else if free then 0 else cgeo*fn*(if startForward then3413 tau = if locked then sa*unitTorque else if free then 0 else cgeo*fn*(if startForward then 3414 3414 Modelica.Math.tempInterpol1(w_rel, mue_pos, 2) else if 3415 3415 startBackward then -Modelica.Math.tempInterpol1(-w_rel, mue_pos, 2) else … … 3448 3448 Real mue0 "Friction coefficient for w=0 and sliding"; 3449 3449 Boolean free "true, if frictional element is not active"; 3450 Real sa "path parameter of tau = f(a_rel) Friction characteristic"; 3450 Real sa(unit="1") 3451 "path parameter of tau = f(a_rel) Friction characteristic"; 3451 3452 constant Real eps0=1.0e-4 "Relative hysteresis epsilon"; 3452 3453 SI.Torque tau0_max_low "lowest value for tau0_max"; … … 3629 3630 special code shall be generated) 3630 3631 */ 3631 startForward = pre(stuck) and (sa > tau0_max or pre(startForward) and sa >3632 tau0 or w_rel > w_small) or initial() and (w_rel > 0);3632 startForward = pre(stuck) and (sa > tau0_max/unitTorque or pre(startForward) and sa > 3633 tau0/unitTorque or w_rel > w_small) or initial() and (w_rel > 0); 3633 3634 locked = pre(stuck) and not startForward; 3634 3635 3635 3636 // acceleration and friction torque 3636 3637 a_rel = unitAngularAcceleration* (if locked then 0 else sa - tau0/unitTorque); 3637 tau = if locked then sa else (if free then 0 else cgeo*fn*3638 tau = if locked then sa*unitTorque else (if free then 0 else cgeo*fn* 3638 3639 Modelica.Math.tempInterpol1(w_rel, mue_pos, 2)); 3639 3640 … … 3852 3853 3853 3854 // friction torque 3854 tau = if locked then sa else if free then 0 else cgeo*fn*(if startForward then3855 tau = if locked then sa*unitTorque else if free then 0 else cgeo*fn*(if startForward then 3855 3856 Modelica.Math.tempInterpol1(w, mue_pos, 2) else if startBackward then 3856 3857 -Modelica.Math.tempInterpol1(-w, mue_pos, 2) else if pre(mode) == … … 4190 4191 4191 4192 // Determine rolling/stuck mode when w_rel = 0 4192 startForward = pre(mode) == Stuck and sa > tauLossMax or initial() and w_a4193 startForward = pre(mode) == Stuck and sa > tauLossMax/unitTorque or initial() and w_a 4193 4194 > 0; 4194 startBackward = pre(mode) == Stuck and sa < tauLossMin or initial() and w_a4195 startBackward = pre(mode) == Stuck and sa < tauLossMin/unitTorque or initial() and w_a 4195 4196 < 0; 4196 4197 locked = not (ideal or pre(mode) == Forward or startForward or pre(mode) … … 4201 4202 to simplify the following expression as mode == Stuck is assured in case 4202 4203 of startForward or startBackward */ 4203 tauLoss = if ideal then 0 else (if locked then sa else (if (startForward or4204 tauLoss = if ideal then 0 else (if locked then sa*unitTorque else (if (startForward or 4204 4205 pre(mode) == Forward) then tauLossMax else tauLossMin)); 4205 4206
