model PropValve33LSTableQpx
parameter Real inputMax = 10 "Input value for 100 % open"
annotation (Dialog(group = "Control Parameters"));
parameter Modelica.SIunits.AngularFrequency angFreq = 2 * Modelica.Constants.pi * 50 "Angular frequency"
annotation (Dialog(group = "Control Parameters"));
parameter Modelica.SIunits.DampingCoefficient damping = 0.7 "Damping"
annotation (Dialog(group = "Control Parameters"));
parameter Modelica.SIunits.TimeAging vMax = 100 "max. Velocity"
annotation (Dialog(group = "Control Parameters"));
parameter Modelica.SIunits.TimeAging vMin = -100 "min. Velocity"
annotation (Dialog(group = "Control Parameters"));
extends HydraulicsByFluidon.Components.Valves.Base.PartialValve33LSTableQpx;
extends HydraulicsByFluidon.Components.Valves.Base.PartialValveControlSignal_63;
extends HydraulicsByFluidon.Components.Valves.Base.PartialValveProp_63;
Modelica.SIunits.DimensionlessRatio Stroke(start = 0) "rel. Position of valve spool";
Modelica.SIunits.TimeAging Velocity(start = 0) "rel. Velocity of valve spool";
Modelica.Blocks.Nonlinear.Limiter limiter(limitsAtInit = true, strict = true, uMax = 1, uMin = -1);
equation
if enableStrokeOut then
valveStrokeOut = Stroke;
end if;
if noEvent(vMax < Velocity) then
der(Stroke) = vMax;
elseif noEvent(Velocity < vMin) then
der(Stroke) = vMin;
else
der(Stroke) = Velocity;
end if;
ssLS = if noEvent(switchBand < Stroke) then portA.p else portT.p;
gain1.u = Stroke;
limiter.u = Input / inputMax;
valveEdgePA.Input = Stroke;
der(Velocity) = angFreq * (angFreq * (limiter.y - Stroke) - 2 * damping * Velocity);
annotation (Documentation(info = "<html>\n <p>\n The component PropValve33LSTableQpx is a model of a 3-way proportional valve where the stroke follows the input signal with a 2nd order delay.\n In addition to PropValve33PT2TableQpx, it has a fourth port (<i>LS</i>) connected to port A or port T, depending on the stroke.\n </p>\n <p>\n <center><img src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Valves/DirectionalValves/LSDirectionalValves/PropValve33LS.png\"></center>\n </p>\n <p>\n The hydraulic parameterization of the valve is done by providing a look-up table of the flow rate as \n a function of the pressure drop and the input signal. Each of the two meetering edges is parameterised \n with a separate look-up table given by the user. Further information regarding the formatting of the \n look-up table can be found in the documentation of the component \n <a href=\"modelica://HydraulicsByFluidon.Components.Resistors.ResistorTableQpx\">ResistorTableQpx</a>. \n Unlike the Resistor component, the look-up table for valve edges is declared for the input range from -1 to 1.\n <p>\n For a positive stroke (right position) the flow is function of input signal (starting from 0 to <var>Input \n value for 100 % open</var>) and the pressure difference across the valve edge. In case of a negative stroke \n (left position) the same applies for input from 0 to -<var>Input value for 100 % open</var>.\n </p>\n <p>\n The valve stroke can be shifted by <var>Relative overlap general</var>. In accordance with common valve \n parameters a negative overlap will open the valve edge. <var>Relative overlap general</var> is applied to \n all valve edges simultaneously. If at least one of the edge-specific values, e. g. <var>Relative overlap PA</var> \n or <var>-AT</var> is set to a value different from 0, then the <var>Relative overlap general</var> is ignored \n and the individual overlaps are used.\n </p>\n <p>\n Port LS is connected to port A if <var>Stroke</var> > <var>Relative stroke at which the LS port is switched</var>,\n else port LS is connected to port T.\n Pressure at port LS follows pressure at A, B or T with first order delay with </var>Time constant of LS signal</var>.\n </p>\n </html>"));
end PropValve33LSTableQpx;