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

EMS for ERV bypass (free-cooling) control

asked 2019-09-10 15:11:28 -0500

updated 2019-09-29 10:21:29 -0500

Hello,

I was trying to model a controlled mechanical ventilation with heat recovery using ZoneHVAC:EnergyRecoveryVentilator in OpenStudio. For the heat recovery using an Air-To-Air heat exchanger, I want to active the free-cooling mode (bypass) when exhaust air temperature or zone air temperature is higher a set-point temperature. However, with ERV component in OpenStudio Application I cannot do that. Regarding temperature-based control for ERV unit, what I can do is to active the free-cooling when

low limit < Toutdoor < high limit && Toutdoor < Texshaut

Does anyone know if there is anyway to create an EMS for ERV bypass controller based on zone air temperature or exhaust air temperature please?

Thanks a lot

Long

edit retag flag offensive close merge delete

1 Answer

Sort by ยป oldest newest most voted
1

answered 2019-09-14 03:03:46 -0500

It seems that I can control the bypass using a Constant:Schedule

erv_bypass_stp = 24.0
erv_unit = eqpt.to_ZoneHVACEnergyRecoveryVentilator.get          
erv_controller = erv_unit.controller.get

ems_zone_mean_air_temp_sensor = OpenStudio::Model::EnergyManagementSystemSensor.new(model, "Zone Mean Air Temperature")
ems_zone_mean_air_temp_sensor.setName("T_#{thermal_zone.name.to_s}")
ems_zone_mean_air_temp_sensor.setKeyName(thermal_zone.name.to_s)

erv_bypass_onoff = 1 # 0: bypass is off, 1: bypass is on
erv_bypass_onoff_sch = OpenStudio::Model::ScheduleConstant.new(model)
erv_bypass_onoff_sch.setName("ERV_BYPASS_ONOFF_#{thermal_zone.name.to_s}")
erv_bypass_onoff_sch.setValue(erv_bypass_onoff)

erv_controller.setTimeofDayEconomizerFlowControlSchedule(erv_bypass_onoff_sch)

ems_erv_bypass_onoff_actuator = OpenStudio::Model::EnergyManagementSystemActuator.new(erv_bypass_onoff_sch,"Schedule:Constant","Schedule Value")
ems_erv_bypass_onoff_actuator.setName("myERV_BYPASS_ONOFF_SCH_#{thermal_zone.name.to_s}")

ems_erv_bypass_onoff_prg = OpenStudio::Model::EnergyManagementSystemProgram.new(model)
ems_erv_bypass_onoff_prg.setName("ERVBypassONOFFProg_#{thermal_zone.name.to_s}")
ems_erv_bypass_onoff_prg.addLine("SET T_zone_air = #{ems_zone_mean_air_temp_sensor.name}")
ems_erv_bypass_onoff_prg.addLine("IF T_zone_air > #{erv_bypass_stp}")
ems_erv_bypass_onoff_prg.addLine("SET #{ems_erv_bypass_onoff_actuator.name} = 1")
ems_erv_bypass_onoff_prg.addLine("ELSE")
ems_erv_bypass_onoff_prg.addLine("SET #{ems_erv_bypass_onoff_actuator.name} = 0")
ems_erv_bypass_onoff_prg.addLine("ENDIF")

ems_prgm_calling_mngr = OpenStudio::Model::EnergyManagementSystemProgramCallingManager.new(model)
ems_prgm_calling_mngr.setName("ERVBypassONOFFProgCall_#{thermal_zone.name.to_s}")
ems_prgm_calling_mngr.setCallingPoint("BeginTimestepBeforePredictor")
ems_prgm_calling_mngr.addProgram(ems_erv_bypass_onoff_prg)
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

Careers

Question Tools

2 followers

Stats

Asked: 2019-09-10 15:11:28 -0500

Seen: 380 times

Last updated: Sep 14 '19