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;