Validation of the baseclasses
Information
This package contains models that validate the models in
Buildings.Fluid.CHPs.BaseClasses.
Extends from Modelica.Icons.ExamplesPackage (Icon for packages containing runnable examples).
Package Content
| Name | Description | 
|  AssertFuelFlow | Validate model AssertFuelFlow | 
|  AssertPower | Validate model AssertPower | 
|  AssertWaterFlow | Validate model AssertWaterFlow | 
|  AssertWaterTemperature | Validate model AssertWaterTemperature | 
|  Controller | Validate model Controller | 
|  CoolDown | Validate model CoolDown | 
|  EnergyConversion | Validate model EnergyConversion | 
|  EnergyConversionNormal | Validate model EnergyConversionNormal | 
|  EnergyConversionWarmUp | Validate model EnergyConversionWarmUp | 
|  EngineTemperature | Validate model EngineTemperature | 
|  FilterPower | Validate model FilterPower | 
|  PowerConsumption | Validate model PowerConsumption | 
|  StandBy | Validate model StandBy | 
|  WarmUpTemperature | Validate model WarmUp if warm-up by engine temperature | 
|  WarmUpTimeDelay | Validate model WarmUp if warm-up by time delay | 
|  WaterFlowControl | Validate model WaterFlowControl | 
Validate model AssertFuelFlow
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.AssertFuelFlow
for sending a warning message if the fuel mass flow rate is outside boundaries.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
Validate model AssertPower
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.AssertPower
for sending a warning message if the electric power is outside boundaries.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model AssertPower 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Fluid.CHPs.BaseClasses.AssertPower assPow(
    PEleMax=per.PEleMax,
    PEleMin=per.PEleMin,
    use_powerRateLimit=per.use_powerRateLimit,
    dPEleMax=per.dPEleMax)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable PEleDem(
    table=[0,0; 300,500; 600,2000; 900,3001;
           1200,0; 1500,6000; 2000,6000],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
equation 
  connect(PEleDem.y[1], assPow.PEleDem);
end AssertPower;
 
Validate model AssertWaterFlow
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.AssertWaterFlow
for sending a warning message if the water mass flow is outside boundaries.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
Validate model AssertWaterTemperature
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.AssertWaterTemperature
for sending a warning message if the water temperature is outside boundaries.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
Validate model Controller
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.Controller
for switching between six operating modes.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model Controller 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData3 per
    ;
  
Modelica.Blocks.Sources.BooleanTable runSig(
    startValue=false,
    table={900,960,1200,2200})
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Controller con(
final per=per)
    ;
  
Modelica.Blocks.Sources.BooleanTable avaSig(
    
final startValue=false,
    table={300,600,900}) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable mWat_flow(
    table=[0,0; 900,0.4; 1320,0; 1500,0.4;
           1900,0; 1960,0.4; 2200,0; 3000,0],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
protected 
  inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
equation 
  connect(avaSig.y, con.avaSig);
  
connect(runSig.y, con.runSig);
  
connect(mWat_flow.y[1], con.mWat_flow);
end Controller;
 
Validate model CoolDown
 
Information
This example validates the transitions to and from the cool-down operating mode.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model CoolDown 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Types.Mode actMod ;
  
Modelica.Blocks.Sources.BooleanTable runSig(
    
final startValue=true,
    table={300,600,660,690}) ;
  
Buildings.Controls.OBC.CDL.Logical.Not notRun ;
  
Buildings.Controls.OBC.CDL.Logical.And and1 ;
  
Buildings.Controls.OBC.CDL.Logical.Sources.Constant cooDowOpt(
    
final k=per.coolDownOptional)
    ;
  
Modelica.StateGraph.StepWithSignal cooDow(nIn=2, nOut=2) ;
protected 
  Modelica.StateGraph.InitialStep norm(
final nIn=2, 
final nOut=2)
    ;
  
inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
  
Modelica.StateGraph.TransitionWithSignal transition2 ;
  
Modelica.StateGraph.TransitionWithSignal transition1
    ;
  
Modelica.StateGraph.TransitionWithSignal transition4
    ;
  
Modelica.StateGraph.Step off(
final nIn=1, 
final nOut=1) ;
  
Modelica.StateGraph.TransitionWithSignal transition3 ;
  
Modelica.StateGraph.Transition transition5(
    
final condition=false,
    
final waitTime=0);
protected 
  Controls.OBC.CDL.Logical.Timer timer;
  
Controls.OBC.CDL.Continuous.GreaterEqualThreshold timeDel(
final threshold=per.timeDelayCool)
    ;
equation 
  if norm.active
 then
    actMod = Buildings.Fluid.CHPs.BaseClasses.Types.Mode.Normal;
  
elseif cooDow.active
 then
    actMod = Buildings.Fluid.CHPs.BaseClasses.Types.Mode.CoolDown;
  
else
    actMod = Buildings.Fluid.CHPs.BaseClasses.Types.Mode.Off;
  
end if;
  
connect(transition4.outPort, norm.inPort[1]);
  
connect(transition1.inPort, norm.outPort[1]);
  
connect(off.inPort[1], transition2.outPort);
  
connect(off.outPort[1], transition3.inPort);
  
connect(transition3.outPort, norm.inPort[2]);
  
connect(transition5.inPort, norm.outPort[2]);
  
connect(runSig.y, notRun.u);
  
connect(notRun.y, transition1.condition);
  
connect(cooDowOpt.y, and1.u1);
  
connect(runSig.y, and1.u2);
  
connect(runSig.y, transition3.condition);
  
connect(and1.y, transition4.condition);
  
connect(cooDow.outPort[1], transition2.inPort);
  
connect(timer.y, timeDel.u);
  
connect(cooDow.outPort[2], transition4.inPort);
  
connect(transition1.outPort, cooDow.inPort[1]);
  
connect(transition5.outPort, cooDow.inPort[2]);
  
connect(cooDow.active, timer.u);
  
connect(timeDel.y, transition2.condition);
end CoolDown;
 
Validate model EnergyConversion
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.EnergyConversion
for defining the energy conversion control volume.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model EnergyConversion 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData2 per
    ;
  
parameter Data.ValidationData2 per1(warmUpByTimeDelay=true)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.EnergyConversion eneConEngTem(
    
final per=per)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.EnergyConversion eneConTimDel(
    
final per=per1)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable mWat_flow(
    table=[0,0; 300,0.4; 2700,0; 3000,0],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Controller con(
final per=per) ;
  
Modelica.Blocks.Sources.BooleanTable runSig(startValue=false, table={300,2700})
    ;
  
Modelica.Blocks.Sources.BooleanTable avaSig(startValue=true, table={3500})
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TEng(
    
final height=90,
    
final duration=600,
    
final offset=273.15 + 15,
    
final startTime=360) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TWatIn(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15) ;
  
Modelica.Blocks.Sources.TimeTable PEle(
    table=[0,0; 299,0; 300,2500; 2699,2500;2700,0; 3000,0])
    ;
  
Controls.OBC.CDL.Continuous.Sources.Constant TRoo(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15)
    ;
protected 
  inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
equation 
  connect(con.opeMod, eneConEngTem.opeMod);
  
connect(avaSig.y, con.avaSig);
  
connect(runSig.y, con.runSig);
  
connect(TEng.y, con.TEng);
  
connect(TEng.y, eneConEngTem.TEng);
  
connect(TWatIn.y, eneConEngTem.TWatIn);
  
connect(PEle.y, eneConEngTem.PEle);
  
connect(mWat_flow.y[1], eneConEngTem.mWat_flow);
  
connect(mWat_flow.y[1], con.mWat_flow);
  
connect(TWatIn.y, eneConTimDel.TWatIn);
  
connect(mWat_flow.y[1], eneConTimDel.mWat_flow);
  
connect(PEle.y, eneConTimDel.PEle);
  
connect(con.opeMod, eneConTimDel.opeMod);
  
connect(PEle.y, con.PEle);
  
connect(eneConEngTem.PEleNet, con.PEleNet);
  
connect(TRoo.y, eneConEngTem.TRoo);
  
connect(TRoo.y, eneConTimDel.TRoo);
end EnergyConversion;
 
Validate model EnergyConversionNormal
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.EnergyConversionNormal
for defining energy conversion for a typical CHP operation.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
Validate model EnergyConversionWarmUp
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.EnergyConversionWarmUp
for defining energy conversion during the warm-up mode dependent on the engine temperature.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model EnergyConversionWarmUp 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData2 per
    ;
  
Buildings.Fluid.CHPs.BaseClasses.EnergyConversionWarmUp opeModWarUpEngTem(
    
final per=per) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TEng(
    y(
final unit="K", displayUnit="degC"),
    
final height=90,
    
final duration=360,
    
final offset=273.15 + 15,
    
final startTime=600) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant mWat_flow(
    
final k=0.05)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TWatIn(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TRoo(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15)
    ;
equation 
  connect(TWatIn.y, opeModWarUpEngTem.TWatIn);
  
connect(mWat_flow.y, opeModWarUpEngTem.mWat_flow);
  
connect(TRoo.y, opeModWarUpEngTem.TRoo);
  
connect(TEng.y, opeModWarUpEngTem.TEng);
end EnergyConversionWarmUp;
 
Validate model EngineTemperature
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.EngineTemperature
for defining the heat exchange within the engine control volume.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model EngineTemperature 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Fluid.CHPs.BaseClasses.EngineTemperature eng(
    
final UAHex=per.UAHex,
    
final UALos=per.UALos,
    
final capEng=per.capEng,
    
final TEngIni=273.15 + 20) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp QGen(
    
final height=5000,
    
final duration=360,
    
final offset=0,
    
final startTime=600) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TRoo(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TWat(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 60)
    ;
protected 
  Buildings.HeatTransfer.Sources.PrescribedTemperature rooTem
    ;
  
Buildings.HeatTransfer.Sources.PrescribedTemperature cooWatTem
    ;
equation 
  connect(QGen.y, eng.QGen_flow);
  
connect(rooTem.port, eng.TRoo);
  
connect(rooTem.T, TRoo.y);
  
connect(cooWatTem.T, TWat.y);
  
connect(cooWatTem.port, eng.TWat);
end EngineTemperature;
 
Validate model FilterPower
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.FilerPower
for applying constraints and sending a warning message if the electric power
is outside boundaries. The constraints include minimum and maximum electric power and
the maximum rate of change in power output.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model FilterPower 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable PEleDem(
    table=[0,0; 300,500; 600,2000; 900,3000;
           1200,0; 1500,6000; 1800,6000],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.FilterPower filPow(
    
final PEleMax=per.PEleMax,
    
final PEleMin=per.PEleMin,
    
final dPEleMax=per.dPEleMax,
    
final use_powerRateLimit=per.use_powerRateLimit)
    ;
equation 
  connect(PEleDem.y[1], filPow.PEleDem);
end FilterPower;
 
Validate model PowerConsumption
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.PowerConsumption
for calculating the power consumption during the stand-by and cool-down modes of
operation.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model PowerConsumption 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable mWat_flow(
    table=[0,0; 300,0.4; 2700,0; 3000,0],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Controller con(
final per=per);
  
Modelica.Blocks.Sources.BooleanTable runSig(
    
final startValue=false,
    
final table={300,2700})
    ;
  
Modelica.Blocks.Sources.BooleanTable avaSig(
    
final startValue=true,
    
final table={3500})
    ;
  
Buildings.Fluid.CHPs.BaseClasses.PowerConsumption powCon(
    
final PStaBy=per.PStaBy,
    
final PCooDow=per.PCooDow)
    ;
protected 
  inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
equation 
  connect(avaSig.y, con.avaSig);
  
connect(runSig.y, con.runSig);
  
connect(con.opeMod,powCon. opeMod);
  
connect(mWat_flow.y[1], con.mWat_flow);
end PowerConsumption;
 
Validate model StandBy
 
Information
This example validates the transitions to and from the stand-by operating mode.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model StandBy 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant mWat_flow(
    
final k=0.5) ;
  
Buildings.Fluid.CHPs.BaseClasses.Types.Mode actMod ;
  
Modelica.StateGraph.TransitionWithSignal transition1 ;
  
Modelica.StateGraph.TransitionWithSignal transition2
    ;
  
Modelica.StateGraph.Step staBy(nOut=2) ;
  
Modelica.StateGraph.Step pumOn(nOut=2) ;
protected 
  Modelica.Blocks.Sources.BooleanTable avaSig(table={300,600,900,1260})
    ;
  
Buildings.Controls.OBC.CDL.Logical.Not notAva ;
  
Modelica.Blocks.Sources.BooleanTable runSig(table={1200,1260})
    ;
  
Modelica.StateGraph.InitialStep off(nIn=2) ;
  
inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
  
Modelica.StateGraph.TransitionWithSignal transition3(
    
final enableTimer=true,
    
final waitTime=60) ;
  
Modelica.StateGraph.TransitionWithSignal transition4 ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant minWatFlo(
    
final k=per.mWatMin_flow)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Greater cheMinFlo
    ;
equation 
  if off.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.Off;
  
elseif staBy.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.StandBy;
  
else
    actMod = CHPs.BaseClasses.Types.Mode.PumpOn;
  
end if;
  
connect(transition1.inPort, off.outPort[1]);
  
connect(transition4.outPort, off.inPort[1]);
  
connect(transition3.outPort, off.inPort[2]);
  
connect(avaSig.y, transition1.condition);
  
connect(avaSig.y, notAva.u);
  
connect(notAva.y, transition4.condition);
  
connect(runSig.y, transition2.condition);
  
connect(mWat_flow.y, cheMinFlo.u1);
  
connect(minWatFlo.y, cheMinFlo.u2);
  
connect(cheMinFlo.y, transition3.condition);
  
connect(pumOn.outPort[1], transition3.inPort);
  
connect(transition2.outPort, pumOn.inPort[1]);
  
connect(staBy.outPort[1], transition2.inPort);
  
connect(transition1.outPort, staBy.inPort[1]);
  
connect(staBy.outPort[2], transition4.inPort);
end StandBy;
 
Validate model WarmUp if warm-up by engine temperature
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.WarmUpLeaving. 
The example is for the warm-up mode dependent on the engine temperature 
(e.g. CHPs with Stirling engines).
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model WarmUpTemperature
  
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData2 per
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TEng(
    
final height=200,
    
final duration=360,
    
final offset=273.15,
    
final startTime=0) ;
  
Modelica.Blocks.Sources.BooleanTable runSig(
    
final startValue=true,
    
final table={600})
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Types.Mode actMod ;
  
Modelica.StateGraph.TransitionWithSignal transition1 ;
  
Modelica.StateGraph.TransitionWithSignal transition2 ;
  
Modelica.StateGraph.TransitionWithSignal transition3 ;
  
Modelica.StateGraph.StepWithSignal warUp(nIn=2, nOut=2)
    ;
  
Controls.OBC.CDL.Continuous.Sources.Constant PEle[2](k={1,2})
    ;
protected 
  Modelica.StateGraph.InitialStep off(
final nIn=2, 
final nOut=2) ;
  
inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
  
Modelica.StateGraph.TransitionWithSignal transition4 ;
  
Modelica.StateGraph.Step nor(nIn=1, nOut=1) ;
  
Modelica.StateGraph.Transition transition5(
    
final condition=false,
    
final waitTime=0);
  
Buildings.Controls.OBC.CDL.Logical.Not notRun ;
  
WarmUpLeaving warUpCtr(
    
final timeDelayStart=per.timeDelayStart,
    
final TEngNom=per.TEngNom,
    
final warmUpByTimeDelay=per.warmUpByTimeDelay) ;
equation 
  if off.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.Off;
  
elseif warUp.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.WarmUp;
  
else
    actMod = CHPs.BaseClasses.Types.Mode.Normal;
  
end if;
  
connect(transition4.outPort, off.inPort[1]);
  
connect(transition1.inPort, off.outPort[1]);
  
connect(nor.inPort[1], transition2.outPort);
  
connect(nor.outPort[1], transition3.inPort);
  
connect(transition3.outPort, off.inPort[2]);
  
connect(transition5.inPort, off.outPort[2]);
  
connect(runSig.y, notRun.u);
  
connect(runSig.y, transition1.condition);
  
connect(notRun.y, transition3.condition);
  
connect(notRun.y, transition4.condition);
  
connect(warUp.active, warUpCtr.actWarUp);
  
connect(transition1.outPort, warUp.inPort[1]);
  
connect(warUp.outPort[1], transition2.inPort);
  
connect(transition5.outPort, warUp.inPort[2]);
  
connect(warUp.outPort[2], transition4.inPort);
  
connect(TEng.y, warUpCtr.TEng);
  
connect(warUpCtr.y, transition2.condition);
  
connect(PEle[1].y, warUpCtr.PEleNet);
  
connect(PEle[2].y, warUpCtr.PEle);
end WarmUpTemperature;
 
Validate model WarmUp if warm-up by time delay
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.WarmUpLeaving. 
The example is for the warm-up mode with the static time delay
(e.g. CHPs with internal combustion engines).
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model WarmUpTimeDelay
  
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData1 per
    ;
  
Modelica.Blocks.Sources.BooleanTable runSig(
final table={300,330,600})
  ;
  
Buildings.Fluid.CHPs.BaseClasses.Types.Mode actMod ;
  
Modelica.StateGraph.TransitionWithSignal transition1 ;
  
Modelica.StateGraph.TransitionWithSignal transition2 ;
  
Modelica.StateGraph.TransitionWithSignal transition3 ;
  
Modelica.StateGraph.StepWithSignal warUp(nIn=2, nOut=2)
    ;
protected 
  Modelica.StateGraph.InitialStep off(nIn=2, nOut=2) ;
  
inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
  
Modelica.StateGraph.TransitionWithSignal transition4 ;
  
Modelica.StateGraph.Step nor(nIn=1, nOut=1) ;
  
Modelica.StateGraph.Transition transition5(
    
final condition=false,
    
final waitTime=0);
  
Buildings.Controls.OBC.CDL.Logical.Not notRun ;
  
WarmUpLeaving warUpCtr(
    
final timeDelayStart=per.timeDelayStart,
    
final TEngNom=per.TEngNom,
    
final PEleMax=per.PEleMax,
    
final warmUpByTimeDelay=per.warmUpByTimeDelay) ;
equation 
  if off.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.Off;
  
elseif warUp.active
 then
    actMod = CHPs.BaseClasses.Types.Mode.WarmUp;
  
else
    actMod = CHPs.BaseClasses.Types.Mode.Normal;
  
end if;
  
connect(transition4.outPort, off.inPort[1]);
  
connect(transition1.inPort, off.outPort[1]);
  
connect(nor.inPort[1], transition2.outPort);
  
connect(nor.outPort[1], transition3.inPort);
  
connect(transition3.outPort, off.inPort[2]);
  
connect(transition5.inPort, off.outPort[2]);
  
connect(runSig.y, transition1.condition);
  
connect(runSig.y, notRun.u);
  
connect(notRun.y, transition3.condition);
  
connect(notRun.y, transition4.condition);
  
connect(warUpCtr.y, transition2.condition);
  
connect(warUp.active, warUpCtr.actWarUp);
  
connect(transition1.outPort, warUp.inPort[1]);
  
connect(warUp.outPort[1], transition2.inPort);
  
connect(warUp.outPort[2], transition4.inPort);
  
connect(transition5.outPort, warUp.inPort[2]);
end WarmUpTimeDelay;
 
Validate model WaterFlowControl
 
Information
This example validates
Buildings.Fluid.CHPs.BaseClasses.WaterFlowControl
for calculating the optimum cooling water flow rate based on internal contol.
Extends from Modelica.Icons.Example (Icon for runnable examples).
Parameters
Modelica definition
model WaterFlowControl 
  
extends Modelica.Icons.Example;
  
parameter Buildings.Fluid.CHPs.Data.ValidationData2 per
    ;
  
Buildings.Fluid.CHPs.BaseClasses.WaterFlowControl conWat(
final per=per)
    ;
protected 
  inner Modelica.StateGraph.StateGraphRoot stateGraphRoot;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable mWat_flow(
    table=[0,0; 300,0.4; 2700,0; 3000,0],
    smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
  
Buildings.Fluid.CHPs.BaseClasses.Controller con(
final per=per)
    ;
  
Modelica.Blocks.Sources.BooleanTable runSig(
    
final startValue=false,
    
final table={300,2700})
    ;
  
Modelica.Blocks.Sources.BooleanTable avaSig(
    
final startValue=true,
    
final table={3500})
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Ramp TEng(
    y(
final unit="K", displayUnit="degC"),
    
final height=90,
    
final duration=300,
    
final offset=273.15 + 15,
    
final startTime=360) ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.Constant TWatIn(
    y(
final unit="K", displayUnit="degC"),
    
final k=273.15 + 15)
    ;
  
Buildings.Controls.OBC.CDL.Continuous.Sources.TimeTable PEle(
    
final table=[0,0; 300,2500; 2700,0; 3000,0],
    
final smoothness=Buildings.Controls.OBC.CDL.Types.Smoothness.ConstantSegments)
    ;
equation 
  connect(avaSig.y, con.avaSig);
  
connect(runSig.y, con.runSig);
  
connect(TEng.y, con.TEng);
  
connect(con.opeMod, conWat.opeMod);
  
connect(TWatIn.y, conWat.TWatIn);
  
connect(mWat_flow.y[1], con.mWat_flow);
  
connect(PEle.y[1], conWat.PEle);
  
connect(PEle.y[1], con.PEle);
  
connect(PEle.y[1], con.PEleNet);
end WaterFlowControl;