The Proportional, Integral, and Derivative Control (PID) logic block provides feedback control operation to minimize the error between two inputs by adjusting its Present Value.
Direct acting control is used in applications where an increase in the process variable causes the controller’s Present Value to increase. An example of direct acting control is temperature control with a cooling coil. With reverse acting control (Direct Acting = False), an increase in the process variable causes the controller’s Present Value to decrease.
Examples of reverse acting control include:
-
temperature control with heating coil applications
-
flow rate control applications
-
static pressure control applications
When Manual Tuning is False, Adaptive Tuning is True, and the Saturation Status is Normal, Timing Low, or Timing High, PRAC+ attempts to tune the PID. For all other states of Saturation Status, PRAC+ is off.
See EWMA Diagnostics in the Commissioning a System section.
See the Cooling Proportional Valve v51, Heating Proportional Valve v51, Cooling Staged Outputs v51, and Heating Staged Outputs v51 sections for examples of how this block is used.
- Reliable: Process Variable input is Reliable and no error in PID or PRAC+ algorithm.
- Unreliable: Process Variable input is Unreliable at the start of PID or PRAC+ algorithm.
- Input Out of Range: One or more of the Inputs failed its validation checks.
- Math Overflow: Math overflow during PID algorithm.
- Math Underflow: Math underflow during PID algorithm.
- Divide by Zero: An attempt to divide by zero in PID or PRAC+ algorithm.
- Math Error: Other Math error.
If the Process Variable is unreliable at the time the PID attempts to evaluate its logic (either periodic or due to input change) or an input fails its validation check, that execution of the PID is skipped and the outputs held at their last reliable values. The outputs retain their previous value on internal error. The Reliability of each output of the primitive is set to the Reliability of the block.
If the unreliability exists at the first execution of the PID and a previously reliable value had not been calculated, the outputs of the PID is the default values of those outputs.
The Proportional Band, Integral Time, Derivative Time and Saturation Time have conditions with respect to each other. At runtime if these conditions are not met, the Reliability of the PID block is set to Input Out of Range.
The following table describes the inputs and outputs of the PID logic block.
Name |
Data Type |
Exposed for Connection by Default |
Description |
Default Value |
---|---|---|---|---|
Inputs |
||||
Adaptive Tuning |
Boolean |
No |
Determines if adaptive tuning is allowed to operate. When set to False, adaptive-tuning is disabled. When set to True and the Manual Tuning property is False, PRAC+ is enabled, which may result in runtime changes to the Eff Proportional Band and Eff Integral Time. When Adaptive Tuning is written, there is no change to the Eff Proportional Band and Eff Integral Time. These outputs retain their current value. |
True |
Deadband |
Float |
No |
Sets the Eff Deadband. This value is a band centered around the Setpoint where the error is considered zero (+/- DB/2). |
0.0 |
Derivative Time |
Float |
No |
Sets the Eff Derivative Time when Manual Tuning is True. The Derivative Time must be zero (to disable the derivative action) or must be greater than 10 times the Interval. This derivative term is calculated using a first-order finite-difference filter. For a stable filter, the Derivative Time must be greater than the time constant chosen for the filter. The filter time constant chosen for the PID is 8.0 x Actual Period, but the limit is set for 10 times to give a factor of safety for stability in cases where the Actual Period is greater than the Interval. |
0 Seconds |
Direct Acting |
Boolean |
No |
Signals the action of the PID (True= Direct Acting and False= Reverse Acting). |
True |
High Limit |
Float |
No |
Indicates the maximum value the PID Present Value can assume. If the High Limit is set to a value less than the Low Limit, the block’s Reliability is set to Input Out of Range and the logic continues to use the last reliable pair of values. See description for Low Limit for the behavior when High Limit equals the Low Limit. |
100.0 |
Integral Time |
Float |
Yes |
Sets the initial Eff Integral Time. This value is the time required by the integral action to contribute the same amount to the controller output as the proportional term for a constant error. When Adaptive Tuning is False or Manual Tuning is True, the Integral Time must be zero (to disable the integral action) or must be greater than or equal to 2 times the Interval. The tool prevents you from setting Integral Time to a value less than 2 times the Interval. If Integral Time is written from a Supervisory Device to a value less than 2 times the Interval, the PID Reliability changes to Input Out of Range. When Adaptive Tuning is True and Manual Tuning is False, PRAC+ limits the Eff Integral Time to 30 times the Interval. If Integral Time is written to a value greater than 30 times the Interval, the PID Reliability changes to Input Out of Range. |
729 Seconds |
Interval |
Float |
Yes |
Sets the Eff Period. This value is the time period between normal PID algorithm executions. |
120 Seconds |
Low Limit |
Float |
No |
Indicates the minimum value the PID Present Value can assume. The Low Limit must be less than or equal to the High Limit. If the Low Limit is set to a value greater than the High Limit, the block’s Reliability is set to Input Out of Range and the logic sets the Present Value to the Low Limit; otherwise, the block behaves as if the limits are equal. If the Low Limit is set to the same value as the High Limit, the logic sets the Present Value to this value and calculates the Saturation Status. The Saturation Status calculation is based on the current value for the Setpoint, Process Variable, and Direct Acting inputs (If these inputs are equal, the block’s Reliability is not set to Input Out of Range). When Direct Acting is True, if the Process Variable is less than the Setpoint, the block sets the Saturation Status to Low. If the Process Variable is greater than the Setpoint, the block sets the Saturation Status to High. If the Process Variable is equal to the Setpoint, the Saturation Status is set to Normal. When Direct Acting is False, the opposite behavior occurs (Saturation Status is High if the Process Variable is less than the Setpoint and vice versa). When the limits are equal, the block may execute on any input change or on the block’s normal periodic interval. The Error and Execution Count are updated when the block executes its logic. The diagnostic outputs (EWMAs) are held at their last values. The PRAC function is skipped and the PRAC Status output is set to Normal. |
0.0 |
Minimum Tune Band |
Float |
Yes |
Indicates the region around the Setpoint that the PRAC+ does not attempt to tune. The PID Pre-Processor and PMAC Pre-Processor blocks calculate this value based on the outputs being controlled. The value calculated by these primitives is equal to 0.04 * Process Range for proportional outputs or larger for staged outputs. For custom modules that may manually configure this value yet keep PRAC+ active (Adaptive Tuning = True and Manual Tuning = False), the minimum allowed value is restricted to 0.01* Process Range to prevent PRAC+ from tuning on insignificant fluctuations in the noise of the Process Variable. If the Minimum Tune Band is less than 1% of the Process Range, the PID Reliability changes to Input Out of Range. |
0.88, 1.6 |
Offset |
Float |
No |
Indicates the value added to the sum of the proportional term, integral term, and derivative term used to generate the Present Value. The Present Value equals the Offset when the proportional, integral, and derivative terms are equal to zero. The Offset has no effect for PI or PID control (that is, the Offset’s effect is negated by the bumpless transfer to the Startup Value). |
0.0 |
Process Dead Time |
Float |
Yes |
Indicates the time required for the process to begin to reflect the results of a step change. This value is not currently used by the PID algorithm. |
72 Seconds |
Process Range |
Float |
Yes |
Indicates the magnitude of the range that the Process Variable traverses as the Present Value of the PID varies between its minimum and maximum values. For example, when the Process Variable ranges between 60 and 90 degrees due to the PID Present Value varying from its Low Limit to its High Limit, then Process Range is set to 30 (|60 - 90|). This input must have a value greater than zero. This value is currently used by the PID algorithm to validate that the Minimum Tune Band is less than 1% of the Process Range. If the Minimum Tune Band is less than 1% of the Process Range, the PID Reliability changes to Input Out of Range. |
22.0, 40.0 |
Process Variable |
Float |
Yes |
Indicates the value from the area that is being controlled. The Process Variable typically originates at a sensor and after some signal processing is passed to the PID. |
0.0 |
Proportional Band |
Float |
Yes |
Sets the initial Eff Proportional Band. This value is the amount of change in the Process Variable that produces a full range change (High Limit - Low Limit) in the Present Value. This value must be a positive number, and must be greater than zero. The action is set using the Direct Acting input rather than by the sign of the Proportional Band. |
16.0, 28.8 |
Reset Tuning |
Boolean |
No |
When Reset Tuning is True, causes the PID to reset the Eff Proportional Band and the Eff Integral Time to the values in Proportional Band and Integral Time. While Reset Tuning is True, the Present Value, Absolute Effort EWMA, Absolute Error EWMA, Error EWMA, and Present Value EWMA are not updated. Manual Tuning has no effect on this behavior. When Reset Tuning is False, the PID operates normally. |
False |
Saturation Time |
Float |
Yes |
Sets the Eff Saturation Time. This value is the duration the Present Value must meet or exceed either the Low or High Limit for the saturation status to be set to Low or High. |
720 Seconds |
Setpoint |
Float |
Yes |
Indicates the value in which the PID controls the Process Variable. |
0.0 |
Startup Value |
Float |
No |
Allows this block to get the latest value of the output, Present Value, when the block switches from one hybrid activity control state to the state containing this PID. This value is required for a bump-less transition from one hybrid activity control state to the state containing this PID. If an integration is being used, this value is used to set the Present Value at initial startup and at restart. |
0.0 |
Time Constant |
Float |
Yes |
Indicates the time required for a system to reach 63% of its final magnitude given a 100% step change. This value is not currently used by the PID algorithm. |
720 Seconds |
Outputs |
||||
Absolute Effort EWMA |
Float |
No |
Provides an EWMA value of 100 x ABS (Current Present Value - Last Present Value) / (High Limit - Low Limit). |
0.0% |
Absolute Error EWMA |
Float |
No |
Provides an EWMA value for the absolute value of (Setpoint - Process Variable). |
0.0 |
Eff Integral Time |
Float |
No |
Indicates the value the PID is currently using for the integral tuning value. If Manual Tuning is False and Adaptive Tuning is True, PRAC+ updates this value during execution. If Manual Tuning is True and Adaptive Tuning is False, this value is equal to the Integral Time input. On startup, if Tuning Updated is True, the Eff Integral Time uses the value stored in the PRAC Integral Time property. If Tuning Updated is False and if any of the Proportional Band, Integral Time, Interval, or Saturation Time inputs have received a write since startup, this output is set to the value of the Integral Time input. If none of these inputs have been written, the value of the Eff Integral Time is set based on the following calculation:
|
729.0 Seconds |
Eff Proportional Band |
Float |
No |
Indicates the value the PID is currently using for the proportional tuning value. If Manual Tuning is False and Adaptive Tuning is True, PRAC+ updates this value during execution. If Manual Tuning is True and Adaptive Tuning is False, this value is equal to the Proportional Band input. On startup, if Tuning Updated is True, the Eff Proportional Band uses the value stored in the PRAC Prop Band property. If Tuning Updated is False and if any of the Proportional Band, Integral Time, Interval, or Saturation Time inputs have received a write since startup, this output is set to the value of the Proportional Band input. If none of these inputs have been written, the value of the Eff Proportional Band is set based on the following calculation:
|
16.0, 28.8 |
Error |
Float |
No |
Indicates the difference between the Setpoint and Process Variable (offset by DB/2 if the Eff Deadband is not zero). This value is updated at each execution. |
0.0 |
Error EWMA |
Float |
No |
Provides an EWMA value of the difference (Setpoint - Process Variable). |
0.0 |
Execution Count |
Float |
No |
Indicates the number of executions performed by the PID. This value is incremented by 1 at every execution and is rolled over to 0 after reaching the maximum floating-point value. |
0.0 |
PRAC Status |
Enum |
No |
Indicates the results of the most recent PRAC+ calculation execution:
|
Normal |
Present Value 1 |
Float |
Yes |
Indicates the current output of the PID block. This value is typically passed to an actuator to provide repositioning information or provides the setpoint to another PID block when using cascaded control loops. The Present Value equals the sum of the proportional, integral, derivative, and offset terms. |
0.0 |
Present Value EWMA |
Float |
No |
Provides an EWMA of the current Present Value scaled to a percent where the Percent Present Value = 100.0 x (Present Value - Low Limit) / (High Limit - Low Limit). |
0.0% |
Saturation Status |
Enum |
Yes |
Indicates the current operational status of the PID block. This value is based on the output and the amount of time that the output is at the high or low limits. The Saturation Status is set to Normal the first execution after the PID is Enabled (or Re-Enabled). The Saturation Status is Normal for at least one execution after returning from a non-Normal state. For example, if the Saturation Status is Timing High and the Present Value becomes equal to the Low Limit, the Saturation Status is Normal for one execution before transitioning to Timing Low at the next execution. Note: The Enumeration Set for Saturation Status contains the Overridden state, but the PID does not set this attribute to that value. The Overridden state is used by other applications.
|
Normal |
Properties |
||||
Actual Period 2 |
Float |
N/A |
Indicates the actual instantaneous period of execution, measured as the actual time between successive executions of the PID algorithm. This value is not computed after the first periodic execution (startup, restart, or enable after disable), in which case the value is assigned the value of Eff Period. |
120 Seconds |
Eff Deadband2 |
Float |
N/A |
Indicates the value the PID uses for the Deadband. When Manual Tuning is False, this value is set to zero. Otherwise, this value is set to the value of the configurable Deadband property. |
0.0 |
Eff Derivative Time2 |
Float |
N/A |
Indicates the value the PID uses for the derivative tuning value. When Manual Tuning is False, this value is set to zero. Otherwise, this value is set to the value of the configurable Derivative Time property. |
0 Seconds |
Eff Period2 |
Float |
N/A |
Indicates the value the PID uses for the period. If any of the Proportional Band, Integral Time, Interval, or Saturation Time inputs have received a write since startup, this output is set to the value of the Interval input. If none of these inputs have been written, the value of the Eff Period is set based on the following calculation (rounded to the nearest integer with a minimum of 1):
|
120 Seconds |
Eff Saturation Time2 |
Float |
N/A |
Indicates the value the PID uses for the saturation time limit. When Manual Tuning is False, and if any of the Proportional Band, Integral Time, Interval, or Saturation Time inputs have received a write since startup, this output is set to the value of the Saturation Time input. If none of these inputs have been written, the value of the Eff Period is set based on the following calculation:
Otherwise, this value is set to the value of the configurable Saturation Time property. |
720 Seconds |
Manual Tuning |
Boolean |
N/A |
Indicates whether to use the process-based tuning calculations or the manual tuning properties. When True, the Setpoint Differential is used to decide when a large setpoint change occurs and the Eff Proportional Band, Eff Integral Time, Eff Derivative Time, Eff Saturation Time, and Eff Period are set based on the corresponding configurable properties. When False, these tuning parameters and some additional parameters required by PRAC+ (Eff Min/Max Prop Band) are calculated based on the Process Range, Time Constant, and Process Dead Time. PRAC+ is disabled when Manual Tuning is True. |
False |
PRAC Integral Time 3 |
Float |
N/A |
Stores the last PRAC+ update to the Eff Integral Time. This value is used at startup if Tuning Updated is True. |
729 Seconds |
PRAC Prop Band3 |
Float |
N/A |
Stores the last PRAC+ update to the Eff Proportional Band. |
16.0, 28.8 |
Setpoint Differential |
Float |
N/A |
When the absolute value of a setpoint change is greater than this value, the PID executes even if its current Effective Period has not expired. |
1.0, 1.8 |
Staged Output |
Boolean |
N/A |
Indicates that this PID is controlling staged outputs. |
False |
Tuning Updated |
Boolean |
N/A |
When PRAC+ has updated the tuning parameters, this value is set to True. Tuning Updated is set to False when any of the following conditions occur:
|
False |