Tridium, Inc. 3951 Westerre Parkway Suite 350 Richmond, Virginia 23233 USA Energy Management Objects APPLICATION ENGINEERING NOTES This note covers the following topics relating to the collection of custom program objects used to perform energy logging and energy management strategies: Sliding Window Demand Calculation • Electric Demand Limiting • Output Load Shed • Setpoint Load Shed • Setpoint Offset (Reset) Control • Optimized Start Stop • Outside Air Optimization • Night Purge Control • Degree Day Calculation. A sample database is available as a supplement to this document and may be used as a guide for configuring applying these objects. • Figure 1 Sample Energy Management objects database open in JDE. Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 1 Sliding Window Demand Calculation Figure 2 The Energy Management objects may also be found individually in your local library. Sliding Window Demand Calculation The SWD simulates a thermal demand meter and calculates the sliding window demand for 5, 15, and 30-minute demand intervals based on an accumulative pulse counter input. It also calculates the total KWH since last reset and the hourly and daily KWH values. The hourly, and daily KWH values can then be logged by a standard analog log object setup to execute on-trigger only. The SWD object fires the hourly and daily triggers to align the KWH data correctly to actual clock values. The pulse input into the SWD object is assumed to be accumulative (not delta pulses) that roll over after reaching the 16 bit limit (65535). The SWD object can be configured to reset all the calculated accumulative values on a preset interval such as at “noon on the first Sunday, every month”. 2 Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Sliding Window Demand Calculation Notes Notes A thermal demand meter measures peak demand using thermal electromechanical components. In proportion to the rate of electrical consumption over a interval such as 15 or 30 minutes, an element in the meter heats up, pushing an indicator to a new demand level position. The utility meter will record the highest average interval rate (KW), which will be billed as the “Demand Charge.” At the end of the billing cycle, peak demand will be read and the demand will be rest to zero for the start of a new billing cycle. The total consumption (KWH) is also totalized by the meter to determine the “Usage Charge.” The sliding window demand calculation object can simulate the thermal demand meter by calculating the average value over an interval. On a normal update frequency, the KW data from the oldest sample is replaced by the KW data from the most recent sample. This constant updating of the KW information every scan is called a “Sliding Window Demand Value.” The highest “Sliding Window” demand reading may be higher than the utility demand since the calculation updates average demand every 2 seconds and the utility meter may be resetting on a fixed or discrete 15 or 30 minute interval. Figure 3 Sliding window demand calculation object example. The Pulse Gen object simulates the real world pulse contact commonly output from the meter. The Pulse Counter object then takes these on/off transitions and provides a output representing a running total. Link these trigger outputs to the execute trigger inputs of the logs to synchronize the data logging. Commands None Properties • • • • • KWHPerPulse—KWH value per pulse, this value is usually noted on the meter or provided by the power company. It is how much power each pulse represents. EnableReset—flag to enable recurring automatic reset DayOfMonth—day of month for recurring automatic reset DayOfWeek—day of week for recurring automatic reset time—Time of day for recurring automatic reset Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 3 Electric Demand Limiting Inputs Inputs • currentPulseCount—link to pulse counter input object to read running total of pulses Outputs • • • • • • • • • • • hourTrigger— trigger for link to Hourly Log. Log object must be set to execute on-trigger dayTrigger— trigger for link to Daily Log. Log object must be set to execute on-trigger resetTime—time of last reset Demand5KW—sliding 5 minute demand KW value Demand15KW—sliding 15 minute demand KW value Demand30KW—sliding 30 minute demand KW value KWH—running consumption KWH value since last reset KWHHourly—running consumption KWH value since last hourly reset KWHLastHour—consumption KWH value for last hour KWHDaily—running consumption KWH value since last daily reset KWHLastDay—consumption KWH value for last day Electric Demand Limiting This Program object provides electrical demand limiting. On each new minute, this object predicts a demand average of a sliding window interval (the length of which is user defined) by combining projected usage with historical samplings and averaging over the interval. The user controls the assumed position (in percentage) within the sliding window. The user may divide the day into three sections, each with its own demand limit. The projected demand is compared to the limit for the current time-of-day to decide whether “shedding” or “reloading” loads is appropriate in a fixed priority. The time, date and value of new demand limits are saved for both this month and the previous month. Notes This object provides an output that can be linked to the Shed Control objects that actually perform the equipment control. A message is output with each calculation to provide an indication of the object's calculated result or recommendation. When reloading from a shed condition the projected demand is must be less than the demand setpoint by greater than at least the value of the power associated with that shed level. For example if the property of shed level 1 is assigned a value of 100 KW, it won’t be restored until the projected demand is at least 100 KW less than the setpoint. Commands Execution of this object can be enabled or disabled (default) either automatically or manually (via right click). 4 Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Electric Demand Limiting Properties Figure 4 Electric Demand Limiting. These objects simulate the pulse meter and summation of those pulses as a total. The EDL object is linked to the pulse total and outputs the number of loads to shed based on the projected demand verses demand setpoint. These objects respond to the load shed request and are covered individually latter in this section. Properties • • • • • • • • • • • billingStartDay—Day that monthly historical values are transferred to last month's values demandInterval—Length of demand interval (default is 15 minutes) percentIntervalElapsed—Percent of demand period that is assumed to have elapsed demandPeriod1Start—Time of the beginning of first demand period demandPeriod2Start—Time of the beginning of second demand period demandPeriod3Start—Time of the beginning of third demand period demandLimitPeriod1—Limit for first demand period determined by demandPeriod1Start demandLimitPeriod2—Limit for second demand period determined by demandPeriod2Start demandLimitPeriod3—Limit for third demand period determined by demandPeriod3Start demandLimitingDeadband—Deadband used in determining whether loads can be restored powerShedLevel[1-32]—Table for power associated with each shed/reload level Inputs powerInput—Linked to the power source representation • predictionEnabled—Allows manual or automatic enabling/disabling of demand prediction • Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 5 Output Load Shed Outputs Outputs • sOut—Linked to Shed Control object (number of levels that should be shed) Output Load Shed This program object provides shed control for binary outputs. It can control outputs representing up to 16 contiguous shed levels, starting from a user specified level. This object receives a shed level value (1-32) from the Electric Demand Limiting (EDL) object which specifies the number of load levels that should be shed. A secondary link can also be made and used as a backup when the primary shed level is not available. It provides an output message that indicates this object's state in reference to the overall demand limiting control scheme. See Figure 4, “Electric Demand Limiting.” Notes The shed levels refer to loads that are linked to each shed level output. As the requested shed level input value increases a corresponding number of shed outputs will change state from auto to false. The output from this object would then link to the priority array of binary output objects that are actually controlling the loads. The base level for shedding provides the starting point in the shed level sequence that this shed object will respond to. For example if the base level for shedding is set to 1, the outputs will correspond to shed levels 1-16. If the base level for shedding is set to 17, the outputs will correspond to shed level 17-32. Multiple output load shed objects can be used for maximum flexibility. Commands Execution of this object can be enabled or disabled (default) either automatically or manually (via right click). Properties • baseLevelForShedding—Specifies the shed level associated with the first control output (pOut1) Inputs shedEnabled—Allows manual or automatic enabling/disabling of shed control • primaryShedLevel—Linked to Demand Monitoring object (number of levels that should be shed) • secondaryShedLevel—Linked to Demand Monitoring object (number of levels that should be shed) • Outputs • 6 pOut[1-16]—Linked to equipment that is to be controlled by demand limiting, typically a BO’s priority array Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Setpoint Load Shed Notes Setpoint Load Shed The Setpoint Load Shed object will provide the application engineer with an easy method of implementing load shedding strategies. In response to a link to a shed level output, a linked setpoint will be raised or lowered by a specific offset depending on wether the mode is heating or cooling. The offset is “added” to the setpoint input so the offset can be either positive or negative. See Figure 4, “Electric Demand Limiting.” Notes Generally this object solves the problem often found in many temperature control sequences where shutting down an output directly may be complicated by other control dependencies. By changing the setpoint based on a shed request, the output is shut down under the direction of the control sequence and the interdependencies are maintained. Commands None. Properties • priorityForWriting—priority at which command is issued Inputs • • • • • shedInhibit—'false' input causes setpoint to be adjusted by offset setpointIn—Setpoint input that will be adjusted by this object htgOffset—Setpoint will be adjusted by this signed (+ or -) amount if active and in heating mode clgOffset—Setpoint will be adjusted by this signed (+ or -) amount if active and in cooling mode modeIn—0 = off; 1 = cooling; 2 = heating Outputs offsetInEffect—Output to indicate if setpointOut has been adjusted • setpointOutStatus—Adjusted setpoint if active otherwise passes through original setpoint • setpointOutPrioritized—Adjusted setpoint if active otherwise passes through original setpoint • Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 7 Setpoint Offset (Reset) Control Notes Setpoint Offset (Reset) Control This object will apply the offset in proportion to the relative value of the shed level input to the shedLevelHighLimit and shedLevelLowLimit properties. See Figure 4, “Electric Demand Limiting.” Notes This object receives a shed level value (1-32) from the Electric Demand Limiting (EDL) object which specifies the number of load levels that it is requesting to be shed. A control setpoint is also linked to this object and gets reset proportionally based on the EDL input. The as the input shed level increases beyond the shed level low limit the effective setpoint output is offset in proportion to the shed level high limit. For example, if the mode is presently cooling, the cooling offset is set to 5 degrees, the shed level low limit is 1 and the high limit is 5. The effective setpoint will increase 1 degree with each level of shed starting at 1, resulting in a setpoint of 76 degrees (at level 5 the setpoint would be 80 degrees). Commands None. Properties shedLevelHighLimit—Shed level for maximum offset • shedLevelLowLimit—Shed level at which offset begins • priorityForWriting—Priority at which command is issued • Inputs • • • • • • shedInhibit—'false' input causes setpoint to be adjusted by offset setpointIn—Setpoint input that will be adjusted by this object htgOffset—Setpoint will be adjusted by this signed (+ or -) amount if active and in heating mode clgOffset—Setpoint will be adjusted by this signed (+ or -) amount if active and in cooling mode modeIn—0 = off; 1 = cooling; 2 = heating shedLevel—Shed level in effect Outputs offsetInEffect—Output to indicate if setpointOut has been adjusted • setpointOutStatus—Adjusted setpoint if active otherwise passes through original setpoint • setpointOutPrioritized—Adjusted setpoint if active otherwise passes through original setpoint • 8 Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Optimized Start Stop Outputs Optimized Start Stop This program uses space temperature, a comfort range and mechanical equipment capacity parameters to calculate the time in advance of a scheduled event that equipment should be started for the space temperature to reach the comfort zone or can be stopped yet remain within the comfort zone at the scheduled event time. The default mechanical equipment capacity parameters are under user control. The actual parameters used for the start/stop calculation may be programmatically adjusted to reflect an analysis of observed results. A message is output for each start and stop command and at the completion of each analysis. For each start and stop command, a trigger output is also activated which could initiate auxiliary control sequences. Figure 5 Optimized Start Stop. Starting in Niagara Build 2.301.330 (and later builds). Right mouse click this object to reset the runtime / drifttime back to user defined values. Prior to Niagara Build 2.301.330. Right mouse click this object to reset the runtime / drifttime back to user defined values. Actually a Composite object containing two Program objects (OSS and TriggerTime). Note As shown in Figure 5 above, the Optimized Start Stop (OSS) program contains multiple objects. Starting in Niagara build 2.301.330 (and later), the use of a Composite object was dropped. The OSS Program was also modified to accommodate a condition in which exceptionally long leadtimes resulted when large heating/cooling factors were multiplied by the difference between the space temperature and its target comfort limit. Prior to the 2.301.330 build version, if the optimum start time (calculated by subtracting the calculated leadtime from the scheduled start time) resulted in a time prior to midnight, the start time comparison failed—and no advance start occurred (that is, ahead of the normal scheduled start time). In the build 2.301.330 (and later builds), the OSS program will now start the equipment at midnight if a pre-midnight start is indicated. Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 9 Optimized Start Stop Notes Notes Operation modes of the updated Optimized Start Stop program are described in the following sections: Start Time • Stop Time • Start Time If the space temperature is outside the range defined by the lower and upper comfort limits, the difference between the space temperature and the closer limit represents the number of degrees the mechanical equipment must make up during the prestart period. The run-time heating or cooling factors (depending on the direction the space temperature must move) are multiplied by the temperature differential to determine the number of run-time minutes required to achieve the comfort limit at occupancy, as defined by the schedule's start time. When the system's time is later than the schedule's time offset by the calculated leadtime, the optimum start outputs will be enabled. If the calculated leadtime is so large that an optimum start time prior to midnight is the result, the optimum start will occur at midnight. It is worthwhile to note that an optimum start will be performed only for the first scheduled start for the day. Stop Time If the space temperature is inside the range defined by the lower and upper comfort limits AND the schedule's status is active, the difference between the space temperature and one of the limits (depending on the mode) represents the number of degrees the temperature can drift between the time the mechanical equipment is stopped and the schedule's inactive event time. The lead-time calculation is similar to the one for Start Time but using the drift-time heating and cooling factors. As a precaution, the mechanical equipment will not be stopped prior to the time specified by the object's earliestStopTime property. Optimum stop will be performed for each of the schedule's inactive events. Commands The determination of heating/cooling mode and enabling/disabling of both start and stop optimization can be done either manually or automatically. Properties • • • • • • • 10 upperComfortLimit—Cooling mode target. lowerComfortLimit—Heating mode target. dynamicParameterAdjust—Controls whether calculation parameters are programmatically adjusted. oldParameterMultiplier—Ratio (x:1) of old calculation parameter to observed change rate in determining new parameter. earliestStopTime—NO stop command will be issued BEFORE this time. drifttimePerDegreeCoolingUserDefined—User-defined default minutes per degree space temp changes when equipment stops in cooling mode. drifttimePerDegreeHeatingUserDefined—User-defined default minutes per degree space temp changes when equipment stops in heating mode. Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Optimized Start Stop Inputs • • • • • • runtimePerDegreeCoolingUserDefined—User-defined default minutes per degree space temp changes when equipment starts in cooling mode. runtimePerDegreeHeatingUserDefined—User-defined default minutes per degree space temp changes when equipment starts in heating mode. drifttimePerDegreeCooling—Minutes per degree space temp changes when equipment stops in cooling mode. drifttimePerDegreeHeating—Minutes per degree space temp changes when equipment stops in heating mode. runtimePerDegreeCooling—Minutes per degree space temp changes when equipment starts in cooling mode. runtimePerDegreeHeating—Minutes per degree space temp changes when equipment starts in heating mode. Inputs • • • • • • • • • controlMode—Determines heating/cooling mode for optimized stop. parameterResetTime—Signals the object to copy the user-defined drifttime and runtime parameters to their corresponding namesakes used for actual control. startEnableDisable—Allows manual or automatic enabling/disabling of optimized start function. stopEnableDisable—Allows manual or automatic enabling/disabling of optimized stop function. nextEventValue—Linked to a schedule for the action for next event. scheduleStatus—Linked to a schedule for the present schedule status. nextEventTime—Linked to a schedule for the time of next event. outsideTemp—Linked to outside temperature (for information only). spaceTemp—Linked to space temperature of area affected by mechanical equipment. Outputs startTimeCommand—Optimized start command linked to controlled equipment. • stopTimeCommand—Optimized stop command linked to controlled equipment. • startTimeTrigger—Provides link for auxiliary sequences at issuance of start command. • stopTimeTrigger—Provides link for auxiliary sequences at issuance of stop command. • Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 11 Outside Air Optimization Notes Outside Air Optimization This object uses the two sets of temperature and humidity inputs to find the air supply with the least amount of heat. The freeCooling output will be set to auto if outside greater than or equal to inside and set to the property freeCoolingCommand if outside less than or equal to inside - (abs)thresholdSpan. The user can select temperature or enthalpy comparisons. There is also a low temperature check to protect against freezing. Figure 6 Outside air optimization. Notes This object is commonly linked to the economizer control sequence to enable free cooling. Free cooling is the process of bringing in outside air and using that air stream as a cooling source in place of, or to supplement mechanical cool. Commands Set outside air low limit to disable free cooling below a specified setpoint. Properties thresholdSpan—Deadband used to prevent toggling • useEnthalpy—“true” if enthalpy is comparison variable • freeCooling—CommandCommand to output when free cooling is available • priorityForWriting—Priority at which command is issued • Inputs • 12 outsideTemp—Outside air temperature Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Night Purge Control Outputs outsideHumidity—Outside air humidity • insideTemp—Inside air temperature • insideHumidity—Inside air humidity • lowTemperatureLimit—User-controlled freeze protection limit • Outputs • • • • • • outsideEnthalpy—Calculated outside enthalpy outsideEnthalpyString—Formatted string to include BTU/lb insideEnthalpy—Calculated inside enthalpy insideEnthalpyString—Formatted string to include BTU/lb freeCooling—Outputs freeCoolingCommand if free cooling is available otherwise, auto is output modeString—String describing object's present mode – “Input error”—bad sensor input – “Input out of range”—enthalpy equal to or less than zero – “Free Cooling”—free cooling is available – “No Free Cooling”—free cooling is not available – “Low temperature”—outside temperature less than lowTemperatureLimit Night Purge Control This object uses the two sets of temperature and humidity inputs to find the air supply with the least amount of heat when the purgeEnabled input is 'true'. The freeCooling output will be set to auto if outside greater than or equal to inside and set to the property freeCoolingCommand if outside less than or equal to inside (abs)thresholdSpan. The user can select temperature or enthalpy comparisons. There is also a low temperature check to protect against freezing. Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 13 Night Purge Control Notes Figure 7 Night purge control. Notes This object is commonly linked to the economizer control sequence to enable free cooling. Free cooling is the process of bringing in outside air and using that air stream as a cooling source in place of, or to supplement mechanical cool. Night purge cycle takes advantage the cooler temperatures at night and provides free cooling in return for additional fan energy for a fan that normally would be off. Commands Set outside air low limit to disable free cooling below a specified setpoint. The purge setpoint also be specified. Properties thresholdSpan—Deadband used to prevent toggling • useEnthalpy—“true” if enthalpy is comparison variable • freeCooling—CommandCommand to output when free cooling is available • priorityForWriting—Priority at which command is issued • Inputs purgeEnabled—Object enable/disable • outsideTemp—Outside air temperature • outsideHumidity—Outside air humidity • insideTemp—Inside air temperature • 14 Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 Degree Day Calculation Outputs insideHumidity—Inside air humidity • nightSetpoint—User-controlled temperature setpoint target • lowTemperatureLimit—User-controlled freeze protection limit • Outputs • • • • • • outsideEnthalpy—Calculated outside enthalpy outsideEnthalpyString—Formatted string to include BTU/lb insideEnthalpy—Calculated inside enthalpy insideEnthalpyString—Formatted string to include BTU/lb freeCooling—Outputs freeCoolingCommand if free cooling is available otherwise, auto is output modeString—String describing object's present mode – “Input error”—bad sensor input – “Input out of range”—enthalpy equal to or less than zero – “Free Cooling”—free cooling is available – “No Free Cooling”—free cooling is not available – “Low temperature”—outside temperature less than lowTemperatureLimit – “Night purge disabled”—purgeEnabled is false – “Setpoint satisfied”—target setpoint was reached – “Night purge complete”—night purge completed but setpoint was not reached – “Temperature inhibited”—outside temperature is greater than inside Degree Day Calculation This program object will perform the math to calculate and degree days for a particular day. A degree day is a unit of measure of recording how hot or how cold it has been over a 24-hour period. The number of degree days applied to any particular day of the week is determined by calculating the mean temperature for the day and then comparing the mean temperature to a base value of 65 degrees F. The mean temperature is calculated by adding together the high for the day and the low for the day, and then dividing the result by 2. If the mean temperature for the day is, say, 10 degrees higher than 65, then there have been 10 cooling degree days. On the other hand, if the mean temperature is, say, 5 degrees lower than the mean temperature then there have been 5 heating degree days. Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003 15 Degree Day Calculation Notes Figure 8 Degree day calculator. Notes None Commands None Properties None Inputs • tempIn—link to outside air temperature Outputs • • • • • 16 minTemp—minimum temperature value since last reset or last midnight maxTemp—maximum temperature value since last reset or last midnight meanTemp—mean temperature value calculated at midnight when the day of week changes clgDegDays—cooling degree days value for yesterday htgDegDays—heating degree days value for yesterday Energy Management Objects Application Engineering Notes Niagara Release 2.3 Revised: January 2, 2003