Example 13. Surface Construction Actuator for Thermochromic Window[LINK]
There are a variety of novel new technologies for dynamic thermal envelopes that are the subject of research and development. Can we use EMS to investigate dynamic envelope technologies?
EMS Design Discussion[LINK]
As an example, we will show how to use the EMS to replicate a thermochromic window. EnergyPlus already has a dedicated model for thermochromic windows (see the input object WindowMaterial:GlazingGroup:Thermochromic) that is demonstrated in the example file called ThermochromicWindow.idf. For this EMS example we will start with that file, remove the WindowMaterial:GlazingGroup:Thermochromic and emulate the thermochromic window using the EMS actuator called “Surface” with the control type “Construction State."
The first step is to create the individual Construction objects that will represent the individual states. The original thermochromic example file already includes a series of WindowMaterial:Glazing input objects that correspond to the properties of the thermochromic glazing at different temperatures. These glazing layers are then used in a series of Construction objects that represent the entire glazing system description at each temperature “state.” Separate EnergyManagementSystem:ConstructionIndexVariable objects are then added for each Construction to setup Erl variables that point to each construction.
The control algorithm is very simple. The temperature of the glazing is used in a long IF-ELSEIF-ELSE-ENDIF block to select the appropriate construction to assign the surface. In this case the native thermochromic model has an important advantage in that the dedicated model can access the temperature of the middle pane in a triple glazed window whereas the EMS model can only access the temperature of the outside pane or the inside pane. Here we use the temperature of the outside face of the surface because it is closer to the temperature of the middle pane (which can be much higher when in direct sun).
EMS Input Objects[LINK]
The main input objects that implement this example of EMS-based thermochromic glazing system are listed below. The surface called “Perimeter_ZN_1_wall_south_Window_1” is the one being actuated by EMS and we can observe the outcomes of the override by reporting the output variable called Surface Construction Index. See the example file called EMSThermochromicWindow.idf.
Construction, TCwindow_25, !- Name Clear3PPG, !- Outside Layer AIR 3MM, !- Layer 2 WO18RT25, !- Layer 3 AIR 8MM, !- Layer 4 SB60Clear3PPG; !- Layer 5 EnergyManagementSystem:ConstructionIndexVariable, TCwindow_25, TCwindow_25; Construction, TCwindow_27, !- Name Clear3PPG, !- Outside Layer AIR 3MM, !- Layer 2 WO18RT27, !- Layer 3 AIR 8MM, !- Layer 4 SB60Clear3PPG; !- Layer 5 EnergyManagementSystem:ConstructionIndexVariable, TCwindow_27, TCwindow_27; <<SNIPPED states between 27C and 80C>> Construction, TCwindow_80, !- Name Clear3PPG, !- Outside Layer AIR 3MM, !- Layer 2 WO18RT80, !- Layer 3 AIR 8MM, !- Layer 4 SB60Clear3PPG; !- Layer 5 EnergyManagementSystem:ConstructionIndexVariable, TCwindow_80, TCwindow_80; Construction, TCwindow_85, !- Name Clear3PPG, !- Outside Layer AIR 3MM, !- Layer 2 WO18RT85, !- Layer 3 AIR 8MM, !- Layer 4 SB60Clear3PPG; !- Layer 5 EnergyManagementSystem:ConstructionIndexVariable, TCwindow_85, TCwindow_85; EnergyManagementSystem:Sensor, Win1_Tout, Perimeter_ZN_1_wall_south_Window_1, Surface Outside Face Temperature; EnergyManagementSystem:Actuator, Win1_Construct, Perimeter_ZN_1_wall_south_Window_1, Surface, Construction State; EnergyManagementSystem:ProgramCallingManager, My thermochromic window emulator, BeginTimestepBeforePredictor, ZN_1_wall_south_Window_1_Control; EnergyManagementSystem:Program, ZN_1_wall_south_Window_1_Control, IF Win1_Tout < = 26.0 , Set Win1_Construct = TCwindow_25, ELSEIF Win1_Tout < = 28.0 , SEt Win1_Construct = TCwindow_27, ELSEIF Win1_Tout < = 30.0 , SET Win1_Construct = TCwindow_29, ELSEIF Win1_Tout < = 32.0 , SET Win1_Construct = TCwindow_31, ELSEIF Win1_Tout < = 34.0 , SET Win1_Construct = TCwindow_33, ELSEIF Win1_Tout < = 36.0 , SET Win1_Construct = TCwindow_35, ELSEIF Win1_Tout < = 38.0 , SET Win1_Construct = TCwindow_37, ELSEIF Win1_Tout < = 40.0 , SET Win1_Construct = TCwindow_39, ELSEIF Win1_Tout < = 42.0 , SET Win1_Construct = TCwindow_41, ELSEIF Win1_Tout < = 44.0 , SET Win1_Construct = TCwindow_43, ELSEIF Win1_Tout < = 47.5 , SET Win1_Construct = TCwindow_45, ELSEIF Win1_Tout < = 52.5 , SET Win1_Construct = TCwindow_50, ELSEIF Win1_Tout < = 57.5 , SET Win1_Construct = TCwindow_55, ELSEIF Win1_Tout < = 62.5 , SET Win1_Construct = TCwindow_60, ELSEIF Win1_Tout < = 67.5 , SET Win1_Construct = TCwindow_65, ELSEIF Win1_Tout < = 72.5 , SET Win1_Construct = TCwindow_70, ELSEIF Win1_Tout < = 77.5 , SET Win1_Construct = TCwindow_75, ELSEIF Win1_Tout < = 82.5 , SET Win1_Construct = TCwindow_80, ELSE , SET Win1_Construct = TCwindow_85, ENDIF; Output:Variable, Perimeter_ZN_1_wall_south_Window_1, Surface Construction Index, timestep;