PID - Johnson Controls - Metasys - LIT-12011147 - Software Application - Controller Configuration Tool - 16.0

Controller Tool Help

Product name
Controller Configuration Tool
Document type
User Guide
Document number
LIT-12011147
Version
16.0
Revision date
2023-10-02
Note: At Release 10, the internal algorithm of the PID block was updated to eliminate the rare possibility of adaptively tuning to a state of two-position control. In these rare cases, where the PID Proportional Band was calculated to a value very close to 0, the adaptive tuning logic now automatically slows down the sampling rate of the PID by a factor of 10 and resets the tuning parameters to their original values. For more in depth information on PID function, see PID PRAC Commissioning Overview.

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.

The PID block provides the following reliability values:
  • 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.

Table 1. PID Block Inputs and Outputs

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: Normal operation
  • Monitoring Setpoint Change: Feature extraction following large setpoint change in progress
  • Monitoring Load Disturbance: Feature extraction following large load disturbance in progress
  • Tuning NOT Updated: Insignificant pattern or control output saturated observed
  • Normal Tuning Update: New gain and integral time have been computed
  • Gain Decreased: New decreased gain computed because of fast oscillations

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:
  • Manual Tuning is True
  • Reset Tuning is True
  • the Time Constant changes
  • the Process Dead Time changes
  • the Process Range changes
  • the Proportional Band changes
  • the Integral Time changes

False

1 This input or output is the Default Element of the block.
2 Appears when simulating or commissioning a controller.
3 This property does not appear in the UI. It is used behind-the-scenes to provide the PRAC functionality noted in the Description column.