Test pump model with different values for pressure to validate parameterization #3362
-
Dear All, I am a novice in the field of modeling physical systems and I am currently trying to model a rather basic fluid system composed of two water tanks, two valves, and a centrifugal pump. Since I am still a beginner, I have tried to compartmentalize the model, ensuring that I can test each component in isolation. Context: My main issue is modeling the centrifugal pump and, in particular, validating that the parameterization is correct. The pump has a maximum differential pressure of 0.7 bar and a maximum free flow of 8 L/min. Furthermore, the maximum RPM for this particular pump is 10,000. Note that I have plotted red points on the line to better illustrate which performance data points I have used to parameterize the flow characteristics. Based on this, I have created the following pump data: record M510S_Data
"Pump data for a TCS micropumps M510 pump"
extends Buildings.Fluid.Movers.Data.Generic(
speed_rpm_nominal=10000,
use_powerCharacteristic=false,
pressure(V_flow=({0.0, 1.0, 2.0, 3.0, 4.0, 5.0, 6.0, 7.0, 8.0}/60)*0.001, dp={-8/(-(8/0.7)), -7/(-(8/0.7)), -6/(-(8/0.7)), -5/(-(8/0.7)), -4/(-(8/0.7)), -3/(-(8/0.7)), -2/(-(8/0.7)), -1/(-(8/0.7)), 0/(-(8/0.7))}*100000),
motorCooledByFluid=true);
annotation (
defaultComponentPrefixes="parameter",
defaultComponentName="per",
Documentation(info=""));
end M510S_Data; The pump data is used in the following model: model M510S_19_MBL
package Medium = Buildings.Media.Water;
Buildings.Fluid.Movers.SpeedControlled_Nrpm pump1(redeclare package Medium = Medium, redeclare replaceable
M510S_Data per,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
y_start=1) annotation(
Placement(visible = true, transformation(origin = {0, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant rpm1(k= 10000) "Pump speed control signal"
annotation (Placement(visible = true, transformation(extent = {{-32, 72}, {-20, 84}}, rotation = 0)));
Buildings.Fluid.Sources.Boundary_pT source(redeclare package Medium = Medium, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {-60, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Buildings.Fluid.MixingVolumes.MixingVolume tank1(redeclare package Medium = Medium, V = 1, m_flow_nominal = 1, nPorts = 2) annotation(
Placement(visible = true, transformation(origin = {56, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Buildings.Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {60, -8}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(source.ports[1], pump1.port_a) annotation(
Line(points = {{-50, 40}, {-10, 40}}, color = {0, 127, 255}));
connect(rpm1.y, pump1.Nrpm) annotation(
Line(points = {{-20, 78}, {0, 78}, {0, 52}}, color = {0, 0, 127}));
connect(pump1.port_b, tank1.ports[1]) annotation(
Line(points = {{10, 40}, {56, 40}}, color = {0, 127, 255}));
connect(tank1.ports[2], bou.ports[1]) annotation(
Line(points = {{56, 40}, {56, 19}, {70, 19}, {70, -8}}, color = {0, 127, 255}));
annotation(
uses(Buildings(version = "9.1.0"), Modelica(version = "4.0.0")));
end M510S_19_MBL; The model diagram looks like this: I have added the When I run the simulation for 60 seconds, I expect that the fluid level in the tank is 8 liters. In fact, the simulation results seem to be in line with my expectation: Problem: Now, I want to test if I have modeled the pump correctly by setting a different value for the pressure. My understanding is that if I set a fixed value for the pressure in the In the following model, I have set 0.4 bar as a fixed pressure in the model M510S_19_MBL
package Medium = Buildings.Media.Water;
Buildings.Fluid.Movers.SpeedControlled_Nrpm pump1(redeclare package Medium = Medium, redeclare replaceable
M510S_Data per,
energyDynamics=Modelica.Fluid.Types.Dynamics.SteadyState,
y_start=1) annotation(
Placement(visible = true, transformation(origin = {0, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Modelica.Blocks.Sources.Constant rpm1(k= 10000) "Pump speed control signal"
annotation (Placement(visible = true, transformation(extent = {{-32, 72}, {-20, 84}}, rotation = 0)));
Buildings.Fluid.Sources.Boundary_pT source(redeclare package Medium = Medium, nPorts = 1, p = 40000) annotation(
Placement(visible = true, transformation(origin = {-60, 40}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Buildings.Fluid.MixingVolumes.MixingVolume tank1(redeclare package Medium = Medium, V = 1, m_flow_nominal = 1, nPorts = 2) annotation(
Placement(visible = true, transformation(origin = {56, 50}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
Buildings.Fluid.Sources.Boundary_pT bou(redeclare package Medium = Medium, nPorts = 1) annotation(
Placement(visible = true, transformation(origin = {60, -8}, extent = {{-10, -10}, {10, 10}}, rotation = 0)));
equation
connect(source.ports[1], pump1.port_a) annotation(
Line(points = {{-50, 40}, {-10, 40}}, color = {0, 127, 255}));
connect(rpm1.y, pump1.Nrpm) annotation(
Line(points = {{-20, 78}, {0, 78}, {0, 52}}, color = {0, 0, 127}));
connect(pump1.port_b, tank1.ports[1]) annotation(
Line(points = {{10, 40}, {56, 40}}, color = {0, 127, 255}));
connect(tank1.ports[2], bou.ports[1]) annotation(
Line(points = {{56, 40}, {56, 19}, {70, 19}, {70, -8}}, color = {0, 127, 255}));
annotation(
uses(Buildings(version = "9.1.0"), Modelica(version = "4.0.0")));
end M510S_19_MBL; After running the simulation for 60 seconds, Question: It seems that either my approach to validate the parameters is wrong (e.g., misunderstanding the p-Q diagram) or I am setting the fixed value for pressure in the wrong component. What would be the correct approach for checking the simulated pump behavior under different pressure conditions? |
Beta Was this translation helpful? Give feedback.
Replies: 1 comment 4 replies
-
Greetings! Your use of the pressure curve looks correct.
|
Beta Was this translation helpful? Give feedback.
Greetings!
If I understand correctly, you want to see a validation of pressure curve.
Directly serving this purpose, there is a low level validation model
Buildings.Fluid.Movers.BaseClasses.Validation.FlowMachineInterface
. This one does not directly test the mover but the underlying class that handles the pressure curve.Once the whole mover model is put in a hydraulic system it becomes more difficult to directly see the pressure-flow curve because of other components playing a role on the pressure.
Your use of the pressure curve looks correct.
A few other comments on your model: