A Normal Framework plugin that implements ASHRAE Guideline 36 control sequences. Currently, the plugin only handles AHU resets.
Table of Contents
This plugin implements several of the control sequences described in Guideline 36. It can be customized to work in any Normal Framework installation. It also serves as an example for how to write additional sequences.
To install, create a new application and use the Github git url of this repository.
Each sequence is broken down into three separate hooks:
Hook 1: Calculate requests for each zone
This hook takes advantage of the ability of hooks the same logic on multiple equips. For each zone, logic is run to calculate how many requests that zone should send.
Hook 2. Get sum of all requests for each AHU
This hook simply adds up all the requests for each Air Handler and writes them to an Automation Variable for easy tracking.
Hook 3: Reset logic based on total number of requests
This hook implements Trim and Repond logic based on the total number of requests for each air handler. Group Variables can be used to customize the variables for each Air Handler. These Group Variables can be exposed using the Normal Bacnet server.
Hook 1: requests-static-pressure-5.6.8.2.js
Hook 2: reset-static-pressure-5.16.1.js
Hook 3: sp-trim-and-respond.js
Hook 1: requests-supply-air-temp-5.6.8.1.js
Hook 2: reset-supply-air-temp-5.16.2.js
Hook 3: sat-trim-and-respond.js
Users should be able to use this app without many changes to the logic. However, there are certain areas that will need to be customized to meet the needs of your installation.
Importance Multiplier
Requests will automatically be adjusted based on an important multiplier, which can be configured by zone. By default this is specified as an attribute called importanceMultiplier
on the Vav. If a zone should be ignored, set this attribute to 0. If no importance multiplier is specified, it will default to 1.
Point Selection
Depending on your data, you may need to change the points that are selected for each hook. This can be done in the Hook user interface:
See Point Selection Docs for more information.
Class Names
You may need to customize the point selection classnames in your application, depending on how you have modeled your data.
Variables
You may want to add or remove variables based on your aims. For instance, some variables in the Trim and Respond logic are exposed as variables so they can be controlled through another system. You may want to remove this and hardcode the values, or add other more variables.
The Applications Framework offers several tools for troubleshooting applications.
logEvent() method
The logEvent
method on the sdk
object will log the message to stdout (which will show up in the integrated console) as well as the run logs.
module.exports = async ({ sdk }) => {
sdk.logEvent("Hello from Applications!");
};
Runs Menu
Each run of a hook has an overall result (sucess, failure, etc.) as well as logs attached to each run. These logs contain the logEvent
messages.
Time Series
The Time Series tab can be used to track points and variables over time. This is helpful for debugging purposes and validation purposes.
For more information and examples on how to use the Normal Application Framework, please refer to the Documentation