Collection of validation models
Information
This package contains validation models for the classes in
Buildings.Fluid.DXSystems.Cooling.AirSource.
Note that most validation models contain simple input data
which may not be realistic, but for which the correct
output can be obtained through an analytic solution.
The examples plot various outputs, which have been verified against these
solutions. These model outputs are stored as reference data and
used for continuous validation whenever models in the library change.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
Name |
Description |
SingleSpeed
|
Validation model for single speed DX coil with PLR=1 |
SingleSpeedPLR
|
Validation model for single speed DX coil with PLR=1 |
Validation model for single speed DX coil with PLR=1
Information
This model validates the model
Buildings.Fluid.DXSystems.Cooling.AirSource.SingleSpeed.
The difference in results of
TOut and
XOut
at the beginning and end of the simulation is because the mass flow rate is zero.
For zero mass flow rate, EnergyPlus assumes steady state condition,
whereas the Modelica model is a dynamic model and hence the properties at the outlet
are equal to the state variables of the model.
The EnergyPlus results were generated using the example file DXCoilSystemAuto.idf
from EnergyPlus 7.1,
with a nominal cooling capacity of 10500 Watts instead of using
autosizing. This allowed to have a part load ratio of one.
Note that EnergyPlus mass fractions (X
) are in mass of water vapor per mass of dry air,
whereas Modelica uses the total mass as a reference. Hence, the EnergyPlus values
are corrected by dividing them by
1+X
.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Power | Q_flow_nominal | datCoi.sta[1].nomVal.Q_flow_... | Nominal power [W] |
MassFlowRate | m_flow_nominal | datCoi.sta[1].nomVal.m_flow_... | Nominal mass flow rate [kg/s] |
PressureDifference | dp_nominal | 1141 | Pressure drop at m_flow_nominal [Pa] |
DXCoil | datCoi | datCoi(nSta=1, sta={Building... | Coil data |
Modelica definition
model SingleSpeed
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air
;
parameter Modelica.Units.SI.Power Q_flow_nominal=datCoi.sta[1].nomVal.Q_flow_nominal
;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=datCoi.sta[1].nomVal.m_flow_nominal
;
parameter Modelica.Units.SI.PressureDifference dp_nominal=1141
;
parameter Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.DXCoil
datCoi(nSta=1, sta={
Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.BaseClasses.Stage(
spe=1800/60,
nomVal=
Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.BaseClasses.NominalValues(
Q_flow_nominal=-10500,
COP_nominal=3,
SHR_nominal=0.798655,
m_flow_nominal=1.72),
perCur=
Buildings.Fluid.DXSystems.Cooling.AirSource.Examples.PerformanceCurves.Curve_II())})
;
Buildings.Fluid.Sources.Boundary_pT sin(
redeclare package Medium = Medium,
final p(displayUnit="Pa") = 101325,
final nPorts=1,
final T=303.15)
;
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare package Medium = Medium,
final p(displayUnit="Pa") = 101325 + dp_nominal,
final use_T_in=true,
final nPorts=1,
final use_p_in=true,
final use_X_in=true,
final T=299.85)
;
Buildings.Fluid.DXSystems.Cooling.AirSource.SingleSpeed
sinSpeDX(
redeclare package Medium = Medium,
final dp_nominal=dp_nominal,
final datCoi=datCoi,
final T_start=datCoi.sta[1].nomVal.TEvaIn_nominal,
final from_dp=true,
final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Modelica.Blocks.Sources.TimeTable plr_onOff(
final table=[0,0; 3600,0; 3600,0; 7200,0;
7200,0; 10800,0; 10800,0; 14400,0; 14400,0; 18000,0; 18000,0; 21600,0; 21600,
0; 25200,0; 25200,1; 28800,1; 28800,1; 32400,1; 32400,1; 36000,1; 36000,
1; 39600,1; 39600,1; 43200,1; 43200,1; 46800,1; 46800,1; 50400,1; 50400,
1; 54000,1; 54000,1; 57600,1; 57600,1; 61200,1; 61200,0; 64800,0; 64800,
0; 68400,0; 68400,0; 72000,0; 72000,0; 75600,0; 75600,0; 79200,0; 79200,
0; 82800,0; 82800,0; 86400,0])
;
Modelica.Blocks.Sources.TimeTable TCIn(
final table=[0,21.1; 3600,21.1; 3600,
20.80833333; 7200,20.80833333; 7200,20.89166667; 10800,20.89166667;
10800,21.1; 14400,21.1; 14400,20.80833333; 18000,20.80833333; 18000,
20.6; 21600,20.6; 21600,20.89166667; 25200,20.89166667; 25200,21.45;
28800,21.45; 28800,22.63333333; 32400,22.63333333; 32400,23.3; 36000,
23.3; 36000,25.575; 39600,25.575; 39600,28.19166667; 43200,28.19166667;
43200,27.90833333; 46800,27.90833333; 46800,26.90833333; 50400,
26.90833333; 50400,26.7; 54000,26.7; 54000,26.05833333; 57600,
26.05833333; 57600,24.60833333; 61200,24.60833333; 61200,23.55; 64800,
23.55; 64800,23.3; 68400,23.3; 68400,23.00833333; 72000,23.00833333;
72000,22.8; 75600,22.8; 75600,22.15833333; 79200,22.15833333; 79200,
21.35; 82800,21.35; 82800,21.1; 86400,21.1])
;
Modelica.Blocks.Sources.TimeTable TEvaIn(
final table=[0,31.29534707; 3600,31.29534707;
3600,30.89999423; 7200,30.89999423; 7200,30.58355581; 10800,30.58355581;
10800,30.30108174; 14400,30.30108174; 14400,30.01393253; 18000,30.01393253;
18000,29.75672215; 21600,29.75672215; 21600,29.66076742; 25200,29.66076742;
25200,25.29138892; 28800,25.29138892; 28800,25.91180176; 32400,25.91180176;
32400,26.79831523; 36000,26.79831523; 36000,27.40611604; 39600,27.40611604;
39600,28.22402981; 43200,28.22402981; 43200,28.69183674; 46800,28.69183674;
46800,29.0211012; 50400,29.0211012; 50400,29.3698004; 54000,29.3698004;
54000,29.52289127; 57600,29.52289127; 57600,29.41955159; 61200,29.41955159;
61200,38.68278429; 64800,38.68278429; 64800,35.75595795; 68400,35.75595795;
68400,33.29770237; 72000,33.29770237; 72000,32.78839302; 75600,32.78839302;
75600,32.3989099; 79200,32.3989099; 79200,32.00270417; 82800,32.00270417;
82800,31.66453096; 86400,31.66453096])
;
Modelica.Blocks.Sources.TimeTable XEvaIn(
final table=[0,0.010526598; 3600,0.010526598;
3600,0.010526598; 7200,0.010526598; 7200,0.010526598; 10800,0.010526598;
10800,0.010526598; 14400,0.010526598; 14400,0.010526598; 18000,
0.010526598; 18000,0.010526598; 21600,0.010526598; 21600,0.010631087;
25200,0.010631087; 25200,0.010396485; 28800,0.010396485; 28800,
0.009496633; 32400,0.009496633; 32400,0.009521406; 36000,0.009521406;
36000,0.009576525; 39600,0.009576525; 39600,0.009574467; 43200,
0.009574467; 43200,0.009610872; 46800,0.009610872; 46800,0.009792709;
50400,0.009792709; 50400,0.010022684; 54000,0.010022684; 54000,
0.010213791; 57600,0.010213791; 57600,0.010384401; 61200,0.010384401;
61200,0.010396282; 64800,0.010396282; 64800,0.010537993; 68400,
0.010537993; 68400,0.010537961; 72000,0.010537961; 72000,0.010537961;
75600,0.010537961; 75600,0.010537961; 79200,0.010537961; 79200,
0.010537961; 82800,0.010537961; 82800,0.010537961; 86400,0.010537961])
;
Modelica.Blocks.Math.RealToBoolean onOff
;
Modelica.Blocks.Routing.Multiplex2 mux
;
Buildings.Utilities.IO.BCVTB.From_degC TCIn_K
;
Buildings.Utilities.IO.BCVTB.From_degC TEvaIn_K
;
Modelica.Blocks.Math.Mean TOutMea(
final f=1/3600)
;
Buildings.Utilities.IO.BCVTB.To_degC TOutDegC
;
Modelica.Blocks.Sources.RealExpression TOut(
final y=sinSpeDX.vol.T)
;
Modelica.Blocks.Math.Mean XEvaOutMea(
final f=1/3600)
;
Modelica.Blocks.Sources.RealExpression XEvaOut(
final y=
sum(sinSpeDX.vol.Xi))
;
Modelica.Blocks.Math.Mean Q_flowMea(
final f=1/3600)
;
Modelica.Blocks.Math.Mean Q_flowSenMea(
final f=1/3600)
;
Modelica.Blocks.Math.Mean PMea(
final f=1/3600)
;
Modelica.Blocks.Math.Add add(
final k1=-1)
;
Modelica.Blocks.Sources.Constant XEvaInMoiAir(
final k=1.0)
;
Modelica.Blocks.Sources.TimeTable TOutEPlu(
final table=[0,31.29534707; 3600,31.29534707;
3600,30.89999423; 7200,30.89999423; 7200,30.58355581; 10800,30.58355581;
10800,30.30108174; 14400,30.30108174; 14400,30.01393253; 18000,30.01393253;
18000,29.75672215; 21600,29.75672215; 21600,29.66076742; 25200,29.66076742;
25200,20.31734137; 28800,20.31734137; 28800,20.48740189; 32400,20.48740189;
32400,21.17362815; 36000,21.17362815; 36000,21.67091874; 39600,21.67091874;
39600,22.31588652; 43200,22.31588652; 43200,22.67802681; 46800,22.67802681;
46800,22.97615397; 50400,22.97615397; 50400,23.31283949; 54000,23.31283949;
54000,23.48357346; 57600,23.48357346; 57600,23.44857837; 61200,23.44857837;
61200,38.68278429; 64800,38.68278429; 64800,35.75595795; 68400,35.75595795;
68400,33.29770237; 72000,33.29770237; 72000,32.78839302; 75600,32.78839302;
75600,32.3989099; 79200,32.3989099; 79200,32.00270417; 82800,32.00270417;
82800,31.66453096; 86400,31.66453096])
;
Modelica.Blocks.Sources.TimeTable Q_flowEPlu(
final table=[0,-1e-07; 3600,-1e-07; 3600,
-1e-07; 7200,-1e-07; 7200,-1e-07; 10800,-1e-07; 10800,-1e-07; 14400,-1e-07;
14400,-1e-07; 18000,-1e-07; 18000,-1e-07; 21600,-1e-07; 21600,-1e-07; 25200,
-1e-07; 25200,-10983.1144101; 28800,-10983.1144101; 28800,-10855.9768001;
32400,-10855.9768001; 32400,-10903.5304201; 36000,-10903.5304201; 36000,
-10877.5678501; 39600,-10877.5678501; 39600,-10822.2172001; 43200,-10822.2172001;
43200,-10878.2459001; 46800,-10878.2459001; 46800,-10981.5365901; 50400,
-10981.5365901; 50400,-11055.6112701; 54000,-11055.6112701; 54000,-11121.6278701;
57600,-11121.6278701; 57600,-11185.7466001; 61200,-11185.7466001; 61200,
-1e-07; 64800,-1e-07; 64800,-1e-07; 68400,-1e-07; 68400,-1e-07; 72000,-1e-07;
72000,-1e-07; 75600,-1e-07; 75600,-1e-07; 79200,-1e-07; 79200,-1e-07; 82800,
-1e-07; 82800,-1e-07; 86400,-1e-07])
;
Modelica.Blocks.Sources.TimeTable Q_flowSenEPlu(
final table=[0,0; 3600,0; 3600,0; 7200,
0; 7200,0; 10800,0; 10800,0; 14400,0; 14400,0; 18000,0; 18000,0; 21600,0;
21600,0; 25200,0; 25200,-8537.795206; 28800,-8537.795206; 28800,-9298.755552;
32400,-9298.755552; 32400,-9643.742602; 36000,-9643.742602; 36000,-9835.115234;
39600,-9835.115234; 39600,-10133.17939; 43200,-10133.17939; 43200,-10315.64445;
46800,-10315.64445; 46800,-10372.27848; 50400,-10372.27848; 50400,-10397.02013;
54000,-10397.02013; 54000,-10369.92204; 57600,-10369.92204; 57600,-10254.97156;
61200,-10254.97156; 61200,0; 64800,0; 64800,0; 68400,0; 68400,0; 72000,0;
72000,0; 75600,0; 75600,0; 79200,0; 79200,0; 82800,0; 82800,0; 86400,0])
;
Modelica.Blocks.Math.Division shrEPlu
;
Modelica.Blocks.Sources.TimeTable XEvaOutEPlu(
final table=[0,0.010526598; 3600,0.010526598;
3600,0.010526598; 7200,0.010526598; 7200,0.010526598; 10800,0.010526598;
10800,0.010526598; 14400,0.010526598; 14400,0.010526598; 18000,0.010526598;
18000,0.010526598; 21600,0.010526598; 21600,0.010631087; 25200,0.010631087;
25200,0.009824324; 28800,0.009824324; 28800,0.009132468; 32400,0.009132468;
32400,0.009227012; 36000,0.009227012; 36000,0.009333022; 39600,0.009333022;
39600,0.009413613; 43200,0.009413613; 43200,0.009479582; 46800,0.009479582;
46800,0.009650565; 50400,0.009650565; 50400,0.009869069; 54000,0.009869069;
54000,0.010038477; 57600,0.010038477; 57600,0.010167307; 61200,0.010167307;
61200,0.010396282; 64800,0.010396282; 64800,0.010537993; 68400,0.010537993;
68400,0.010537961; 72000,0.010537961; 72000,0.010537961; 75600,0.010537961;
75600,0.010537961; 79200,0.010537961; 79200,0.010537961; 82800,0.010537961;
82800,0.010537961; 86400,0.010537961])
;
Modelica.Blocks.Sources.TimeTable PEPlu(
final table=[0,0; 3600,0; 3600,0; 7200,0; 7200,
0; 10800,0; 10800,0; 14400,0; 14400,0; 18000,0; 18000,0; 21600,0; 21600,
0; 25200,0; 25200,2947.546668; 28800,2947.546668; 28800,2966.686535; 32400,
2966.686535; 32400,2999.864072; 36000,2999.864072; 36000,3087.801241; 39600,
3087.801241; 39600,3195.082124; 43200,3195.082124; 43200,3188.668029; 46800,
3188.668029; 46800,3156.065892; 50400,3156.065892; 50400,3155.199826; 54000,
3155.199826; 54000,3136.04256; 57600,3136.04256; 57600,3087.770321; 61200,
3087.770321; 61200,0; 64800,0; 64800,0; 68400,0; 68400,0; 72000,0; 72000,
0; 75600,0; 75600,0; 79200,0; 79200,0; 82800,0; 82800,0; 86400,0])
;
Modelica.Blocks.Sources.Pulse p(
final nperiod=1,
final offset=101325,
final amplitude=1141,
final width=100,
final period=36000,
final startTime=25200)
;
Modelica.Blocks.Sources.RealExpression XEvaInMod(
final y=XEvaIn.y/(1 + XEvaIn.y))
;
Modelica.Blocks.Sources.RealExpression XEvaOutEPluMod(
final y=XEvaOutEPlu.y/(1 + XEvaOutEPlu.y))
;
Modelica.Blocks.Math.Add QCoo_flow
;
equation
connect(sou.ports[1], sinSpeDX.port_a);
connect(sinSpeDX.port_b, sin.ports[1]);
connect(plr_onOff.y, onOff.u);
connect(onOff.y, sinSpeDX.on);
connect(mux.y, sou.X_in);
connect(TCIn.y, TCIn_K.Celsius);
connect(TCIn_K.Kelvin, sinSpeDX.TOut);
connect(TEvaIn.y, TEvaIn_K.Celsius);
connect(TEvaIn_K.Kelvin, sou.T_in);
connect(TOut.y, TOutMea.u);
connect(TOutMea.y, TOutDegC.Kelvin);
connect(XEvaOut.y, XEvaOutMea.u);
connect(XEvaInMoiAir.y, add.u2);
connect(add.y, mux.u2[1]);
connect(Q_flowSenEPlu.y, shrEPlu.u1);
connect(Q_flowEPlu.y, shrEPlu.u2);
connect(sinSpeDX.P, PMea.u);
connect(p.y, sou.p_in);
connect(XEvaInMod.y, mux.u1[1]);
connect(XEvaInMod.y, add.u1);
connect(sinSpeDX.QSen_flow, Q_flowSenMea.u);
connect(QCoo_flow.y, Q_flowMea.u);
connect(QCoo_flow.u1, sinSpeDX.QSen_flow);
connect(sinSpeDX.QLat_flow, QCoo_flow.u2);
end SingleSpeed;
Validation model for single speed DX coil with PLR=1
Information
This model validates the model
Buildings.Fluid.DXSystems.Cooling.AirSource.SingleSpeed.
The difference in results of
TOut and
XOut
at the beginning and end of the simulation is because the mass flow rate is zero.
For zero mass flow rate, EnergyPlus assumes steady state condition,
whereas the Modelica model is a dynamic model and hence the properties at the outlet
are equal to the state variables of the model.
The EnergyPlus results were generated using the example file DXCoilSystemAuto.idf
from EnergyPlus 7.1.
The EnergyPlus results were generated using the example file
DXCoilSystemAuto.idf
from EnergyPlus 7.1.
On the summer design day, the PLR is below 1.
A similar effect has been achieved in this example by turning on the coil only for the period
during which it run in EnergyPlus.
This results in on-off cycle and fluctuating results.
To compare the results, the Modelica outputs are averaged over 3600 seconds,
and the EnergyPlus outputs are used with a zero order delay to avoid the time shift in results.
Note that EnergyPlus mass fractions (X
) are in mass of water vapor per mass of dry air,
whereas Modelica uses the total mass as a reference. Hence, the EnergyPlus values
are corrected by dividing them by
1+X
.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Type | Name | Default | Description |
Power | Q_flow_nominal | datCoi.sta[1].nomVal.Q_flow_... | Nominal power [W] |
MassFlowRate | m_flow_nominal | datCoi.sta[1].nomVal.m_flow_... | Nominal mass flow rate [kg/s] |
PressureDifference | dp_nominal | 1141 | Pressure drop at m_flow_nominal [Pa] |
DXCoil | datCoi | datCoi(nSta=1, sta={Building... | Coil data |
Modelica definition
model SingleSpeedPLR
extends Modelica.Icons.Example;
package Medium =
Buildings.Media.Air ;
parameter Modelica.Units.SI.Power Q_flow_nominal=datCoi.sta[1].nomVal.Q_flow_nominal
;
parameter Modelica.Units.SI.MassFlowRate m_flow_nominal=datCoi.sta[1].nomVal.m_flow_nominal
;
parameter Modelica.Units.SI.PressureDifference dp_nominal=1141
;
parameter Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.DXCoil
datCoi(nSta=1,
sta={
Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.BaseClasses.Stage(
spe=1800/60,
nomVal=
Buildings.Fluid.DXSystems.Cooling.AirSource.Data.Generic.BaseClasses.NominalValues(
Q_flow_nominal=-25237.66,
COP_nominal=3,
SHR_nominal=0.775047,
m_flow_nominal=1.72,
tWet=1000,
gamma=1.5),
perCur=
Buildings.Fluid.DXSystems.Cooling.AirSource.Examples.PerformanceCurves.Curve_II())})
;
Buildings.Fluid.Sources.Boundary_pT sin(
redeclare package Medium = Medium,
final p(displayUnit="Pa") = 101325,
final nPorts=1,
final T=303.15)
;
Buildings.Fluid.Sources.Boundary_pT sou(
redeclare package Medium = Medium,
final p(displayUnit="Pa") = 101325 + dp_nominal,
final use_T_in=true,
final nPorts=1,
final use_p_in=true,
final use_X_in=true,
final T=299.85)
;
Buildings.Fluid.DXSystems.Cooling.AirSource.SingleSpeed
sinSpeDX(
redeclare package Medium = Medium,
final dp_nominal=dp_nominal,
final datCoi=datCoi,
final T_start=datCoi.sta[1].nomVal.TEvaIn_nominal,
final from_dp=true,
final computeReevaporation=true,
final energyDynamics=Modelica.Fluid.Types.Dynamics.FixedInitial)
;
Modelica.Blocks.Routing.Multiplex2 mux
;
Buildings.Utilities.IO.BCVTB.From_degC TCIn_K
;
Buildings.Utilities.IO.BCVTB.From_degC TEvaIn_K
;
Modelica.Blocks.Math.Mean TOutMea(
final f=1/3600)
;
Buildings.Utilities.IO.BCVTB.To_degC TOutDegC
;
Modelica.Blocks.Sources.RealExpression TOut(
final y=sinSpeDX.vol.T)
;
Modelica.Blocks.Math.Mean XEvaOutMea(
final f=1/3600)
;
Modelica.Blocks.Sources.RealExpression XEvaOut(
final y=
sum(sinSpeDX.vol.Xi))
;
Modelica.Blocks.Math.Mean Q_flowMea(
final f=1/3600)
;
Modelica.Blocks.Math.Mean Q_flowSenMea(
final f=1/3600)
;
Modelica.Blocks.Math.Mean PMea(
final f=1/3600)
;
Modelica.Blocks.Math.Add add(
final k1=-1)
;
Modelica.Blocks.Sources.Constant XEvaInMoiAir(
final k=1.0)
;
Modelica.Blocks.Math.Division shrEPlu
;
Modelica.Blocks.Sources.Pulse p(
final nperiod=1,
final offset=101325,
final width=100,
final period=36000,
final startTime=25200,
final amplitude=1086)
;
Modelica.Blocks.Sources.RealExpression XEvaInMod(
final y=XEvaIn.y/(1 + XEvaIn.y))
;
Modelica.Blocks.Sources.RealExpression XEvaOutEPluMod(
final y=XEvaOutEPlu.y/(1 + XEvaOutEPlu.y))
;
Modelica.Blocks.Sources.BooleanTable onOff(startValue=true,
table={
0,
25200,
26223.8694421458,
28800,
30457.5364262964,
32400,
34157.5093643325,
36000,
37915.2504828207,
39600,
41687.2390146012,
43200,
45363.3505825759,
46800,
49129.0477925565,
50400,
52764.5288886473,
54000,
56361.5689116996,
57600,
59868.3223307805})
;
Modelica.Blocks.Sources.TimeTable TCIn(
final table=[0,21.1; 3600,21.1; 3600,
20.80833333; 7200,20.80833333; 7200,20.89166667; 10800,20.89166667;
10800,21.1; 14400,21.1; 14400,20.80833333; 18000,20.80833333; 18000,
20.6; 21600,20.6; 21600,20.89166667; 25200,20.89166667; 25200,21.45;
28800,21.45; 28800,22.63333333; 32400,22.63333333; 32400,23.3; 36000,
23.3; 36000,25.575; 39600,25.575; 39600,28.19166667; 43200,28.19166667;
43200,27.90833333; 46800,27.90833333; 46800,26.90833333; 50400,
26.90833333; 50400,26.7; 54000,26.7; 54000,26.05833333; 57600,
26.05833333; 57600,24.60833333; 61200,24.60833333; 61200,23.55; 64800,
23.55; 64800,23.3; 68400,23.3; 68400,23.00833333; 72000,23.00833333;
72000,22.8; 75600,22.8; 75600,22.15833333; 79200,22.15833333; 79200,
21.35; 82800,21.35; 82800,21.1; 86400,21.1])
;
Modelica.Blocks.Sources.TimeTable TEvaIn(
final table=[
0,29.34948133;
3600,29.34948133;
3600,29.01814876;
7200,29.01814876;
7200,28.76345897;
10800,28.76345897;
10800,28.53396626;
14400,28.53396626;
14400,28.29506697;
18000,28.29506697;
18000,28.08827214;
21600,28.08827214;
21600,28.04639166;
25200,28.04639166;
25200,24.08651629;
28800,24.08651629;
28800,24.09243025;
32400,24.09243025;
32400,24.20516777;
36000,24.20516777;
36000,24.37566383;
39600,24.37566383;
39600,24.56160617;
43200,24.56160617;
43200,24.52393669;
46800,24.52393669;
46800,24.39077471;
50400,24.39077471;
50400,24.33155125;
54000,24.33155125;
54000,24.27362306;
57600,24.27362306;
57600,24.16566121;
61200,24.16566121;
61200,35.62393274;
64800,35.62393274;
64800,32.89683519;
68400,32.89683519;
68400,31.14979083;
72000,31.14979083;
72000,30.65928154;
75600,30.65928154;
75600,30.28912721;
79200,30.28912721;
79200,29.91867206;
82800,29.91867206;
82800,29.61490681;
86400,29.61490681])
;
Modelica.Blocks.Sources.TimeTable XEvaIn(
final table=[
0,0.00946;
3600,0.00946;
3600,0.00946;
7200,0.00946;
7200,0.00946;
10800,0.00946;
10800,0.00946;
14400,0.00946;
14400,0.00946;
18000,0.00946;
18000,0.00946;
21600,0.00946;
21600,0.00955;
25200,0.00955;
25200,0.0103;
28800,0.0103;
28800,0.0109;
32400,0.0109;
32400,0.0108;
36000,0.0108;
36000,0.0105;
39600,0.0105;
39600,0.01;
43200,0.01;
43200,0.00969;
46800,0.00969;
46800,0.00947;
50400,0.00947;
50400,0.00926;
54000,0.00926;
54000,0.00923;
57600,0.00923;
57600,0.00937;
61200,0.00937;
61200,0.00936;
64800,0.00936;
64800,0.00946;
68400,0.00946;
68400,0.00946;
72000,0.00946;
72000,0.00946;
75600,0.00946;
75600,0.00946;
79200,0.00946;
79200,0.00946;
82800,0.00946;
82800,0.00946;
86400,0.00946])
;
Modelica.Blocks.Sources.TimeTable TOutEPlu_ori(
final table=[0,29.34948133; 3600,29.34948133;
3600,29.01814876; 7200,29.01814876; 7200,28.76345897; 10800,28.76345897;
10800,28.53396626; 14400,28.53396626; 14400,28.29506697; 18000,28.29506697;
18000,28.08827214; 21600,28.08827214; 21600,28.04639166; 25200,28.04639166;
25200,19.79102221; 28800,19.79102221; 28800,17.58304653; 32400,17.58304653;
32400,17.35471965; 36000,17.35471965; 36000,16.95320861; 39600,16.95320861;
39600,16.4388043; 43200,16.4388043; 43200,16.03301122; 46800,16.03301122;
46800,15.41071946; 50400,15.41071946; 50400,15.15437515; 54000,15.15437515;
54000,15.09543443; 57600,15.09543443; 57600,15.3159498; 61200,15.3159498;
61200,35.62393274; 64800,35.62393274; 64800,32.89683519; 68400,32.89683519;
68400,31.14979083; 72000,31.14979083; 72000,30.65928154; 75600,30.65928154;
75600,30.28912721; 79200,30.28912721; 79200,29.91867206; 82800,29.91867206;
82800,29.61490681; 86400,29.61490681])
;
Modelica.Blocks.Sources.TimeTable PEPlu_ori(
final table=[0,0; 3600,0; 3600,0; 7200,
0; 7200,0; 10800,0; 10800,0; 14400,0; 14400,0; 18000,0; 18000,0; 21600,
0; 21600,0; 25200,0; 25200,2221.47212; 28800,2221.47212; 28800,
3595.947729; 32400,3595.947729; 32400,3819.11052; 36000,3819.11052;
36000,4235.566014; 39600,4235.566014; 39600,4714.070326; 43200,
4714.070326; 43200,4835.805362; 46800,4835.805362; 46800,5089.357992;
50400,5089.357992; 50400,5132.912713; 54000,5132.912713; 54000,
5082.720823; 57600,5082.720823; 57600,4820.015593; 61200,4820.015593;
61200,0; 64800,0; 64800,0; 68400,0; 68400,0; 72000,0; 72000,0; 75600,0;
75600,0; 79200,0; 79200,0; 82800,0; 82800,0; 86400,0])
;
Modelica.Blocks.Sources.TimeTable XEvaOutEPlu_ori(
final table=[0,0.009460927; 3600,0.009460927;
3600,0.009460927; 7200,0.009460927; 7200,0.009460927; 10800,0.009460927;
10800,0.009460927; 14400,0.009460927; 14400,0.009460927; 18000,0.009460927;
18000,0.009460927; 21600,0.009460927; 21600,0.009553929; 25200,0.009553929;
25200,0.010316263; 28800,0.010316263; 28800,0.010677981; 32400,0.010677981;
32400,0.010521771; 36000,0.010521771; 36000,0.010225222; 39600,0.010225222;
39600,0.009821415; 43200,0.009821415; 43200,0.009523837; 46800,0.009523837;
46800,0.009220467; 50400,0.009220467; 50400,0.009042737; 54000,0.009042737;
54000,0.009012184; 57600,0.009012184; 57600,0.009145645; 61200,0.009145645;
61200,0.009361285; 64800,0.009361285; 64800,0.009459829; 68400,0.009459829;
68400,0.009459801; 72000,0.009459801; 72000,0.009459801; 75600,0.009459801;
75600,0.009459801; 79200,0.009459801; 79200,0.009459801; 82800,0.009459801;
82800,0.009459801; 86400,0.009459801])
;
Modelica.Blocks.Sources.TimeTable Q_flowSenEPlu_ori(
final table=[0,0; 3600,0; 3600,0;
7200,0; 7200,0; 10800,0; 10800,0; 14400,0; 14400,0; 18000,0; 18000,0; 21600,
0; 21600,0; 25200,0; 25200,7378.442557; 28800,7378.442557; 28800,11190.03413;
32400,11190.03413; 32400,11772.99874; 36000,11772.99874; 36000,12749.11676;
39600,12749.11676; 39600,13941.844; 43200,13941.844; 43200,14565.84942;
46800,14565.84942; 46800,15396.44898; 50400,15396.44898; 50400,15729.34223;
54000,15729.34223; 54000,15730.20543; 57600,15730.20543; 57600,15170.91533;
61200,15170.91533; 61200,0; 64800,0; 64800,0; 68400,0; 68400,0; 72000,0;
72000,0; 75600,0; 75600,0; 79200,0; 79200,0; 82800,0; 82800,0; 86400,0])
;
Modelica.Blocks.Sources.TimeTable Q_flowEPlu_ori(
final table=[0,0; 3600,0; 3600,
0; 7200,0; 7200,0; 10800,0; 10800,0; 14400,0; 14400,
0; 18000,0; 18000,0; 21600,0; 21600,0; 25200,-1e-9;
25200,-7464.76568; 28800,-7464.76568; 28800,-12134.51902; 32400,-12134.51902;
32400,-12829.73888; 36000,-12829.73888; 36000,-13827.82263; 39600,-13827.82263;
39600,-14802.70071; 43200,-14802.70071; 43200,-15271.18519; 46800,-15271.18519;
46800,-16441.6341; 50400,-16441.6341; 50400,-16638.80981; 54000,-16638.80981;
54000,-16649.7802; 57600,-16649.7802; 57600,-16109.92984; 61200,-16109.92984;
61200,0; 64800,0; 64800,0; 68400,0; 68400,0; 72000,0;
72000,0; 75600,0; 75600,0; 79200,0; 79200,0; 82800,0;
82800,0; 86400,0])
;
Modelica.Blocks.Math.Add QCoo_flow
;
UnitDelay PEPlu(
final samplePeriod=3600)
;
UnitDelay Q_flowSenEPlu(
final samplePeriod=3600)
;
UnitDelay Q_flowEPlu(
final samplePeriod=3600)
;
UnitDelay TOutEPlu(
final samplePeriod=3600,
final y_start=29.34948133)
;
UnitDelay XEvaOutEPlu(
final samplePeriod=3600)
;
Modelica.Blocks.Math.MultiSum multiSum(
final nu=2)
;
Modelica.Blocks.Sources.Constant small(
final k=-1e-9)
;
protected
block UnitDelay
extends Modelica.Blocks.Discrete.UnitDelay(
firstTrigger(start=false, fixed=true));
end UnitDelay;
equation
connect(sou.ports[1], sinSpeDX.port_a);
connect(sinSpeDX.port_b, sin.ports[1]);
connect(mux.y, sou.X_in);
connect(TCIn_K.Kelvin, sinSpeDX.TOut);
connect(TEvaIn_K.Kelvin, sou.T_in);
connect(TOut.y, TOutMea.u);
connect(TOutMea.y, TOutDegC.Kelvin);
connect(XEvaOut.y, XEvaOutMea.u);
connect(XEvaInMoiAir.y, add.u2);
connect(add.y, mux.u2[1]);
connect(sinSpeDX.P, PMea.u);
connect(p.y, sou.p_in);
connect(XEvaInMod.y, mux.u1[1]);
connect(XEvaInMod.y, add.u1);
connect(onOff.y, sinSpeDX.on);
connect(TCIn.y, TCIn_K.Celsius);
connect(TEvaIn.y, TEvaIn_K.Celsius);
connect(sinSpeDX.QSen_flow, Q_flowSenMea.u);
connect(QCoo_flow.y, Q_flowMea.u);
connect(QCoo_flow.u1, sinSpeDX.QSen_flow);
connect(sinSpeDX.QLat_flow, QCoo_flow.u2);
connect(PEPlu_ori.y, PEPlu.u);
connect(Q_flowSenEPlu_ori.y, Q_flowSenEPlu.u);
connect(Q_flowSenEPlu.y, shrEPlu.u1);
connect(Q_flowEPlu_ori.y, Q_flowEPlu.u);
connect(TOutEPlu_ori.y, TOutEPlu.u);
connect(XEvaOutEPlu_ori.y, XEvaOutEPlu.u);
connect(multiSum.y, shrEPlu.u2);
connect(small.y, multiSum.u[1]);
connect(Q_flowEPlu.y, multiSum.u[2]);
end SingleSpeedPLR;
Information
Extends from Modelica.Blocks.Discrete.UnitDelay (Unit Delay Block).
Parameters
Type | Name | Default | Description |
Real | y_start | 0 | Initial value of output signal |
Time | samplePeriod | | Sample period of component [s] |
Time | startTime | 0 | First sample time instant [s] |
Connectors
Type | Name | Description |
input RealInput | u | Connector of Real input signal |
output RealOutput | y | Connector of Real output signal |
Modelica definition