Question-and-Answer Resource for the Building Energy Modeling Community
Get started with the Help page
Ask Your Question

Controlling the Demand side Plantloop through the BCVTB-interface

asked 2023-05-10 09:07:14 -0500

Tony Karlsson's avatar

updated 2023-05-10 10:33:12 -0500

We are using Reinforcement Learning with EnergyPlus to optimize the energy demand while keeping temperature comfort. We are currently controlling room temperatures of the 3d-building using a thermostat and the BCVTB-interface.

But instead we want to set the thermostat to a schedule (I know how to do that) but instead control the heating rate of the PlantLoop in kw or C. Is this possible somehow to set this variable using the BCVTB-interface.

My PlantLoop looks like following:

  Hot Water Loop Hot Water Loop,          !- Name
  Water,                                  !- Fluid Type
  ,                                       !- User Defined Fluid Type
  Hot Water Loop Operation,               !- PlantEquipmentOperationSchemes Name
  Hot Water Loop HW Supply Outlet,        !- Loop Temperature Setpoint Node Name
  100,                                    !- Maximum Loop Temperature {C}
  10,                                     !- Minimum Loop Temperature {C}
  autosize,                               !- Maximum Loop Volumetric Flow Rate {m3/s}
  0,                                      !- Minimum Loop Volumetric Flow Rate {m3/s}
  autosize,                               !- volume of the plant loop {m3}
  Hot Water Loop HW Supply Inlet,         !- Plant Side Inlet Node Name
  Hot Water Loop HW Supply Outlet,        !- Plant Side Outlet Node Name
  Hot Water Loop HW Supply Side Branches,  !- Plant Side Branch List Name
  Hot Water Loop HW Supply Side Connectors,  !- Plant Side Connector List Name
  Hot Water Loop HW Demand Inlet,         !- Demand Side Inlet Node Name
  Hot Water Loop HW Demand Outlet,        !- Demand Side Outlet Node Name
  Hot Water Loop HW Demand Side Branches,  !- Demand Side Branch List Name
  Hot Water Loop HW Demand Side Connectors,  !- Demand Side Connector List Name
  Sequential,                             !- Load Distribution Scheme
  ,                                       !- AvailabilityManagerAssignmentList
  SingleSetpoint;                         !- Plant Loop Demand Calculation Scheme
edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2023-05-12 05:58:23 -0500

If you can set the heating rate of the plant loop using EnergyPlus Schedule (Compact), EMS Actuator, or EMS GlobalVariable, then yes you can change this variable using the BCTVB. I suggest first removing the external interface objects from your IDF file and seeing if you can set the heating rate using any of the aforementioned objects. If that works, then substitute the object with the corresponding external interface object. Please check the Input/Output reference to learn more about the external interface variables.

edit flag offensive delete link more

answered 2023-06-15 02:53:19 -0500

Tony Karlsson's avatar

Thanks for your answer. Now I did add a EMS Actuator and controlled it using the BCTVB interface but I am seeing some strange behaivour. The heating is only positive until April, then the reported heating consumption seems to be zero, as if the building is heating itself, using the "Supply Side Heating Demand Rate" as output variable.


  <variable source="Ptolemy">
    <EnergyPlus actuator="PumpFlowOverride" />
    <EnergyPlus name="HOT WATER LOOP HOT WATER LOOP" type="Plant Supply Side Heating Demand Rate"/>

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

    PumpFlowOverrideAct,        !- Name
    Hot Water Loop HW Supply Pump,  !- Actuated Component Unique Name
    Pump,                    !- Actuated Component Type
    Pump Mass Flow Rate;     !- Actuated Component Control Type

    PlantLoop Flow Management,  !- Name
    InsideHVACSystemIterationLoop,  !- EnergyPlus Model Calling Point
    PlantLoopControl;            !- Program Name 1

    PlantLoopControl,            !- Name
    SET PumpFlowOverrideAct = PumpFlowOverride;  !- Program Line 1

image description

edit flag offensive delete link more

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Training Workshops


Question Tools

1 follower


Asked: 2023-05-10 09:07:14 -0500

Seen: 59 times

Last updated: Jun 15 '23