CounterBalanceValve

model CounterBalanceValve
    import HydraulicsByFluidon.Media;
    import HydraulicsByFluidon.Media.Base.FluidInterface;


    extends HydraulicsByFluidon.Components.Base.HydTwoPortVerticalExt;

    parameter Modelica.SIunits.VolumeFlowRate NominalVolumeFlow = 0.001 "Nominal volume flow";
    parameter Modelica.SIunits.Pressure NominalPressureDifference = 3e+6 "Nominal pressure difference";
    parameter Modelica.SIunits.Density ReferenceDensity = 860 "Reference density for volume flow and pressure difference";
    parameter Modelica.SIunits.Pressure ReliefPressure = 2e+7 "Relief pressure A->B";
    parameter Modelica.SIunits.Pressure ReliefPressureDifference = 1.5e+7 "Relief pressure difference A->B";
    parameter Modelica.SIunits.Pressure OpeningPressure = 100000 "Opening pressure difference B->A";
    parameter Modelica.SIunits.DimensionlessRatio pilotRatio = 3 "Pilot ratio";
    parameter Modelica.SIunits.Time timeConstant(final min = 0.001) = 0.05 "Response time of valve spool";
    parameter Modelica.SIunits.Volume deadVolume(final min = 1e-9) = 1e-6 "Dead volume at ports";
    parameter Boolean enableStrokeOutput = false "Enable spool stroke output";
    Modelica.Blocks.Interfaces.RealOutput spoolStroke if enableStrokeOutput "Spool stroke";
    HydraulicsByFluidon.Interfaces.FluidPort fluidPortPilot(p(start = environment.pAmbient, nominal = 100000)) "Hydraulic port pilot";
equation
    /* Implementation is Protected */
end CounterBalanceValve;