# Example 7. Constant Volume Purchased Air System[LINK]

The simplest way to add HVAC control to an EnergyPlus thermal zone is to use the ZoneHVAC:IdealLoadsAirSystem. This was called purchased air in older versions. The ideal loads air system is intended for load calculations. You provide input for the supply air conditions of drybulb and humidity ratio, but the flow rate cannot be controlled. The model operates by varying the flow rate to exactly meet the desired setpoints. However, you may want to experiment with various designs in a slightly different way in which, given a prescribed supply air situation, then adjust the design to maximize the thermal comfort. It would be interesting to use the simple-to-input purchased air model to examine how a zone responds to a system, rather than how the system responds to a zone. We should ask, Can we use the EMS to prescribe the supply air flow rates for a purchased air model?

For this example we begin with the input file from Example 6 (primarily because it already has purchased air). We examine the typical mass flow rates the air system provides to have some data to judge what an appropriate constant flow rate might be. A cursory review of the data indicates that cooling flow rates of 0.3 kg/s are chosen for two zones and 0.4 kg/s is chosen for the third. Heating flow rates of 0.1 and 0.15 kg/s are also chosen.

We want the model to respond differently for heating and cooling. We define two operating states and create global variables to hold that state for each zone. The first state is when the zone calls for heating; we will assign a value of 1.0. The second is when the zone calls for cooling; we assign 2.0.

To sense the state we will use EMS sensors associated with the output variable called “Zone/Sys Sensible Load Predicted.” We will set up one of these for each zone and use it as input data. If this value is less than zero, the zone is in the cooling state. If it is greater than zero, the zone is in the heating state. This predicted load is calculated during the predictor part of the model, so we choose the EMS calling point called “AfterPredictorAfterHVACManagers.”

An EMS actuator is available for the ideal loads air system that overrides the air mass flow rate (kg/s) delivered by the system when it is on. The override is not absolute in that the model will still apply the limits defined in the input object and overrides only if the system is “on.” The internal logic will turn off the air system if the zone is in the thermostat dead band or scheduled “off” by availability managers. This “off” state is modeled inside the ideal loads air system so it does not need to be calculated in Erl. This control leads to a constant volume system that cycles in an attempt to control the zone conditions. In practice, it can achieve relatively good control when loads do not exceed the available capacity.

A set of EMS input objects for a constant volume purchased air system serving three zones follows are contained in the example file called “EMSConstantVolumePurchAir.idf.”

EnergyManagementSystem:ProgramCallingManager,
Constant Volume Purchased Air Example,    ! Name
AfterPredictorAfterHVACManagers , ! EnergyPlus Model Calling Point
Determine_Purch_Air_State,         ! Program Name 1
Set_Purch_Air;

EnergyManagementSystem:Program,
Determine_Purch_Air_State,     ! Name
! State representation:  1.0 is heating, 2.0 is cooling
IF (Sensible_Load_Zone_1 < = 0.0) ,
SET Zone_1_State = 2.0,
SET Zone_1_State = 1.0,
ENDIF,
IF (Sensible_Load_Zone_2 < = 0.0) ,
SET Zone_2_State = 2.0,
SET Zone_2_State = 1.0,
ENDIF,
IF (Sensible_Load_Zone_3 < = 0.0) ,
SET Zone_3_State = 2.0,
SET Zone_3_State = 1.0,
ENDIF;

EnergyManagementSystem:Program,
Set_Purch_Air,
IF (    Zone_1_State = = 2.0),
SET ZONE_1_AIR_Mdot = 0.3,
ELSEIF (Zone_1_State = = 1.0),
SET ZONE_1_AIR_Mdot = 0.1,
ENDIF,
IF (    Zone_2_State = = 2.0),
SET ZONE_2_AIR_Mdot = 0.3,
ELSEIF (Zone_2_State = = 1.0),
SET ZONE_2_AIR_Mdot = 0.1,
ENDIF,
IF (    Zone_3_State = = 2.0),
SET ZONE_3_AIR_Mdot = 0.4,
ELSEIF (Zone_3_State = = 1.0),
SET ZONE_3_AIR_Mdot = 0.15,
ENDIF;

EnergyManagementSystem:GlobalVariable,  Zone_1_State;
EnergyManagementSystem:GlobalVariable,  Zone_2_State;
EnergyManagementSystem:GlobalVariable,  Zone_3_State;

EnergyManagementSystem:Actuator,  ZONE_1_AIR_Mdot,
ZONE1AIR,Ideal Loads Air System,Air Mass Flow Rate;
EnergyManagementSystem:Actuator, ZONE_2_AIR_Mdot,
ZONE2AIR,Ideal Loads Air System,Air Mass Flow Rate;
EnergyManagementSystem:Actuator, ZONE_3_AIR_Mdot,
ZONE3AIR,Ideal Loads Air System,Air Mass Flow Rate;

EnergyManagementSystem:Sensor,
RESISTIVE ZONE,! Output:Variable or Output:Meter Index Key Name
Zone Predicted Sensible Load to Setpoint Heat Transfer Rate; ! Var Name

EnergyManagementSystem:Sensor,
Zone Predicted Sensible Load to Setpoint Heat Transfer Rate; ! Var Name