Application Guide for EMS — EnergyPlus 23.1

<< Prev | Table of Contents | Next >>

Example 12. Variable Refrigerant Flow System Override[LINK]

Problem Statement[LINK]

The variable refrigerant flow heat pump air conditioner has several available thermostat control options. These operation control schemes may not provide the type of control desired. How can we use a simple EMS addition to an input file that can override the specified thermostat control logic and set an alternate mode of operation?

EMS Design Discussion[LINK]

Depending on the type of thermostat control logic, the EnergyPlus program will review the loads in each zone, the number of zones in cooling or heating, the deviation from set point temperature, etc. to determine the mode of operation for the heat pump condenser. Alternate control logic may be developed to more accurately reflect the operation of a specific manufacturers product, or investigate other control techniques. This control logic may be added to an input file and used as the operating control logic of the heat pump.

This simple example shows how to use EMS actuators to SET the operating mode and cause a specific terminal unit to operate at a specified part-load ratio (PLR). When setting the terminal unit PLR, the terminal unit will turn on only if the condenser is allowed to operate according to the minimum and maximum outdoor temperature limits.

EMS Input Objects[LINK]

The main input objects that implement this example are the variable refrigerant flow actuators that control the VRF system and specific terminal unit. Note that the terminal unit PLR can be controlled without controlling the mode of the VRF condenser, however, the specific terminal unit will operate in whatever mode the existing operation control scheme chooses. This example program simply “sets” the operating mode and PLR, other more complex control algorithms can be developed by the user as needed.

Output:EnergyManagementSystem,
    Verbose,                 !- Actuator Availability Dictionary Reporting
    Verbose,                 !- Internal Variable Availability Dictionary Reporting
    Verbose;                 !- EMS Runtime Language Debug Output Level


  EnergyManagementSystem:ProgramCallingManager,
    VRF OnOff Management,     !- Name
    InsideHVACSystemIterationLoop,  !- EnergyPlus Model Calling Point
    VRFControl;               !- Program Name 1


  EnergyManagementSystem:Program,
    VRFControl,               !- Name
    SET VRF_Actuator_OnOff = VRF_Status_Heating, !- Program Line 2
    SET VRF_TerminalUnit1_PLR = 0.5;


  EnergyManagementSystem:Actuator,
    VRF_Actuator_OnOff,       !- Name
    VRF Heat Pump,            !- Actuated Component Unique Name
    Variable Refrigerant Flow Heat Pump,      !- Actuated Component Type
    Operating Mode;           !- Actuated Component Control Type


  EnergyManagementSystem:Actuator,
    VRF_TerminalUnit1_PLR,    !- Name
    TU1,                      !- Actuated Component Unique Name
    Variable Refrigerant Flow Terminal Unit,  !- Actuated Component Type
    Part Load Ratio;          !- Actuated Component Control Type


  EnergyManagementSystem:OutputVariable,
    Erl VRF Control Status,   !- Name
    VRF_Actuator_OnOff,       !- EMS Variable Name
    Averaged,                 !- Type of Data in Variable
    SystemTimeStep;           !- Update Frequency


  Output:Variable,*,Erl VRF Control Status, detailed;
  Output:Variable,*,VRF Heat Pump Operating Mode, detailed;
  Output:Variable,*,Cooling Coil Runtime Fraction, detailed;
  Output:Variable,*,Heating Coil Runtime Fraction, detailed;


  EnergyManagementSystem:ProgramCallingManager,
    Init VRF Control Mode Constants,  !- Name
    BeginNewEnvironment,           !- EnergyPlus Model Calling Point
    InitializeVRFControlModes;     !- Program Name 1


  EnergyManagementSystem:Program,
    InitializeVRFControlModes,     !- Name
    Set VRF_Status_Off = 0.0,      !- Program Line 1
    Set VRF_Status_Cooling = 1.0,  !- Program Line 2
    Set VRF_Status_Heating = 2.0;  !- Program Line 3


  EnergyManagementSystem:GlobalVariable,
    VRF_Status_Off,                !- Erl Variable 1 Name
    VRF_Status_Cooling,            !- Erl Variable 2 Name
    VRF_Status_Heating;            !- Erl Variable 3 Name