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

Revision history [back]

  1. My go-to when I'm working on a new implementation in EnergyPlus is to reference the example files. ASHRAE901_OfficeLarge_STD2019_Denver_Chiller205.idf uses EMS to override the setpoint temperatures at various nodes. One important thing to note is that the program is being run inside the HVAC system iteration loop (EnergyPlus Model Calling Point is InsideHVACSystemIterationLoop). If your System Node Setpoint Temperature Output:Variable for your controlled node is reflecting your calculated values, then you are setting the node setpoint correctly.
  2. If your implementation is not controlling to your node setpoints, it suggests that your components may be controlled by something other than a setpoint. Coils inside a ZoneHVAC or AirLoopHVAC:Unitary object are usually controlled by loads, not setpoints. Coil:Heating:Water and Coil:Cooling:Water that are listed on an AirLoopHVAC supply branch will each have a Controller:WaterCoil that specifies both a sensor and actuator node. Similarly, CoilSystem:Cooling:DX and CoilSystem:Heating:DX have sensor nodes. SetpointManagers are only effective if there is equipment that can respond to them. There are similar options on the plant side. If you share exactly what equipment you're trying to control, I can give you more specific suggestions.
  3. If you follow the advice in #1, you should be all set.
  4. When nodes have no flow, they may continue to show the temperature at the last timestep when there was flow. This is a common occurance in EnergyPlus. No flow = no energy transfer = it doesn't matter what the temparature is.

As an aside - lots of applications that use Python / EMS can also be achieved by pre-calculating schedule values and then storing them in a Schedule:File object. This approach is much easier to troubleshoot and achieves faster runtimes.


Want a better way to visualize, create and interact with EnergyPlus files? Give EP3 a try.

  1. My go-to when I'm working on a new implementation in EnergyPlus is to reference the example files. ASHRAE901_OfficeLarge_STD2019_Denver_Chiller205.idf uses EMS to override the setpoint temperatures at various nodes. One important thing to note is that the program is being run inside the HVAC system iteration loop (EnergyPlus Model Calling Point is InsideHVACSystemIterationLoop). If your System Node Setpoint Temperature Output:Variable for your controlled node is reflecting your calculated values, then you are setting the node setpoint correctly.
  2. correctly.
    1. If your implementation is not controlling to your node setpoints, it suggests that your components may be controlled by something other than a setpoint. Coils inside a ZoneHVAC or AirLoopHVAC:Unitary object are usually controlled by loads, not setpoints. Coil:Heating:Water and Coil:Cooling:Water that are listed on an AirLoopHVAC supply branch will each have a Controller:WaterCoil that specifies both a sensor and actuator node. Similarly, CoilSystem:Cooling:DX and CoilSystem:Heating:DX have sensor nodes. SetpointManagers are only effective if there is equipment that can respond to them. There are similar options on the plant side. If you share exactly what equipment you're trying to control, I can give you more specific suggestions.
    2. If you follow the advice in #1, you should be all set.
    3. When nodes have no flow, they may continue to show the temperature at the last timestep when there was flow. This is a common occurance in EnergyPlus. No flow = no energy transfer = it doesn't matter what the temparature is.

As an aside - lots of applications that use Python / EMS can also be achieved by pre-calculating schedule values and then storing them in a Schedule:File object. This approach is much easier to troubleshoot and achieves faster runtimes.


Want a better way to visualize, create and interact with EnergyPlus files? Give EP3 a try.