Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation

Collection of validation models

Information

This package contains validation models for the classes in Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.Controller Controller Validate control of minimum bypass valve
Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.FlowSetpoint FlowSetpoint Validation sequence of specifying minimum bypass flow setpoint

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.Controller Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.Controller

Validate control of minimum bypass valve

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.Controller

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Controller. It demonstrates the bypass valve control to maintain the minimum chilled water flow through the chillers.

Modelica definition

model Controller "Validate control of minimum bypass valve" Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Controller minBypValCon( nChi=3, minFloSet={0.005,0.005,0.005}) "Minimum bypass valve position"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse chiFloSet( amplitude=-0.005, period=3, offset=0.015) "Minimum flow setpoint"; protected Buildings.Controls.OBC.CDL.Logical.Sources.Pulse chiWatPum( width=0.15, period=4, shift=0.1) "Chilled water pump on command"; Buildings.Controls.OBC.CDL.Logical.Not not4 "Logical not"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin( amplitude=0.0025, freqHz=1/2, offset=0.005) "Output sine wave value"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram( height=0.015, duration=2, startTime=1.2) "Output ramp value"; Buildings.Controls.OBC.CDL.Reals.Add add2 "Measured minimum bypass flow rate"; equation connect(chiWatPum.y, not4.u); connect(not4.y, minBypValCon.uChiWatPum); connect(sin.y, add2.u1); connect(ram.y, add2.u2); connect(add2.y, minBypValCon.VChiWat_flow); connect(chiFloSet.y, minBypValCon.VChiWatSet_flow); end Controller;

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.FlowSetpoint Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.FlowSetpoint

Validation sequence of specifying minimum bypass flow setpoint

Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.Validation.FlowSetpoint

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.FlowSetpoint. It shows the calculation of the minimum chilled water flow through the operating chillers.

It includes three instances staUp, staDow, and onOffStaUp that show the minimum chilled water flow setpoint when the plant is staging up, staging down, and staging up with one chiller being enabled and another chiller being disabled.

Modelica definition

model FlowSetpoint "Validation sequence of specifying minimum bypass flow setpoint" Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.FlowSetpoint staUp( nChi=3, byPasSetTim=1.5) "Minimum flow setpoint when there is stage up command"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.FlowSetpoint onOffStaUp( nChi=3, byPasSetTim=1.5) "Minimum flow setpoint when there is stage up command and the change requires one chiller off and another chiller on"; Buildings.Controls.OBC.ASHRAE.G36.Plants.Chillers.MinimumFlowBypass.FlowSetpoint staDow( nChi=3, byPasSetTim=1.5) "Minimum flow setpoint when there is stage down command"; protected Buildings.Controls.OBC.CDL.Logical.Sources.Constant noOnOff( final k=false) "No chiller on/off during the stage change"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse staCha( final width=0.25, final period=4) "Stage up command"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse upDev( final width=0.3, final period=4) "Status of upflow device"; Buildings.Controls.OBC.CDL.Reals.Switch enaChi "Next enabling chiller"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant noStaCha( final k=false) "No stage change"; Buildings.Controls.OBC.CDL.Logical.Not not1 "Logical not"; Buildings.Controls.OBC.CDL.Logical.Not not2 "Logical not"; Buildings.Controls.OBC.CDL.Reals.Switch disChi "Disabling chiller"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant haveOnOff( final k=true) "Have chiller on/off during the stage change"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse enaNexChi( final width=0.8, final period=4) "Enable next chiller"; Buildings.Controls.OBC.CDL.Logical.Not not3 "Logical not"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( final k=3) "Index of enabling chiller"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant zer( final k=0) "Zero"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( final k=2) "Index of disabling chiller"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt "Convert real input to integer output"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 "Convert real input to integer output"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 "Convert real input to integer output"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant chiSta[3]( final k={true,true,false}) "Current chiller status"; equation connect(noOnOff.y, staUp.uOnOff); connect(noStaCha.y, staUp.uStaDow); connect(staCha.y, not1.u); connect(upDev.y, not2.u); connect(not1.y,enaChi. u2); connect(not1.y, staUp.uStaUp); connect(not2.y, staUp.uUpsDevSta); connect(not1.y, disChi.u2); connect(noOnOff.y, staDow.uOnOff); connect(noStaCha.y, staDow.uStaUp); connect(not2.y, staDow.uUpsDevSta); connect(not1.y, staDow.uStaDow); connect(not1.y, onOffStaUp.uStaUp); connect(not2.y, onOffStaUp.uUpsDevSta); connect(haveOnOff.y, onOffStaUp.uOnOff); connect(noStaCha.y, onOffStaUp.uStaDow); connect(con.y, enaChi.u1); connect(con1.y, disChi.u1); connect(zer.y, enaChi.u3); connect(zer.y, disChi.u3); connect(enaChi.y, reaToInt.u); connect(disChi.y, reaToInt1.u); connect(zer.y, reaToInt2.u); connect(chiSta.y, staUp.uChi); connect(chiSta.y, onOffStaUp.uChi); connect(chiSta.y, staDow.uChi); connect(reaToInt.y, staUp.nexEnaChi); connect(reaToInt2.y, staUp.nexDisChi); connect(reaToInt2.y, staDow.nexEnaChi); connect(reaToInt1.y, staDow.nexDisChi); connect(reaToInt.y, onOffStaUp.nexEnaChi); connect(reaToInt1.y, onOffStaUp.nexDisChi); connect(enaNexChi.y, not3.u); connect(noOnOff.y, staUp.uSubCha); connect(noOnOff.y, staDow.uSubCha); connect(not3.y, onOffStaUp.uSubCha); end FlowSetpoint;