blockReliefFanGroup

Sequence for relief fans control for AHUs using actuated relief dampers with relief fan(s)

Information

Sequence for controlling relief fans and their dampers for AHUs using actuated relief dampers with relief fan(s). It is developed based on Section 5.16.9 of ASHRAE Guideline 36, May 2020.

  1. All operating relief fans that serve a common or shared air volume shall be grouped and controlled as if they were one system, running at the same speed and using the same control loop, even if they are associated with different AHUs.
  2. A relief fan shall be enabled when its associated supply fan is proven ON (u1SupFan=true), and shall be disabled otherwise.
  3. Building static pressure (dpBui) shall be time averaged with a sliding 5-minute window and 15 second sampling rate (to dampen fluctuations). The average value shall be that displayed and used for control.
  4. A P-only control loop maintains the building pressure at a set point (dpBuiSet) of 12 Pa (0.05 in. of water) with an output ranging from 0% to 100%. The loop is disabled and output set to zero when all fans in the relief system group are disabled.
  5. Fan speed signal to all operating fans in the relief system group shall be the same and shall be equal to the PID signal but no less than the minimum speed. Except for Stage 0, discharge dampers of all relief fans shall be open only when fan is commanded ON.
    1. Stage 0 (barometric relief). When relief system is enabled, and the control loop output is above 5%, open the motorized dampers to all relief fans serving the relief system group that are enabled; close the dampers when the loop output drops to 0% for 5 minutes.
    2. Stage Up. When control loop is above minimum speed (relFanSpe_min) plus 15%, start stage-up timer. Each time the timer reaches 7 minutes, start the next relief fan (and open the associated damper) in the relief system group, per staging order, and reset the timer to 0. The timer is reset to 0 and frozen if control loop is below minimum speed plus 15%. Note, when staging from Stage 0 (no relief fans) to Stage 1 (one relief fan), the discharge dampers of all nonoperating relief fans must be closed.
    3. Stage Down. When PID loop is below minimum speed (relFanSpe_min), start stage-down timer. Each time the timer reaches 5 minutes, shut off lag fan per staging order and reset the timer to 0. The timer is reset to 0 and frozen if PID loop rises above minimum speed or all fans are OFF. If all fans are OFF, go to Stage 0 (all dampers open and all fans OFF).
  6. For fans in a Level 2 alarm and status is OFF, discharge damper shall be closed when is above Stage 0.

Parameters

TypeNameDefaultDescription
IntegernSupFan2Total number of AHU supply fans that are serving the same common space
IntegernRelFan4Total number of relief fans that are serving the same common space
RealrelFanSpe_min0.1Relief fan minimum speed
Integer[nRelFan]staVec{2, 3, 1, 4}Vector of the order for staging up relief fan, i.e. the 1st element means the 1st relief fan and its value showing its sequence when staging up
Integer[nRelFan,nSupFan]relFanMat{{1, 0}, {1, 0}, {0, 1}, {0, 1}}Relief fan matrix with relief fan as row index and AHU supply fan as column index. It flags which relief fan is associated with which supply fan
RealdpBuiSet12Building static pressure difference relative to ambient (positive to pressurize the building)
Pressure controller
Realk1Gain, normalized using dpBuiSet
Advanced
Realhys0.005Hysteresis for checking the controller output value

Connectors

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nSupFan]u1SupFanAHU supply fan proven on status
Buildings.Controls.OBC.CDL.Interfaces.RealInputdpBuiBuilding static pressure difference, relative to ambient (positive if pressurized)
Buildings.Controls.OBC.CDL.Interfaces.IntegerInput[nRelFan]uRelFanAlaRelief fan current alarm index
Buildings.Controls.OBC.CDL.Interfaces.BooleanInput[nRelFan]u1RelFanRelief fan proven on status
Buildings.Controls.OBC.CDL.Interfaces.RealOutputyDpBuiBuilding static pressure difference, relative to ambient (positive if pressurized)
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nRelFan]yRelFanRelief fan commanded speed
Buildings.Controls.OBC.CDL.Interfaces.RealOutput[nRelFan]yDamRelief damper commanded position

Components

TypeNameDefaultDescription
Buildings.Controls.OBC.CDL.Reals.MatrixGainenaRelVector of relief fans with the enabled one denoted by 1
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[nSupFan]booToReaConvert boolean to real
Buildings.Controls.OBC.CDL.Reals.MultiplyByParameter[nRelFan]gaiVector of enabling fan, along with its staging order
Buildings.Controls.OBC.CDL.Reals.MovingAveragemovMeaAverage building static pressure measurement
Buildings.Controls.OBC.CDL.Reals.Dividediv1Normalized the control error
Buildings.Controls.OBC.CDL.Reals.PIDconPBuilding static pressure controller
Buildings.Controls.OBC.CDL.Logical.MultiOrenaRelGroRelief group enabling status
Buildings.Controls.OBC.CDL.Conversions.BooleanToRealbooToRea1Convert boolean to real
Buildings.Controls.OBC.CDL.Reals.MultiplyproSet controller output to zero when the relief system is disabled
Buildings.Controls.OBC.CDL.Reals.GreaterThresholdgreThrCheck if the controller output is greater than threshold
Buildings.Controls.OBC.CDL.Logical.Andand2Check if the controller output is greater than threshold and the relief system has been enabled
Buildings.Controls.OBC.CDL.Logical.LatchlatEnable damper
Buildings.Controls.OBC.CDL.Reals.LessThresholdlesThrCheck if the controller output is near zero
Buildings.Controls.OBC.CDL.Logical.TimertimCheck if the controller output has been near zero for threshold time
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorbooRepBoolean replicator
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold[nRelFan]greThr1Check if a relief fan should be enabled
Buildings.Controls.OBC.CDL.Logical.And[nRelFan]enaDamEnable damper
Buildings.Controls.OBC.CDL.Reals.GreaterThresholdgreThr2Check if the controller output is greater than minimum speed plus threshold
Buildings.Controls.OBC.CDL.Logical.TimerupTimCheck if the controller output has been greater than threshold for sufficient long time
Buildings.Controls.OBC.CDL.Logical.PrepreBreak algebraic loop
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[nRelFan]booToRea2Convert boolean to real
Buildings.Controls.OBC.CDL.Reals.Subtract[nRelFan]sub2Identify relief fans that have been enabled but not yet operating
Buildings.Controls.OBC.CDL.Reals.Multiply[nRelFan]pro1List of standby fans, along with their staging order
Buildings.Controls.OBC.CDL.Reals.MultiMinmulMinIdentify current order of staging
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorreaRepReplicate real number
Buildings.Controls.OBC.CDL.Reals.Subtract[nRelFan]sub1Identify next operating fan
Buildings.Controls.OBC.CDL.Reals.LessThreshold[nRelFan]lesThr1Check if the input is less than threshold
Buildings.Controls.OBC.CDL.Reals.AddParameter[nRelFan]addParAdd value to the input
Buildings.Controls.OBC.CDL.Reals.Switch[nRelFan]swiSwitch input values
Buildings.Controls.OBC.CDL.Reals.Abs[nRelFan]abs1Find absolute value
Buildings.Controls.OBC.CDL.Reals.LessThreshold[nRelFan]lesThr2Identify next operating fan
Buildings.Controls.OBC.CDL.Logical.Or[nRelFan]or2Targeted vector of operating relief fan after one new fan being turned on
Buildings.Controls.OBC.CDL.Logical.Latchlat2Stage up next relief fan
Buildings.Controls.OBC.CDL.Reals.LessThresholdlesThr3Check if the controller output is less than minimum speed
Buildings.Controls.OBC.CDL.Logical.TimerdowTimCheck if the controller output has been less than threshold for sufficient long time
Buildings.Controls.OBC.CDL.Logical.Prepre1Break algebraic loop
Buildings.Controls.OBC.CDL.Reals.Multiply[nRelFan]pro2List of operating fans, along with their staging order
Buildings.Controls.OBC.CDL.Reals.AddParameter[nRelFan]addPar1Add value to the input
Buildings.Controls.OBC.CDL.Reals.LessThreshold[nRelFan]lesThr4Check if the input is less than threshold
Buildings.Controls.OBC.CDL.Reals.Switch[nRelFan]swi1Switch input values
Buildings.Controls.OBC.CDL.Reals.MultiMinmulMin1Minimum staging order of the running relief fans
Buildings.Controls.OBC.CDL.Reals.Subtract[nRelFan]sub3Identify next operating fan
Buildings.Controls.OBC.CDL.Reals.Abs[nRelFan]abs2Find absolute value
Buildings.Controls.OBC.CDL.Reals.LessThreshold[nRelFan]lesThr5Identify next fan to be off
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorreaRep1Replicate real number
Buildings.Controls.OBC.CDL.Logical.Xor[nRelFan]xorVector of relief fan after one fan being turned off
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger[nRelFan]booToIntConvert boolean to integer
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger[nRelFan]booToInt1Convert boolean to integer
Buildings.Controls.OBC.CDL.Conversions.BooleanToInteger[nRelFan]booToInt2Convert boolean to integer
Buildings.Controls.OBC.CDL.Integers.Equal[nRelFan]intEquCheck if newly started fan has become proven on
Buildings.Controls.OBC.CDL.Logical.MultiAndmulAndCheck if newly started fan has become proven on
Buildings.Controls.OBC.CDL.Integers.Equal[nRelFan]intEqu1Check if newly turned off fan has become off
Buildings.Controls.OBC.CDL.Logical.MultiAndmulAnd2Check if newly turned off fan has become off
Buildings.Controls.OBC.CDL.Logical.Latchlat1Stage down lag fan
Buildings.Controls.OBC.CDL.Logical.Switch[nRelFan]logSwiVector of relief fan status after staging up
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorbooRep1Replicate boolean input
Buildings.Controls.OBC.CDL.Logical.Switch[nRelFan]logSwi1Vector of relief fan status after staging down
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorbooRep2Replicate boolean input
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[nRelFan]booToRea3Convert boolean to real
Buildings.Controls.OBC.CDL.Reals.LimiterlimLimit the controller output
Buildings.Controls.OBC.CDL.Routing.RealScalarReplicatorreaRep2Replicate real input
Buildings.Controls.OBC.CDL.Reals.Multiply[nRelFan]pro3Relief fan speed
Buildings.Controls.OBC.CDL.Logical.Switch[nRelFan]logSwi2Vector of relief fan status after staging up
Buildings.Controls.OBC.CDL.Reals.Sources.ConstantdpBuiSetPoiBuilding pressure setpoint
Buildings.Controls.OBC.CDL.Reals.Sources.ConstantconOneConstant one
Buildings.Controls.OBC.CDL.Reals.Sources.ConstantconZero fan speed when it is in stage 0
Buildings.Controls.OBC.CDL.Reals.Switchswi2Switch input values
Buildings.Controls.OBC.CDL.Logical.MultiOrmulOrCheck if there is any relief fan enabled, but may not be running
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[nRelFan]booToRea4Convert boolean to real
Buildings.Controls.OBC.CDL.Logical.Notnot1Logical not
Buildings.Controls.OBC.CDL.Logical.Andand1Start timer, and reset to zero if the threshold time has passed
Buildings.Controls.OBC.CDL.Logical.Andand3Start timer, and reset to zero if the threshold time has passed
Buildings.Controls.OBC.CDL.Logical.Notnot2Logical not
Buildings.Controls.OBC.CDL.Integers.Equal[nRelFan]intEqu2Check if the relief fan is in level 2 alarm
Buildings.Controls.OBC.CDL.Integers.Sources.Constant[nRelFan]conIntConstant
Buildings.Controls.OBC.CDL.Logical.Not[nRelFan]not3Logical not
Buildings.Controls.OBC.CDL.Logical.And[nRelFan]and4Check if the relief fan is in level 2 alarm and it is proven off
Buildings.Controls.OBC.CDL.Conversions.BooleanToReal[nRelFan]booToRea5Convert boolean to real
Buildings.Controls.OBC.CDL.Reals.Multiply[nRelFan]mulProduct of inputs
Buildings.Controls.OBC.CDL.Reals.GreaterThreshold[nRelFan]greThr3Check if the relief fan is enabled
Buildings.Controls.OBC.CDL.Logical.MultiAndmulAnd1Check if all the fans are proven off
Buildings.Controls.OBC.CDL.Reals.Switch[nRelFan]swi3Switch input values
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorbooRep4Replicate boolean input
Buildings.Controls.OBC.CDL.Logical.Switch[nRelFan]logSwi3Vector of relief fan status after staging down
Buildings.Controls.OBC.CDL.Logical.TrueDelay[nRelFan]truDelDelay true input
Buildings.Controls.OBC.CDL.Logical.MultiOrmulOr1Check if there is any fan is proven on
Buildings.Controls.OBC.CDL.Routing.BooleanScalarReplicatorbooRep5Replicate boolean input
Buildings.Controls.OBC.CDL.Logical.Not[nRelFan]not5Logical not
Buildings.Controls.OBC.CDL.Logical.Not[nRelFan]not6Logical not
Buildings.Controls.OBC.CDL.Logical.TrueDelay[nRelFan]truDel1Delay true input

Revisions

  • March 5, 2024, by Michael Wetter:
    Corrected wrong use of displayUnit.
  • July 15, 2021, by Jianjun Hu:
    First implementation.