### BACnet PID NOTE A control program with this microblock works only with v5.2 or later systems and v4.x or later drivers. This microblock cannot be used in a control program for a Room Controller, S6104, UNI, or M line controller. The information below provides a FULL description of this microblock and all of its properties. What information you see and what you can do with it depends on your license and the application you are in, and in some cases, a controller's driver version.
Microblock family | Convert microblocks
Icon and symbol | NOTE The microblock's appearance depends on which options you select in the EIKON® application. The figure above includes all options.
What it does | PID (Proportional, Integral, Derivative) loops use industry standard algorithms to calculate an appropriate response for controlling a physical output, based on the equipment's setpoint and the input. The BACnet PID microblock calculates 3 values: a proportional value, integral value, and derivative value. These 3 values, together with the Bias, create an output percentage that increases or decreases as the input changes from the setpoint depending on the PID action selected.
Click for details below How it works Limitations Inputs and outputs Properties BACnet Object Details Trends BACnet object property addresses
#### How it works PID (Proportional, Integral, Derivative) loops use industry standard algorithms to calculate an appropriate response for controlling a physical output, based on the equipment's setpoint and the input. The PID microblock calculated 3 values: a proportional value, integral value, and derivative value. These 3 values are added together with the Bias to create an output percentage that increases or decreases as the measured value varies from the setpoint. The PID output is recalculated every Interval, determined by the user. Deadband Specify a Deadband to prevent the PID controller from making small adjustments to the output when input values are close to setpoint. Once the control program drives the input value to setpoint, it will pause the PID calculations and maintain the output until the difference between the setpoint and input is greater than the Deadband. Calculate Continuously Conventional PID controls update all 3 terms at the same time; at the time Interval specified. Selecting Calculate Continuously allows the Proportional term to be updated continuously instead of each interval. This prevents the Integral term from building up too quickly (windup) if the system reacts slowly, especially if there is a long delay between when the control output changes and when the system begins to reactThis allows the output to change enough to calculate a meaningful Derivative term between updates. The Proportional term does not depend on the interval and there is usually no reason to wait between intervals to update. The Calculate Continuously option often provides better control over a conventional PID loop. Pause Locks the output to its current value when Pause input is on. Allows external logic to implement a deadband or otherwise pause PID calculations based on system performance. Pause is only available as an optional wire input, if not selected, no Pause property is visible on the Properties page. Proportional The Proportional term generates an output signal that varies based on how far the input is from the setpoint. Error is calculated as the difference between the setpoint and the input. A larger error value produces a larger output. A Proportional Gain value determines how responsive the output is to the error; higher gains increase system response to the error. The Proportional term is calculated each interval using the following formula. Integral The Integral term reduces the Error the longer the input is different from the setpoint. The accumulated error is looked at over time and the output is adjusted to eliminate this error. The Integral Gain value determines how responsive the output is to the error; higher gains increase system response to the error. The Integral term is calculated each interval using the following formula. Derivative The Derivative term varies based on the change in the Error, slowing the rate of change as the input gets closer to the setpoint. This reduces overshoot. A larger change will result in a greater response. A Derivative Gain value determines how responsive the output is to the error; higher gains increase system response to the error. The Derivative term is calculated at each interval using the following formula. Bias The Bias value is added to the proportional, integral, and derivative values calculated by the microblock to create the final output value. Bias can be viewed as a starting point for the calculation. Ramp Time The minimum allowable time (seconds) that the Output can change from 0 to 100%. This effectively "ramps" the Output to prevent the PID term from changing faster than a control actuator can modulate a valve, damper, or other controlled device. The Min Ramp Time setting limits the Integral term so it will not build up faster than the actuator can respond. If your system has a slow actuator, set this property equal to the actuator stroke time. Otherwise, set it to zero to disable this feature.
#### Limitations Expected Output values may differ from calculated values due to the microblocks limitations. The Output: Can never be less than 0% or more than 100%. Is limited by the physical devices that are being controlled. Transition times for physical devices may be slower than the calculated times. If the calculated values cause the Output to be less than 0% or more than 100%, the calculated Integral term may be restricted to keep it from building up too fast; this is commonly called "anti-windup". Is limited by the minimum ramp time.
#### Inputs and outputs Inputs
Go | When the microblock's Go input is on, the output is enabled. When the Go input is off, the output value is 0.
Setpt | The desired zone temperature.
In | The current zone temperature.
Optional Inputs
Pause Proportional Integral Derivative Bias Interval Ramp Time | Check the optional functionality that you want this microblock to have. See "How it works" for a description of each input. Selecting these inputs allows the value to be automatically adjusted by control program logic. Optional inputs selected in the EIKON® application change the values within the microblock to read only. Optional inputs selected are not editable on the Properties page. The microblock must be network visible for BACnet to write to these properties.
Outputs
Out | The current calculated output value (%).
#### Properties TIPS Alt+click any value in the WebCTRL® or Field Assistant interface to view property details, including its editing privilege and expression (location path) for use on graphics. You can right-click some properties in the EIKON® Property Editor and select Make editable or Make read-only to determine that property's functionality in your system.
Name | The microblock label used in the EIKON® application and the WebCTRL® interface. You can use any characters except the " character.
Reference Name RefName | Use the default reference name unless you want a more descriptive name for graphics or network links. Limitations: lower case only limited to 40 characters cannot begin with a number must be unique within a control program
Description | (optional) A BACnet-visible microblock description.
Editing Privilege | Preset - Each microblock property has an appropriate privilege or role assigned to it. You can use Global Modify in the WebCTRL® interface to find out what the actual privilege is. CAUTION If you change the Editing Privilege from Preset, the privilege you select will be used for all properties of this microblock, which is not always desirable.
Loop
Action | Direct action • Used in cooling applications. • The Output increases when the Input is greater than the Setpoint. • The Output is proportional to the Error value. • The Error is calculated as (Input - Setpoint). Reverse action • Used in heating applications. • The Output decreases when the Input is greater than the Setpoint. • The Output is inversely proportional to the Error value. • The Error is calculated as (Setpoint - Input).
Dead Band | A range in which the input may vary from the Setpoint before the Output is updated. EXAMPLE If Setpoint = 75° and Deadband = 2, the Input will vary between 73°-77°. NOTE Once the Input falls outside the Deadband, it must reach or exceed the Setpoint value before the Output is paused again.
Update Interval | Determines how often the microblock calculates the Output value.
Bias | The Bias value is added to the Proportional, Integral, and Derivative values calculated by the microblock to create the final Output value. The Bias can be viewed as a starting point for the calculation.
Min Ramp Time to transition between 0 and 100% | The minimum allowable time (seconds) that the Output can change from 0 to 100% to allow for physical devices to travel from its fully open to its fully closed position. This is also the minimum allowable time for the Output to change from 100% to 0.
Gain
Proportional | You can define P-gain by entering a value in this field as described below or by entering a value in the Input range field. Entering a value in either field automatically sets the other field. The Proportional gain (P-gain) value is used to calculate the proportional component of the routine. This component increases in direct proportion to the difference between the setpoint and the input. When the input goes up, the proportional component goes up. If you define only the P-gain portion of the PID microblock, the microblock's output value could cause the input to oscillate around the setpoint or possibly to never reach the setpoint (if the P-gain is too low). The proportional value is calculated using the following formula: P = Error x P-gain. For example, in a Direct Acting PID loop, if the P-gain is 20, the setpoint is 65, and the current temperature is 67, the proportional value is 40. If the P-gain is 20, the setpoint is 65, and the current temperature is 70 or higher, the proportional value is 100%. So the proportional output increases from 0 to 100% as the input changes from 0 to 5 degrees away from setpoint. The EIKON® application sets the Input range field to 100/20 = 5.
Input range | You can define P-gain by entering a value in this field as described below or by entering a value in the Proportional field. Entering a value in either field automatically sets the other field. In this field, specify the range for the input that will cause the P output to vary from 20% to 100%. For example, if you need to maintain temperatures ±2 from setpoint, enter 2. The EIKON® application sets the Proportional field to 100/2 = 50.
Calculate continually | Updates the PID output based on instantaneous calculation of Proportional value regardless of Update interval.
Integral | The Integral gain (I-gain) value is used to calculate the integral component of the PID routine. The integral value accounts for the amount of time that the input and the setpoint have been different. The longer the input and setpoint are different, the larger the integral value becomes. The integral value is calculated as follows: I = Previous I value + [Error x I-gain] For example, if the I-gain is 2, the setpoint is 65, and the current temperature is 67, the integral value for the first interval will be 4. If at the end of the second interval the temperature is still 67, the integral value will increase to 8.
Derivative | The Derivative gain (D-gain) value attempts to control the rate at which the input is brought to Setpoint in order to prevent the Setpoint from being exceeded. This value uses information from the current and previous intervals and is calculated using the following formula: D = [(Error)current - (Error)previous] x D-gain. For example, if the D-gain is 3, the Setpoint is 65, and the current temperature is 67, the Derivative value for the first interval is 6 ([2 - 0] x 3 = 6). If at the end of the second interval the temperature is still 67, the Derivative value will decrease to 0 ([2 - 2] x 3 = 0). The microblock's output percentage uses all three components as follows: Output (%) = Bias + P + I + D. The Bias is set on the microblock dialog or the Properties page. Using the examples listed for each component above and assuming a Bias value of 0, the Output value of the PID microblock for the first interval would be 50; for the second interval the value would be 48.
Property Page Text
Show Property Page Text | Check to show this microblock's value on the equipment's Properties page.
Property Page Text | You can edit the microblock description that appears on the Properties page. See "Editing Properties page text using special characters" and "Formatting a microblock property" in EIKON® Help.
#### BACnet Object Details Object Instance
Loop Setpoint Input PID Out | Auto-assign SiteBuilder assigns a BACnet Object ID to the Loop, Setpoint, Input, and PID Out objects when you attach the control program to a controller. Use specific value Manually enter BACnet ID's (0 to 3999999) to these objects if you need specific ID's. You must assign numbers that are unique within the controller. Enter the numbers in the Loop, Setpoint, Input, and PID Out fields. NOTE The Loop Object ID is the ID used for the BACnet PID microblock. The Setpoint, Input, and PID Out Object ID's are provided for compatibility with third party BACnet systems that use external references for these values.
Network Visible | Check to allow other BACnet equipment to read or change the microblock's present value. Must be checked for this microblock to generate alarms.
BACnet Writable | Check to control these parameters with BACnet commands.
Units
Setpoint and Input | The BACnet engineering unit of measurement of the microblock's present value.
COV Increment
Setpoint Input PID Output | An Analog Network Input (ANI) that references this microblock in its Address field tries to subscribe to this microblock's COV (Change of Value) service. If subscription succeeds, the ANI receives a value from this microblock only when this microblock's present value changes by at least the COV Increment. If subscription fails, the ANI reads this microblock's value at intervals specified in the ANI's Refresh Time field.
#### Trends
Enable Trend Log | Select to have the controller collect analog trend data for the present values of the Setpoint, Input, and PID Output objects. It will also collect binary trend data for the Loop object (On = in control, Off = not in control). The loop is considered to be in control if it is actively controlling the output, meaning the GO input is on, the loop is not paused or overridden, and the input is not within the deadband.
Sample every ___ (hh:mm:ss) | Records the microblock's present value at this interval. EXAMPLE Type `00:10:00` to record the microblock's present value every 10 minutes.
Sample on COV (change of value) | Records the microblock’s present value only when the value changes by at least the COV Increment.
Max samples | The number of data samples the controller allocates memory for. Memory consumption is 10 bytes for each sample plus 48 bytes. For example, for 100 samples: (100 x 10 bytes) + 48 = 1048 bytes of memory The allocated memory is constant regardless of how many samples are actually recorded. If you do not enable trending, no memory is consumed. NOTE Click Reset on the microblock's Properties page in the WebCTRL® or Field Assistant system to delete all samples currently stored in the controller.
Enable Trend Historian | Check this field to archive the controller's collected trend data to the system database after every 129 data samples. NOTES You must check Enable Trend Log if you want to Enable Trend Historian. You can change Enable Trend Historian archival settings and other trend properties on the Properties page in the WebCTRL® or Field Assistant system.
Keep historical trends for __ days | This is based on the date that the sample was read. Set this field to 0 to use the system default value.
Write to historian: Every ___ trend samples Use default (45% of Max samples) | Writes all trend data in the controller to the system database each time the controller collects the specified number of samples. You can select Every __ trend samples and enter a number greater than zero and less than the number in the Max samples field, or you can select Use default. The number of trends specified must be accumulated at least once before the historical trends can be viewed.
In the WebCTRL® or Field Assistant system only: |
Stop When Full | Check this field to stop trend sampling when the maximum number of samples is reached.
Enable trend log at specific times only? | Collects trend data for the specific period of time you define in the time and date fields.
Store Trends Now | Writes all trend data in the controller to the system database without having to enable trend historian.
Trend samples accumulated since last notification | Shows the number of samples stored in the controller since data was last written to the database.
Last Record Written to Historian | Shows the number of trend samples that were last written to the database.
Delete | Deletes all trend samples stored in the database for the microblock.
BACnet Configuration | The Object Name is a unique alphanumeric string that defines the BACnet object. Although the Object Name field can be edited, it is not recommended. The Notification Class is set to 1 to receive alarms generated by Automated Logic® controllers.
#### BACnet object property addresses Parameter and Status The BACnet PID microblock is a BACnet Loop Object (object type 12). A complete description of the properties of this object is documented in the ASHRAE BACnet Handbook. The following is a subset of those properties that are most useful for graphics, touchscreens, BACview® screens, and third-party BACnet access. Gains and other values can be optionally configured as wire inputs and are read only.
Property Name | Property ID | Units | Read/Write
Present_value | 85 | 0-100% | Read only
Update Interval | 118 | Msec | R/W unless input on wire
Action | 2 | Text Toggle | Read only from the WebCTRL® application R/W through BACnet CAUTION Changing the action at runtime (from direct to reverse or from reverse to direct) could produce unwanted and possibly dangerous conditions in your system.
Proportional Gain | 93 | None | R/W unless input on wire
Integral Gain | 49 | None | R/W unless input on wire
Derivative Gain | 26 | None | R/W unless input on wire
Bias | 14 | 0-100% | R/W unless input on wire
The format for a BACnet address is bacnet://device/object/property@priority. EXAMPLE To set up a microblock to read the Deadband from the BACnet PID microblock in the same controller, use the following address. bacnet://this/12:1/4164 In the above address, 12:1 indicates the first instance of a BACnet PID microblock in the controller. The following refinements to the standard PID algorithm are not part of the standard BACnet Loop Object but can be accessed as BACnet Proprietary Objects.
Property Name | Property ID | Units | Read/Write
Continuous Proportional | 4163 | Binary | R/W
Deadband | 4164 | Same as input | R/W
Min Ramp Time | 4165 | Seconds | R/W