model VariableHydroMotor
extends HydraulicsByFluidon.Components.Base.PartialHydroMotor;
Modelica.Blocks.Interfaces.RealInput setpoint annotation (Placement(
visible = true,
transformation(
origin = {-100, -100},
extent = {
{-20, -20},
{20, 20}},
rotation = 0),
iconTransformation(
origin = {-100, -80},
extent = {
{-20, -20},
{20, 20}},
rotation = 0)));
Modelica.Blocks.Nonlinear.Limiter limiter(strict = true, uMin = -1, uMax = 1);
protected
Real flowFactor;
equation
flowFactor = limiter.y;
limiter.u = setpoint;
hydroMotorInt.volume = dispVolume * flowFactor;
annotation (
Documentation(info = "<html>\n <p>\n Model of a hydro motor with variable displacement volume and losses.\n </p>\n <p>\n <center><img src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Motors/VariableHydroMotor.png\"></center>\n </p>\n <p>\n The main parameters of the motor are its maximum <var>Displacement volume</var> and the \n <var>Rotational moment of inertia</var>. The displacement volume can be adjusted by using\n the <i>setpoint</i> signal:\n </p>\n <p>\n <table>\n <tr>\n <td><i>setpoint</i> = 0</td><td>Displacement volume = 0</td>\n </tr>\n <tr>\n <td><i>setpoint</i> > 1</td><td>Displacement volume = <var>Displacement volume</var><br/>sign(w) = sign(fluidPortA.mFlow)</td>\n </tr> \n <tr>\n <td><i>setpoint</i> < -1</td><td>Displacement volume = <var>Displacement volume</var><br/>sign(w) = -sign(fluidPortA.mFlow)</td>\n </tr> \n <tr>\n <td>1 > <i>setpoint</i> > 0</td><td>Displacement volume = <var>Displacement volume</var> * <i>setpoint</i><br/>sign(w) = sign(fluidPortA.mFlow)</td>\n </tr>\n <tr>\n <td>-1 < <i>setpoint</i> < 0</td><td>Displacement volume = <var>Displacement volume</var> * <i>setpoint</i><br/>sign(w) = -sign(fluidPortA.mFlow)</td>\n </tr>\n </table>\n </p>\n <p>\n The losses are parameterised by providing volumetric and mechanical efficiencies <var>Volumetric efficiency</var> and <var>Mechanical efficiency</var> for a given operating point. \n The operating point is characterised by a reference pressure difference <var>Reference pressure difference</var> and a corresponding shaft speed <var>Reference speed</var>. \n Based on the entered values, the parameters of a laminar throttle (volumetric losses) and a linear damper (representing the\n mechanical losses) are determined automatically. Unlike the efficiencies, the parameters of these two elements typically do not vary\n significantly with the operating conditions.\n </p>\n <p>\n The parameter <var>Ratio external Leakage / total Leakage</var> allows to split the leakage between internal and external leakage. A gear pump e. g. typically has no \n external leakage, <var>Ratio external Leakage / total Leakage</var> has to be set to 0. In contrast, a piston pump has a significant external leakage\n (0.5 < <var>Ratio external Leakage / total Leakage</var> <= 1).\n </p></html>"),
Icon(
graphics = {
Polygon(
fillPattern = FillPattern.Solid,
points = {
{0, 24},
{20, 56.6},
{10, 59.4},
{0, 60},
{-10, 59.4},
{-20, 56.6},
{0, 24}}),
Polygon(
rotation = 180,
fillPattern = FillPattern.Solid,
points = {
{0, 24},
{20, 56.6},
{10, 59.4},
{0, 60},
{-10, 59.4},
{-20, 56.6},
{0, 24}}),
Line(points = {
{-100, 10},
{-59, 10}}),
Line(points = {
{-100, -10},
{-59, -10}}),
Line(points = {
{59, 10},
{100, 10}}),
Line(points = {
{59, -10},
{100, -10}}),
Line(points = {
{-80, -80},
{80, 80}}),
Line(
origin = {91, 0},
points = {
{-9, -30},
{-4, -20},
{1, 0},
{-4, 20},
{-9, 30}},
smooth = Smooth.Bezier),
Polygon(
origin = {44, -65},
rotation = 30,
fillPattern = FillPattern.Solid,
points = {
{80, 80},
{85, 60},
{75, 60},
{80, 80}}),
Polygon(
origin = {183, -15},
rotation = 150,
fillPattern = FillPattern.Solid,
points = {
{80, 80},
{85, 60},
{75, 60},
{80, 80}}),
Polygon(
origin = {-33, 80},
rotation = -45,
fillPattern = FillPattern.Solid,
points = {
{80, 80},
{85, 60},
{75, 60},
{80, 80}})},
coordinateSystem(initialScale = 0.1)));
end VariableHydroMotor;