model PumpMotor parameter SFPLibDyn.Units.Volume param_pump1_displ = 100e-6 "Pump1 displacement"; parameter SFPLibDyn.Units.Volume param_pump2_displ = 20e-6 "Pump2 displacement"; parameter SFPLibDyn.Units.Pressure param_RV_pcrack = 1500000 "RV_pump cracking pressure"; parameter SFPLibDyn.Units.Inertia param_inertia = 5 "J moment of mass inertia"; SFPLibDyn.Hydraulic.Sources.Pumps.FixedUniDirPump Pump1(mech_eff_var = false, vol_eff_var = false, max_displ = param_pump1_displ) annotation( Placement(transformation(origin = {-64, -88}, extent = {{-15, -15}, {15, 15}}))); SFPLibDyn.Mechanical.Rotational.Sources.Motor Motor_elec annotation( Placement(transformation(origin = {-104, -88}, extent = {{-15, -15}, {15, 15}}))); SFPLibDyn.Hydraulic.Volumes.Volume2p Vol_P(pressure(displayUnit = "bar", start = 1500000)) annotation( Placement(transformation(origin = {-64, -58}, extent = {{-10, -10}, {10, 10}}, rotation = 180))); SFPLibDyn.Mechanical.Rotational.Sources.ZeroTorque zero_t annotation( Placement(transformation(origin = {-8, 139}, extent = {{-10, -10}, {10, 10}}, rotation = -90))); SFPLibDyn.Hydraulic.Sources.Pumps.FixedUniDirPump Pump2(max_displ = 2.000000000000001e-05,mech_eff_var = false, vol_eff_var = false) annotation( Placement(transformation(origin = {26, -119}, extent = {{-15, -15}, {15, 15}}))); SFPLibDyn.Hydraulic.Sources.Tank tank annotation( Placement(transformation(origin = {26, -145}, extent = {{-6, -3}, {6, 6}}))); SFPLibDyn.Hydraulic.Valves.CheckValve CV(p_crack = 49999.99999999999) annotation( Placement(transformation(origin = {-2, -58}, extent = {{-6, -12}, {6, 12}}, rotation = 90))); SFPLibDyn.Hydraulic.Valves.ReliefValve RV_pump(p_crack = param_RV_pcrack) annotation( Placement(transformation(origin = {89, -97}, extent = {{-12, -12}, {12, 12}}, rotation = 180))); SFPLibDyn.Hydraulic.Sources.Tank tank1 annotation( Placement(transformation(origin = {89, -144}, extent = {{-6, -3}, {6, 6}}))); SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_m1(pressure(displayUnit = "bar", start = 1500000), vol_0 = 1.000000000000001e-05) annotation( Placement(transformation(origin = {-52, 45}, extent = {{10, -10}, {-10, 10}}, rotation = 90))); SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_m2(pressure(displayUnit = "bar", start = 1500000), vol_0 = 1.000000000000001e-05) annotation( Placement(transformation(origin = {56, 45}, extent = {{10, 10}, {-10, -10}}, rotation = 90))); SFPLibDyn.Signals.Source.LinearStages sig_dirValve(stage1_duration = 5, stage2_duration = 0.1, stage2_end = 1, stage3_end = 1) annotation( Placement(transformation(origin = {-108, -29}, extent = {{-10, -10}, {10, 10}}))); SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_T(pressure(displayUnit = "bar", start = 1500000), vol_0 = 1.000000000000001e-05) annotation( Placement(transformation(origin = {-32, -58}, extent = {{-10, -10}, {10, 10}}, rotation = 90))); SFPLibDyn.Hydraulic.Valves.ReliefValve RV2(p_crack = 35000000) annotation( Placement(transformation(origin = {4, 45}, extent = {{12, -12}, {-12, 12}}, rotation = -90))); SFPLibDyn.Hydraulic.Nodes.Node3p n2 annotation( Placement(transformation(origin = {56, 11}, extent = {{-6, -6}, {6, 6}}, rotation = 180))); SFPLibDyn.Hydraulic.Nodes.Node3p n1 annotation( Placement(transformation(origin = {-52, 11}, extent = {{-6, 6}, {6, -6}}))); SFPLibDyn.Hydraulic.Valves.ReliefValve RV1(p_crack = 35000000) annotation( Placement(transformation(origin = {4, 11}, extent = {{12, -12}, {-12, 12}}, rotation = 90))); SFPLibDyn.Signals.Source.LinearStages sig_mot(stage1_duration = 1, stage1_end = 1500, stage1_start = 1500, stage2_end = 1500) annotation( Placement(transformation(origin = {-133, -88}, extent = {{-10, -10}, {10, 10}}))); SFPLibDyn.Hydraulic.Actuators.Motors.FixedBiDirMotWExtDrain Motor(mech_eff_const = 0.95, vol_eff_const = 0.8) annotation( Placement(transformation(origin = {-8, 77}, extent = {{-15, 15}, {15, -15}}, rotation = -90))); SFPLibDyn.Hydraulic.Sources.Tank tank2 annotation( Placement(transformation(origin = {17, 57}, extent = {{-6, -3}, {6, 6}}))); SFPLibDyn.Hydraulic.Valves.DirControlValves.DirValves4x3.DirValv4x3C02 DirValve(AB_k_area = {0, 1, 0}, AB_q_ch = 0.0008333333333333334, AT_k_area = {0, 1, 1}, AT_q_ch = 0.0008333333333333334, BT_k_area = {1, 1, 0}, BT_q_ch = 0.0008333333333333334, PA_k_area = {1, 1, 0}, PA_q_ch = 0.0008333333333333334, PB_k_area = {0, 1, 1}, PB_q_ch = 0.0008333333333333334, PT_k_area = {0, 1, 0}, PT_q_ch = 0.0008333333333333334, signal = {0, 0.5, 1}) annotation( Placement(transformation(origin = {-49, -26}, extent = {{-24, -12}, {24, 12}}))); inner SFPLibDyn.Properties.Hydraulic.FluidProp fluidProp annotation( Placement(transformation(origin = {-133, 137}, extent = {{-10, -10}, {10, 10}}))); SFPLibDyn.Hydraulic.Volumes.Volume3p Vol_cv(pressure(displayUnit = "bar", start = 1500000), vol_0 = 1.000000000000001e-05) annotation( Placement(transformation(origin = {26, -58}, extent = {{-10, -10}, {10, 10}}))); SFPLibDyn.Mechanical.Rotational.Inertia Inertia(J = param_inertia, coeff_viscous = 0.9549296585513721) annotation( Placement(transformation(origin = {-8, 112}, extent = {{-10, -10}, {10, 10}}, rotation = -90))); equation connect(Pump2.h1, tank.h1) annotation( Line(points = {{26, -134}, {26, -139}})); connect(sig_mot.y1, Motor_elec.u1) annotation( Line(points = {{-123, -88}, {-119, -88}})); connect(sig_dirValve.y1, DirValve.u1) annotation( Line(points = {{-98, -29}, {-76, -29}})); connect(n1.h1, Vol_m1.h3) annotation( Line(points = {{-52, 17}, {-52, 35}})); connect(Vol_m2.h3, n2.h1) annotation( Line(points = {{56, 35}, {56, 17}})); connect(Vol_P.h1, DirValve.hP) annotation( Line(points = {{-64, -48}, {-64, -44}, {-52, -44}, {-52, -38}})); connect(Vol_T.h2, Pump1.h1) annotation( Line(points = {{-32, -68}, {-32, -109}, {-64, -109}, {-64, -103}})); connect(CV.h2, Vol_T.h1) annotation( Line(points = {{-14, -58}, {-22, -58}})); connect(Vol_T.h3, DirValve.hT) annotation( Line(points = {{-32, -48}, {-32, -44}, {-46, -44}, {-46, -38}})); connect(Motor.h1, Vol_m1.h2) annotation( Line(points = {{-23, 77}, {-53, 77}, {-53, 55}})); connect(Motor.h2, Vol_m2.h2) annotation( Line(points = {{7, 77}, {55, 77}, {55, 55}})); connect(Vol_cv.h2, CV.h1) annotation( Line(points = {{16, -58}, {10, -58}})); connect(Pump2.h2, Vol_cv.h1) annotation( Line(points = {{26, -104}, {26, -68}})); connect(Vol_P.h2, Pump1.h2) annotation( Line(points = {{-64, -68}, {-64, -73}})); connect(Motor.h3, tank2.h1) annotation( Line(points = {{7, 65}, {17, 65}, {17, 63}}, pattern = LinePattern.Dash)); connect(RV2.h1, Vol_m1.h1) annotation( Line(points = {{-8, 45}, {-42, 45}})); connect(RV2.h2, Vol_m2.h1) annotation( Line(points = {{16, 45}, {46, 45}})); connect(n2.h3, RV1.h1) annotation( Line(points = {{50, 11}, {16, 11}})); connect(RV1.h2, n1.h3) annotation( Line(points = {{-8, 11}, {-46, 11}})); connect(zero_t.r1, Inertia.r1) annotation( Line(points = {{-8, 129}, {-8, 122}})); connect(Inertia.r2, Motor.r1) annotation( Line(points = {{-8, 102}, {-8, 95}})); connect(n2.h2, DirValve.hB) annotation( Line(points = {{56, 5}, {56, -7}, {-46, -7}, {-46, -14}})); connect(n1.h2, DirValve.hA) annotation( Line(points = {{-52, 5}, {-52, -14}})); connect(Pump1.r1, Motor_elec.r1) annotation( Line(points = {{-82, -88}, {-86, -88}})); connect(Pump2.r1, Motor_elec.r1) annotation( Line(points = {{8, -119}, {-84, -119}, {-84, -88}, {-86, -88}})); connect(RV_pump.h2, tank1.h1) annotation( Line(points = {{89, -109}, {89, -138}})); connect(Vol_cv.h3, RV_pump.h1) annotation( Line(points = {{36, -58}, {89, -58}, {89, -85}})); annotation( Diagram(coordinateSystem(initialScale = 10, extent = {{-150, -160}, {110, 160}})), experiment(StartTime = 0, StopTime = 10, Tolerance = 1e-10, Interval = 0.002), Icon(coordinateSystem(extent = {{-150, -160}, {110, 160}}, initialScale = 10), graphics = {Ellipse(origin = {-38, 41}, fillColor = {255, 255, 255}, fillPattern = FillPattern.Sphere, extent = {{-42, 39}, {118, -121}}), Polygon(origin = {-6.87, 34.87}, fillPattern = FillPattern.Solid, points = {{-13.1288, -18.872}, {6.87119, 13.128}, {26.8712, -18.872}, {-13.1288, -18.872}}), Polygon(origin = {7.13, 58.87}, rotation = 180, fillPattern = FillPattern.Solid, points = {{-13.1288, -18.872}, {6.87119, 13.128}, {26.8712, -18.872}, {-13.1288, -18.872}})})); end PumpMotor;