Continuando el artículo anterior, vamos a ver las funcionalidades extra que añade DesignBuilder para la utilización del EMS dentro del desarrollo de los modelos de simulación en el programa.
Escribir un script EMS puede resultar realmente pesado cuando estamos trabajando sobre un modelo con gran número de componentes (sean zonas, sistemas, etc.) sobre los que queremos actuar.
En este caso, nos encontramos con que tenemos que generar múltiples sensores y actuadores similares (cambiando el nombre y la referencia al componente) así como escribir líneas muy parecidas en el código del programa.
A continuación voy a comentar los extras que añade DesignBuilder para facilitarnos la labor de introducir código EMS en nuestros modelos.
El EMS de DesignBuilder
La primera ayuda que nos trae DesignBuilder consiste en diferentes diálogos donde nos ofrece todos los posibles elementos disponibles en nuestro modelo que podremos utilizar en nuestro programa EMS (sensores, actuadores, variables internas…). Algo realmente práctico.
La segunda y más importante ayuda que nos ofrece es la extensión del lenguaje de programación del EMS de EnergyPlus para incluir la posibilidad de iterar por diferentes componentes del modelo y generar código EMS para cada uno de ellos. También nos permitirá introducir condiciones a la hora de decidir si procesar o no un determinado elemento.
Esta funcionalidad simplifica el procesamiento de múltiples componentes similares, que nos obligaría a escribir scripts largos y repetitivos en EnergyPlus.
Véamoslo mejor con un ejemplo.
Supongamos que queremos escribir un programa que duplique la ventilación mecánica en:
- Zonas del modelo ocupadas que no tengan activada la ventilación natural.
- Cuando la temperatura interior supere los 25ºC.
- Zonas con el término «Aula» en su nombre.
El código en el editor de EMS de DesignBuilder sería:
Los términos en azul corresponden a la sintaxis incorporada por DesignBuilder y permiten introducir condicionales en función de una característica del modelo de DesignBuilder (NaturalVentilationOn = 0, {ZoneIDFName=Aula}), hacer iteraciones en todas las zonas ocupadas (…) y generar texto que será sustituido en cada iteración por su valor correspondiente ( o ).
En un modelo muy sencillo con 2 aulas sin ventilación natural activada, el script que generaría DesignBuilder y que se escribiría en el idf que simulará EnergyPlus sería:
Todas las posibilidades con las que podemos trabajar vienen explicadas en más detalle en la ayuda de DesignBuilder si bien creo que con el ejemplo que acabo de mostrar se entenderá bastante mejor su funcionamiento.
En la próxima entrega quedará más claro por qué el módulo de DesignBuilder cambio de nombre a Scripting y veremos el gran potencial que nos proporcionará poder automatizar modificaciones en el idf mediante lenguajes de programación como C# o Python.