Valvola di massima

immagine_esercizio

Mostra il modello o scaricalo
model ReliefValve
parameter SFPLibDyn.Units.Dimensionless param_input_q = 40 "max input flow rate (l/min)";
parameter SFPLibDyn.Units.Position param_valve_displ = 0.0033 "max valve displacement";
parameter SFPLibDyn.Units.Force param_spring_F = 715.05 "spring preload";
parameter SFPLibDyn.Units.Stiffness param_spring_k = 158000 "spring rate";
SFPLibDyn.Mechanical.Translational.Mass Mass(coeff_viscous = 50, endstops_model = SFPLibDyn.Units.Choices.mass_type.Ideal, high_lim = param_valve_displ, low_lim = 0, mass = 0.02) annotation(
    Placement(visible = true, transformation(origin = {84, 44}, extent = {{-10, -10}, {10, 10}}, rotation = 90)));
SFPLibDyn.Mechanical.Translational.Spring Spring(preload = param_spring_F, spring_rate = param_spring_k) annotation(
    Placement(transformation(origin = {84, 68}, extent = {{-10, -10}, {10, 10}}, rotation = 90)));
SFPLibDyn.Mechanical.Translational.Sources.ZeroSpeed zero_s annotation(
    Placement(transformation(origin = {84, 94}, extent = {{-10, 10}, {10, -10}}, rotation = -90)));
SFPLibDyn.Components.Piston piston3(d_piston = 0.006, direction = -1) annotation(
    Placement(visible = true, transformation(origin = {84, 20}, extent = {{-10, 10}, {10, -10}}, rotation = 90)));
SFPLibDyn.Components.PoppetSharpEdgeSeat Poppet(angle_half = 0.3490658503988659, coeff_f_flow = 0.5, d_hole = 0.005100000000000001, d_poppet = 0.006000000000000001, d_rod = 0.002700000000000001) annotation(
    Placement(visible = true, transformation(origin = {84, -4}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
SFPLibDyn.Components.Leakage Leakage(d_clearance = 0.0001, d_ext = 0.005100000000000001, l_contact_0 = 0.003900000000000001) annotation(
    Placement(visible = true, transformation(origin = {84, -52}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
SFPLibDyn.Components.Piston piston1(d_piston = 0.005100000000000001, l_chamber_0 = 0) annotation(
    Placement(visible = true, transformation(origin = {84, -78}, extent = {{-10, -10}, {10, 10}}, rotation = -90)));
SFPLibDyn.Mechanical.Translational.Sources.ZeroForce zero_f annotation(
    Placement(transformation(origin = {84, -96}, extent = {{4, 4}, {-4, -4}}, rotation = -90)));
SFPLibDyn.Hydraulic.Volumes.Volume2p Vol_int1(pressure(start = 0), vol_0 = 3.000000000000002e-08) annotation(
    Placement(visible = true, transformation(origin = {54, -70}, extent = {{-6, -6}, {6, 6}}, rotation = 180)));
SFPLibDyn.Components.Piston piston2(d_piston = 0.005100000000000001, d_rod = 0.002700000000000001, direction = -1) annotation(
    Placement(visible = true, transformation(origin = {84, -28}, extent = {{-10, 10}, {10, -10}}, rotation = 90)));
SFPLibDyn.Hydraulic.Sources.Tank tank1 annotation(
    Placement(transformation(origin = {4, 8}, extent = {{-6, -3}, {6, 6}})));
SFPLibDyn.Hydraulic.Sources.FlowrateSource Q_in(scale = 1/60000) annotation(
    Placement(transformation(origin = {-56, -42}, extent = {{-12, -10}, {12, 10}})));
SFPLibDyn.Signals.Source.LinearStages q_sig(stage1_duration = 10, stage1_end = param_input_q, stage1_start = 0) annotation(
    Placement(visible = true, transformation(origin = {-84, -42}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
SFPLibDyn.Hydraulic.Valves.ReliefValve RV(p_crack = 6e+07) annotation(
    Placement(transformation(origin = {-24, -68}, extent = {{-12, 12}, {12, -12}})));
SFPLibDyn.Hydraulic.Orifices.Orifice OR_in(area = 5.03e-05, d_hydr = 0.004, diam = 0.006000000000000001, n_parall = 4, or_model = SFPLibDyn.Units.Choices.orifice_type.Diameter) annotation(
    Placement(transformation(origin = {26, -42}, extent = {{-6, -12}, {6, 12}}, rotation = -90)));
SFPLibDyn.Hydraulic.Orifices.Orifice OR_out(area = 6.36e-05, d_hydr = 0.0045, diam = 0.004000000000000001, n_parall = 6, or_model = SFPLibDyn.Units.Choices.orifice_type.Diameter) annotation(
    Placement(transformation(origin = {26, 26}, extent = {{-6, -12}, {6, 12}}, rotation = -90)));
inner SFPLibDyn.Properties.Hydraulic.FluidProp fluidProp annotation(
    Placement(transformation(origin = {4, 90}, extent = {{-10, -10}, {10, 10}})));
SFPLibDyn.Hydraulic.Volumes.Volume4p Vol_int2(vol_0 = 3.000000000000002e-06) annotation(
    Placement(visible = true, transformation(origin = {54, -42}, extent = {{-6, -6}, {6, 6}}, rotation = -90)));
SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_int3(vol_0 = 5.000000000000003e-06) annotation(
    Placement(transformation(origin = {54, 26}, extent = {{-6, 6}, {6, -6}}, rotation = -180)));
SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_IN(vol_0 = 1.000000000000001e-05) annotation(
    Placement(visible = true, transformation(origin = {-24, -42}, extent = {{-8, 8}, {8, -8}}, rotation = -180)));
SFPLibDyn.Hydraulic.Sources.Tank tank2 annotation(
    Placement(transformation(origin = {-24, -90}, extent = {{-6, -4.5}, {6, 4.5}})));
equation
connect(tank1.h1, OR_out.h1) annotation(
    Line(points = {{4, 14}, {4, 26}, {14, 26}}));
connect(Vol_int1.h1, Leakage.h2) annotation(
    Line(points = {{54, -64}, {54, -58}, {74, -58}}));
connect(piston1.t2, zero_f.t1) annotation(
    Line(points = {{84, -88}, {84, -92}}));
connect(q_sig.y1, Q_in.u1) annotation(
    Line(points = {{-74, -42}, {-68, -42}}, color = {170, 0, 0}));
connect(piston2.t1, Leakage.t1) annotation(
    Line(points = {{84, -38}, {84, -42}}));
connect(Poppet.t2, piston2.t2) annotation(
    Line(points = {{84, -14}, {84, -18}}));
connect(Leakage.t2, piston1.t1) annotation(
    Line(points = {{84, -62}, {84, -68}}));
connect(piston3.t1, Poppet.t1) annotation(
    Line(points = {{84, 10}, {84, 6}}));
connect(Mass.t1, piston3.t2) annotation(
    Line(points = {{84, 34}, {84, 30}}));
connect(Spring.t1, Mass.t2) annotation(
    Line(points = {{84, 58}, {84, 54}}));
connect(zero_s.t1, Spring.t2) annotation(
    Line(points = {{84, 84}, {84, 78}}));
connect(OR_in.h2, Vol_int2.h1) annotation(
    Line(points = {{38, -42}, {48, -42}}));
connect(Vol_int2.h3, Poppet.h2) annotation(
    Line(points = {{54, -36}, {54, -10}, {74, -10}}));
connect(Vol_int2.h4, Leakage.h1) annotation(
    Line(points = {{54, -48}, {54, -54}, {68, -54}, {68, -46}, {74, -46}}));
connect(OR_out.h2, Vol_int3.h3) annotation(
    Line(points = {{38, 26}, {48, 26}}));
connect(Poppet.h1, Vol_int3.h1) annotation(
    Line(points = {{74, -2}, {74, 0}, {54, 0}, {54, 20}}));
connect(RV.h1, Vol_IN.h1) annotation(
    Line(points = {{-24, -56}, {-24, -50}}));
connect(Vol_IN.h3, Q_in.h1) annotation(
    Line(points = {{-32, -42}, {-44, -42}}));
connect(Vol_IN.h2, OR_in.h1) annotation(
    Line(points = {{-16, -42}, {14, -42}}));
connect(piston3.h1, Vol_int3.h2) annotation(
    Line(points = {{74, 26}, {60, 26}}));
connect(Vol_int2.h2, piston2.h1) annotation(
    Line(points = {{60, -42}, {64, -42}, {64, -22}, {74, -22}}));
connect(piston1.h1, Vol_int1.h2) annotation(
    Line(points = {{74, -84}, {54, -84}, {54, -76}}));
connect(RV.h2, tank2.h1) annotation(
    Line(points = {{-24, -80}, {-24, -85.5}}));
annotation(
    Icon(graphics = {Line(origin = {0.320122, 60.3963}, points = {{0, 36}, {0, -30}}), Rectangle(origin = {0, -10}, fillColor = {232, 232, 232}, fillPattern = FillPattern.Sphere, lineThickness = 1.5, extent = {{-60, 60}, {60, -60}}), Line(origin = {63.3101, -7.13366}, points = {{-2.9901, 11.5257}, {-2.9901, -16.4743}, {-2.9901, 11.5257}, {-2.99013, -16.4743}, {3.00987, 17.5257}, {9.00987, -16.4743}, {15.0099, 17.5257}, {21.0099, -16.4743}, {27.0099, 17.5257}, {33.0099, -16.4743}}, thickness = 1), Line(origin = {-15.6799, 4.39634}, points = {{48, 28}, {-22, 28}, {-22, -50}}, thickness = 1, arrow = {Arrow.None, Arrow.Filled}, arrowSize = 14), Line(origin = {0.320122, -74.2836}, points = {{0, 5}, {0, -25}}), Line(origin = {-27.6799, 40.3963}, points = {{28, 10}, {-12, 50}, {-72, 50}, {-72, -50}}, pattern = LinePattern.Dash, thickness = 1), Ellipse(origin = {0, 50}, fillPattern = FillPattern.Solid, lineThickness = 2, extent = {{-2, 2}, {2, -2}}), Line(origin = {-89.8475, -9.60366}, points = {{-10, 0}, {30, 0}}, pattern = LinePattern.Dash, thickness = 1), Ellipse(origin = {1, 51}, extent = {{1, 1}, {-1, -1}})}, coordinateSystem(extent = {{-120, -120}, {120, 120}})),
    experiment(StartTime = 0, StopTime = 10, Tolerance = 1e-06, Interval = 0.002),
    Diagram(coordinateSystem(extent = {{-120, -120}, {120, 120}}), graphics = {Bitmap(origin = {-66, 44}, rotation = 180, extent = {{68, 64}, {-68, -64}}, fileName = "modelica://SFPLibDyn/Resources/Examples/Images/rv_valve.png")}));
end ReliefValve;

In questo esempio proponiamo il modello di una valvola limitatrice di pressione a cartuccia con otturatore conico e sistema di stabilità.

Esternamente viene imposta una rampa di portata in ingresso 0-40 L/min, mentre alla valvola è impostata una taratura di 350 bar.