PressureReducingValve

model PressureReducingValve
    parameter Modelica.SIunits.Pressure SetPressure = 1e+7 "Set pressure (relative value)";
    parameter Modelica.SIunits.Pressure Deviation = -500000 "Deviation";
    parameter Real gain = 1 "Controller gain";

    extends HydraulicsByFluidon.Components.Valves.Base.PartialPressureFlowValve;
equation
    ssU = min(1, (SetPressure + environment.pAmbient + volumeFlowA / NominalVolumeFlow * Deviation - fluidPortB.p) * (1e-5) * gain);

    annotation (
        Icon(
            coordinateSystem(
                extent = {
                    {-100, -100}, 
                    {100, 100}},
                preserveAspectRatio = false),
            graphics = {
                Rectangle(
                    fillColor = {255, 255, 255},
                    fillPattern = FillPattern.Solid,
                    extent = {
                        {-40, 40}, 
                        {40, -40}}), 
                Line(
                    origin = {0, -10},
                    points = {
                        {0, 30}, 
                        {0, -30}}), 
                Polygon(
                    origin = {0, 40},
                    fillPattern = FillPattern.Solid,
                    points = {
                        {0, 0}, 
                        {-5, -20}, 
                        {5, -20}, 
                        {0, 0}}), 
                Line(
                    origin = {0, -20},
                    points = {
                        {0, 120}, 
                        {0, -80}}), 
                Line(
                    origin = {0, -40},
                    points = {
                        {0, 80}, 
                        {-20, 100}, 
                        {-80, 100}, 
                        {-80, 20}, 
                        {-40, 20}},
                    pattern = LinePattern.Dash), 
                Line(
                    origin = {40, -20},
                    points = {
                        {0, 0}, 
                        {4, 20}, 
                        {12, -20}, 
                        {20, 20}, 
                        {28, -20}, 
                        {36, 20}, 
                        {44, -20}, 
                        {48, 0}})}),
        Documentation(info = "<html>\n            <p>\n                The component PressureReducingValve is a model of a 2-port pressure control valve. \n                It maintains a largely constant outlet pressure even at a variable (higher) inlet pressure.\n            </p>\n            <p>\n                <center><img src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Valves/PressureValves/PressureReducingValve.png\"></center>\n            </p>\n            <p>\n                If inlet pressure <var>pA</var> is less than <var>Set pressure (relative value)</var> the valve acts like an orifice \n                with the characteristics <var>Nominal volume flow</var> and <var>Nominal pressure difference</var>.\n            </p>\n            <p>\n                For all pressures exceeding <var>Set pressure (relative value)</var> the valve opens and \n                the flow increases linearly following the slope given by parameters <var>Nominal volume flow</var> and \n                <var>Pressure drop</var>. The outlet pressure deviates by <var>Deviation P-A</var> @ <var>Nominal volume flow</var>.\n            </p>\n            <p>\n                <center><img src=\"modelica://HydraulicsByFluidon/Resources/Images/Components/Valves/PressureValves/PressureReducingValveReducing.png\"></center>\n            </p>\n            <p>\n                The component PressureReducingValve is not a model of a pressure control valve according to its \n                physical structure. It merely represents the characteristic behavior of a pressure reducing \n                valve. Therefore dynamic effects such as forces due to inertia will not be represented.\n            </p>\n            </html>"));
end PressureReducingValve;