modelDpControlled_dp
Extends from AixLib.Fluid.Interfaces.LumpedVolumeDeclarations (Declarations for lumped volumes), AixLib.Fluid.Interfaces.PartialTwoPortInterface (Partial model with two ports and declaration of quantities that are used by many models).
Information
This model represents a pump or fan which includes already a controller. Be aware that this model does not only represent the physical behavior of an HVAC component but also controls this HVAC component.
In addition to the standard characteristic curve (should equal per.pressure), the controller is able to store two further characteristic/control curves. This enables the user to quickly select between the two common control modes constant pressure (dpConst) and variable pressure (dpVar). The common control modes of pumps are concisely explained in the referenced white paper [1].
Often, the AixLib.Fluid.Movers.FlowControlled_dp. This means no speed control is possible. Please use AixLib.Fluid.Movers.SpeedControlled_y for this application.
The model has a standard parametrization for the three curves basing on the parameter m_flow_nominal and dp_nominal. See the figure and table below.
|
m_flow |
dp_total |
dp_constCtrl |
dp_varCtrl |
|
0 |
1.3 |
1 |
0.5 |
|
1 |
1 |
1 |
1 |
|
1.5 |
0.75 |
0.75 |
0.75 |
|
2 |
0 |
0 |
0 |
References
[1] Robinson, Reece. 2019. Pumping Control Methods and Their Impact on System Effciency. Link to PDF.
Parameters
| Type | Name | Default | Description |
|---|---|---|---|
| Boolean | addPowerToMedium | true | Set to false to avoid any power (=heat and flow work) being added to medium (may give simpler equations) |
| Boolean | nominalValuesDefineDefaultPressureCurve | false | Set to true to avoid warning if m_flow_nominal and dp_nominal are used to construct the default pressure curve |
| Dynamics › Conservation equations | |||
| Modelica.Fluid.Types.Dynamics | energyDynamics (from LumpedVolumeDeclarations) | Modelica.Fluid.Types.Dynamics.DynamicFreeInitial | Type of energy balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | substanceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of independent mass fraction balance: dynamic (3 initialization options) or steady state |
| Modelica.Fluid.Types.Dynamics | traceDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of trace substance balance: dynamic (3 initialization options) or steady state |
| Advanced › Dynamics | |||
| Modelica.Fluid.Types.Dynamics | massDynamics (from LumpedVolumeDeclarations) | energyDynamics | Type of mass balance: dynamic (3 initialization options) or steady state, must be steady state if energyDynamics is steady state |
| Initialization | |||
| Medium.AbsolutePressure | p_start (from LumpedVolumeDeclarations) | Medium.p_default | Start value of pressure |
| Medium.Temperature | T_start (from LumpedVolumeDeclarations) | Medium.T_default | Start value of temperature |
| Medium.MassFraction[Medium.nX] | X_start (from LumpedVolumeDeclarations) | Medium.X_default | Start value of mass fractions m_i/m |
| Medium.ExtraProperty[Medium.nC] | C_start (from LumpedVolumeDeclarations) | fill(0, Medium.nC) | Start value of trace substances |
| Medium.ExtraProperty[Medium.nC] | C_nominal (from LumpedVolumeDeclarations) | fill(1E-2, Medium.nC) | Nominal value of trace substances. (Set to typical order of magnitude.) |
| Dynamics | |||
| Real | mSenFac (from LumpedVolumeDeclarations) | 1 | Factor for scaling the sensible thermal mass of the volume |
| Assumptions | |||
| Boolean | allowFlowReversal (from PartialTwoPort) | true | = false to simplify equations, assuming, but not enforcing, no flow reversal |
| Nominal condition | |||
| Modelica.Units.SI.MassFlowRate | m_flow_nominal (from PartialTwoPortInterface) | Nominal mass flow rate | |
| Modelica.Units.SI.PressureDifference | dp_nominal | if rho_default < 500 then 500 else 10000 | Nominal pressure raise, used to normalized the filter if use_riseTime=true, to set default values of constantHead and heads, and and for default pressure curve if not specified in record per |
| Advanced | |||
| Modelica.Units.SI.MassFlowRate | m_flow_small (from PartialTwoPortInterface) | 1E-4*abs(m_flow_nominal) | Small mass flow rate for regularization of zero flow |
| Boolean | prescribeSystemPressure | false | =true, to control mover such that pressure difference is obtained across two remote points in system |
| Advanced › Diagnostics | |||
| Boolean | show_T (from PartialTwoPortInterface) | false | = true, if actual temperature at port is computed |
| Machine characteristics | |||
| AixLib.Fluid.Movers.Data.Generic | per | Record with performance data | |
| AixLib.Fluid.Movers.BaseClasses.Characteristics.flowParameters | pressureCurve_default | General mover curve: volume flow rate vs. total pressure head | |
| Control characteristics | |||
| AixLib.Fluid.Movers.DpControlledMovers.Types.CtrlType | ctrlType | AixLib.Fluid.Movers.DpControlledMovers.Types.CtrlType.dpTotal | Type of mover control |
| AixLib.Fluid.Movers.BaseClasses.Characteristics.flowParameters | pressureCurve_dpConst | dpConst control: volume flow rate vs. total pressure head | |
| AixLib.Fluid.Movers.BaseClasses.Characteristics.flowParameters | pressureCurve_dpVar | dpVar control: volume flow rate vs. total pressure head | |
| Dynamics › Nominal condition | |||
| Modelica.Units.SI.Time | tauMov | 1 | Time constant in mover (pump or fan) of fluid volume for nominal flow, used if energy or mass balance is dynamic |
| Dynamics › Filtered speed | |||
| Boolean | use_riseTime | true | = true, if speed is filtered with a 2nd order CriticalDamping filter |
| Modelica.Units.SI.Time | riseTime | 30 | Rise time of the filter (time to reach 99.6 % of the speed) |
| Modelica.Blocks.Types.Init | init | Modelica.Blocks.Types.Init.InitialOutput | Type of initialization (no init/steady state/initial state/initial output) |
| Real | y_start | 0 | Initial value of speed |
| Modelica.Units.SI.PressureDifference | dp_start | 0 | Initial value of pressure raise |
| Sensor | |||
| Modelica.Units.SI.Time | tauSen | 0 | Time constant at nominal flow rate (use tau=0 for steady-state sensor, but see user guide for potential problems) |
| Sensor › Initialization | |||
| Modelica.Blocks.Types.Init | initType | Modelica.Blocks.Types.Init.InitialState | Type of initialization (InitialState and InitialOutput are identical) |
| Modelica.Media.Interfaces.Types.Density | d_start | Medium.density(Medium.setState_pTX(senVolFlo.p_start, senVolFlo.T_start, senVolFlo.X_start)) | Initial or guess value of density |
| Curve / Table › Table data interpretation | |||
| Modelica.Blocks.Types.Smoothness | smoothness | Modelica.Blocks.Types.Smoothness.LinearSegments | Smoothness of table interpolation |
| Boolean | verboseExtrapolation | false | = true, if warning messages are to be printed if table input is outside the definition range |
Connectors
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Fluid.Interfaces.FluidPort_a | port_a (from PartialTwoPort) | Fluid connector a (positive design flow direction is from port_a to port_b) | |
| Modelica.Fluid.Interfaces.FluidPort_b | port_b (from PartialTwoPort) | Fluid connector b (positive design flow direction is from port_a to port_b) | |
| Modelica.Blocks.Interfaces.RealInput | dpMea | Measurement of pressure difference between two points where the set point should be obtained | |
| Modelica.Thermal.HeatTransfer.Interfaces.HeatPort_a | heatPort | Heat dissipation to environment | |
| Modelica.Blocks.Interfaces.RealOutput | P | Electrical power consumed | |
| Modelica.Blocks.Interfaces.RealOutput | y_actual | Actual normalised pump speed that is used for computations | |
| Modelica.Blocks.Interfaces.RealOutput | dp_actual | Pressure difference between the mover inlet and outlet |
Components
| Type | Name | Default | Description |
|---|---|---|---|
| Modelica.Units.SI.MassFlowRate | m_flow (from PartialTwoPortInterface) | port_a.m_flow | Mass flow rate from port_a to port_b (m_flow > 0 is design flow direction) |
| Modelica.Units.SI.PressureDifference | dp (from PartialTwoPortInterface) | port_a.p - port_b.p | Pressure difference between port_a and port_b |
| Medium.ThermodynamicState | sta_a (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_a.p, noEvent(actualStream(port_a.h_outflow)), noEvent(actualStream(port_a.Xi_outflow))) else Medium.setState_phX(port_a.p, noEvent(inStream(port_a.h_outflow)), noEvent(inStream(port_a.Xi_outflow))) | Medium properties in port_a |
| Medium.ThermodynamicState | sta_b (from PartialTwoPortInterface) | if allowFlowReversal then Medium.setState_phX(port_b.p, noEvent(actualStream(port_b.h_outflow)), noEvent(actualStream(port_b.Xi_outflow))) else Medium.setState_phX(port_b.p, noEvent(port_b.h_outflow), noEvent(port_b.Xi_outflow)) | Medium properties in port_b |
| AixLib.Fluid.Sensors.VolumeFlowRate | senVolFlo | Sensor to measure volume flow rate | |
| Modelica.Blocks.Tables.CombiTable1Dv | pressureCurveSelected | Table with points of selected curve to calculate dp from V_flow | |
| AixLib.Fluid.Movers.FlowControlled_dp | mov | Mover: pump or fan |
Contents
| Name | Description |
|---|---|
| checkDpCurvesprotected |
Revisions
- October 28, 2021, by Philipp Mehrfeld:
#1151 Added model to library.