Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation

Package containing validation models for fan coil unit subsequences

Information

This package contains the validation models for the fan coil unit subsequences.

Package Content

Name Description
Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.FanSpeed FanSpeed Validation model for fan speed subsequence
Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.PlantRequests PlantRequests Validation model for subsequence for calculating the plant requests
Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.SupplyAirTemperature SupplyAirTemperature Validation model for supply air temperature setpoint subsequence

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.FanSpeed Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.FanSpeed

Validation model for fan speed subsequence

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.FanSpeed

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed. Each of the six instances of the controller represents operation with different inputs for heating and cooling loop signals, as well as the operating mode and fan proven on signal, and different configuration parameters of fan coil unit with presence or absence of heating and cooling coils, as described by the comment for each instance.

Modelica definition

block FanSpeed "Validation model for fan speed subsequence" Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe( have_cooCoi=true, have_heaCoi=true) "Instance demonstrating variation of heating loop signal"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe2( have_cooCoi=true, have_heaCoi=true) "Instance demonstrating variation of operating mode"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe1( have_cooCoi=true, have_heaCoi=true) "Instance demonstrating variation of cooling loop signal"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe3( have_cooCoi=true, have_heaCoi=false) "Instance demonstrating variation of cooling loop signal with no heating coil"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe4( have_cooCoi=false, have_heaCoi=true) "Instance demonstrating variation of heating loop signal with no cooling coil"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.FanSpeed fanSpe5( have_cooCoi=false, have_heaCoi=false) "Instance demonstrating variation of operating mode with no heating and cooling coils"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram( height=6, duration=70, offset=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul( period=100) "Fan proven on signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin( freqHz=1/50) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Abs abs "Convert negative loop signal to positive"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( k=0) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( k=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt1 "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul1( period=100) "Fan proven on signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2( k=0) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt2 "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul2( period=100) "Fan proven on signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin2( freqHz=1/50) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Abs abs2 "Convert negative loop signal to positive"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3( k=0) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4( k=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con5( k=0.75) "Heating loop signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt3 "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul3( period=100) "Fan proven on signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin1( freqHz=1/50) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Abs abs1 "Convert negative loop signal to positive"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con7( k=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt4 "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul4( period=100) "Fan proven on signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin3( freqHz=1/50) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Abs abs3 "Convert negative loop signal to positive"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con8( k=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp ram1( height=6, duration=70, offset=1) "Operating mode signal"; Buildings.Controls.OBC.CDL.Conversions.RealToInteger reaToInt5 "Real to Integer conversion"; Buildings.Controls.OBC.CDL.Logical.Sources.Pulse booPul5( period=100) "Fan proven on signal"; equation connect(reaToInt.y, fanSpe.opeMod); connect(booPul.y, fanSpe.u1FanPro); connect(sin.y, abs.u); connect(abs.y, fanSpe.uHea); connect(con.y, fanSpe.uCoo); connect(con1.y, reaToInt.u); connect(reaToInt1.y, fanSpe2.opeMod); connect(booPul1.y, fanSpe2.u1FanPro); connect(con2.y, fanSpe2.uCoo); connect(ram.y, reaToInt1.u); connect(reaToInt2.y,fanSpe1. opeMod); connect(booPul2.y,fanSpe1. u1FanPro); connect(sin2.y, abs2.u); connect(con4.y, reaToInt2.u); connect(con3.y,fanSpe1. uHea); connect(abs2.y,fanSpe1. uCoo); connect(con5.y, fanSpe2.uHea); connect(reaToInt3.y,fanSpe3. opeMod); connect(booPul3.y,fanSpe3. u1FanPro); connect(sin1.y,abs1. u); connect(con7.y,reaToInt3. u); connect(abs1.y,fanSpe3. uCoo); connect(reaToInt4.y, fanSpe4.opeMod); connect(booPul4.y, fanSpe4.u1FanPro); connect(sin3.y, abs3.u); connect(abs3.y, fanSpe4.uHea); connect(con8.y, reaToInt4.u); connect(reaToInt5.y, fanSpe5.opeMod); connect(booPul5.y, fanSpe5.u1FanPro); connect(ram1.y, reaToInt5.u); end FanSpeed;

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.PlantRequests Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.PlantRequests

Validation model for subsequence for calculating the plant requests

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.PlantRequests

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.PlantRequests for fan coil units. The three instances of the controller are as follows:

Each instance is subjected to an increasing deviation of the measured supply temperature TAirSup from the supply temperature setpoint TSupSet that results in an increasing number of requests from the controllers.

Modelica definition

model PlantRequests "Validation model for subsequence for calculating the plant requests" Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.PlantRequests plaReq "Calculate plant request"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.PlantRequests plaReq1( have_hotWatCoi=false) "Calculate plant request"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.PlantRequests plaReq2( have_chiWatCoi=false) "Calculate plant request"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse fanSpe( width=0.8, period=3600) "Fan speed signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse fanSpe1( width=0.8, period=3600) "Fan speed signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Pulse fanSpe2( width=0.8, period=3600) "Fan speed signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem( height=16, offset=273.15 + 15, duration=3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTemSet( height=6, offset=273.15 + 14.5, duration=3600) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp cooCoi( height=-0.3, offset=0.96, duration=3600, startTime=1000) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaCoi( height=-0.3, offset=0.96, duration=3600, startTime=1000) "Heating coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem1( height=8, offset=273.15 + 12, duration=3600) "Cooling supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTemSet1( height=25, offset=273.15 + 20, duration=3600) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant cooCoi1( k=0) "Cooling coil position"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTem3( height=8, offset=273.15 + 15, duration=3600) "Supply air temperature"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp supTemSet2( height=6, offset=273.15 + 14.5, duration=3600) "Supply air temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Ramp heaCoi2( height=-0.3, offset=0.96, duration=3600, startTime=1000) "Heating coil position"; equation connect(supTem.y, plaReq1.TAirSup); connect(cooCoi.y, plaReq1.uCooCoiSet); connect(supTem1.y, plaReq.TAirSup); connect(cooCoi1.y, plaReq.uCooCoiSet); connect(heaCoi.y, plaReq.uHeaCoiSet); connect(supTemSet1.y, plaReq.TAirSupSet); connect(supTemSet.y, plaReq1.TAirSupSet); connect(fanSpe.y, plaReq.uFan); connect(fanSpe1.y, plaReq1.uFan); connect(supTem3.y, plaReq2.TAirSup); connect(supTemSet2.y, plaReq2.TAirSupSet); connect(fanSpe2.y, plaReq2.uFan); connect(heaCoi2.y, plaReq2.uHeaCoiSet); end PlantRequests;

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.SupplyAirTemperature Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.SupplyAirTemperature

Validation model for supply air temperature setpoint subsequence

Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.Validation.SupplyAirTemperature

Information

This example validates Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.SupplyAirTemperature. Each of the four instances of the controller represents operation with different inputs for heating and cooling loop signals, and different configuration parameters of fan coil unit with presence or absence of heating and cooling coils, as described in the instance comments.

Modelica definition

block SupplyAirTemperature "Validation model for supply air temperature setpoint subsequence" Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.SupplyAirTemperature TSupAir( have_cooCoi=true, have_heaCoi=true) "Instance demonstrating heating signal operation"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.SupplyAirTemperature TSupAir3( have_cooCoi=true, have_heaCoi=false) "Instance demonstrating cooling signal operation when heating coil is absent"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.SupplyAirTemperature TSupAir2( have_cooCoi=false, have_heaCoi=true) "Instance demonstrating heating signal operation when cooling coil is absent"; Buildings.Controls.OBC.ASHRAE.G36.FanCoilUnits.Subsequences.SupplyAirTemperature TSupAir1( have_cooCoi=true, have_heaCoi=true) "Instance demonstrating cooling signal operation"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin( amplitude=20, freqHz=1/50, offset=273.15 + 23) "Supply air temperature signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin3( amplitude=20, freqHz=1/50, offset=273.15 + 23) "Supply air temperature signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin5( amplitude=0.5, freqHz=1/100, offset=0.5) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin6( amplitude=20, freqHz=1/50, offset=273.15 + 23) "Supply air temperature signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin8( amplitude=0.5, freqHz=1/100, offset=0.5) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Sin sin4( amplitude=20, freqHz=1/50, offset=273.15 + 23) "Supply air temperature signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con( k=273.15 + 21) "Zone heating temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con1( k=273.15 + 25) "Zone cooling temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con2( k=273.15 + 21) "Zone heating temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con3( k=273.15 + 25) "Zone cooling temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con4( k=273.15 + 21) "Zone heating temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con6( k=273.15 + 25) "Zone cooling temperature setpoint"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con5( k=0.25) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con7( k=0) "Heating loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con8( k=0) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Reals.Sources.Constant con9( k=0.25) "Cooling loop signal"; Buildings.Controls.OBC.CDL.Logical.Sources.Constant con10( k=true) "Boolean fale signal"; equation connect(sin.y, TSupAir.TAirSup); connect(sin6.y, TSupAir2.TAirSup); connect(sin8.y, TSupAir2.uHea); connect(sin4.y,TSupAir1. TAirSup); connect(con.y,TSupAir.TZonHeaSet); connect(con1.y,TSupAir.TZonCooSet); connect(con2.y,TSupAir1.TZonHeaSet); connect(con3.y,TSupAir1.TZonCooSet); connect(con4.y,TSupAir2.TZonHeaSet); connect(con6.y,TSupAir3.TZonCooSet); connect(con5.y, TSupAir.uHea); connect(con7.y, TSupAir1.uHea); connect(con8.y, TSupAir.uCoo); connect(con9.y, TSupAir1.uCoo); connect(sin5.y, TSupAir3.uCoo); connect(sin3.y, TSupAir3.TAirSup); connect(con10.y, TSupAir.u1Fan); connect(con10.y, TSupAir1.u1Fan); connect(con10.y, TSupAir2.u1Fan); connect(con10.y, TSupAir3.u1Fan); end SupplyAirTemperature;