Owning Palette: PID VIs
Installed With: PID Control Toolkit
Implements a PID controller using a PID algorithm with advanced optional features. The PID algorithm includes the features of the algorithm the PID VI uses, as well as manual mode control with bumpless manual-to-automatic transitions, non-linear integral action, two degree-of-freedom control, and error-squared control. Use the DBL instance of this VI to implement a single control loop. Use the DBL Array instance to implement parallel multi-loop control.
Use the pull-down menu to select an instance of this VI.

![]() |
manual control specifies the value of the control output when auto? is FALSE. | ||||||
![]() |
auto? specifies whether to use automatic or manual control. When auto? is TRUE, this VI uses automatic control. When auto? is FALSE, this VI uses manual control. This VI uses bumpless transfer from manual control to automatic control. The default is TRUE. | ||||||
![]() |
output range specifies the range to which to coerce the control output. The default range is –100 to 100.
| ||||||
![]() |
setpoint specifies the setpoint value, or desired value, of the process variable being controlled. | ||||||
![]() |
process variable specifies the measured value of the process variable being controlled. This value is equal to the feedback value of the feedback control loop. | ||||||
![]() |
setpoint range specifies the maximum and minimum values for the setpoint/process variable range. This VI uses the setpoint range to calculate non-linear integral action. The default range is 0 to 100.
| ||||||
![]() |
PID gains specifies the proportional gain, integral time, and derivative time parameters of the controller.
| ||||||
![]() |
dt (s) specifies the interval, in seconds, at which this VI is called. If dt (s) is less than or equal to zero, this VI uses an internal timer with a one millisecond resolution. The default is –1. | ||||||
![]() |
reinitialize? specifies whether to reinitialize the internal parameters, such as the integrated error, of the controller. The default is FALSE. | ||||||
![]() |
beta specifies the relative emphasis of disturbance rejection to setpoint tracking. The default value of 1 is appropriate for most applications. You can use a smaller value between 0 and 1 to specify emphasis on disturbance rejection, such as process load changes. | ||||||
![]() |
linearity specifies the linearity of the error response. The valid range for linearity is 0 to 1. A value of 1 provides a normal linear response, while a value of 0.1 provides an approximately parabolic response. | ||||||
![]() |
output returns the control output of the PID algorithm that is applied to the controlled process. | ||||||
![]() |
dt out (s) returns the actual time interval in seconds. dt out (s) returns either the value of dt (s) or the computed interval if you set dt (s) to –1. |

![]() |
manual control specifies the value of the control output when auto? is FALSE. This VI resizes the manual control input array to match the size of the process variable input array. | ||||||
![]() |
auto? specifies whether to use automatic or manual control When auto? is TRUE, this VI uses automatic control. When auto? is FALSE, this VI uses manual control. This VI uses bumpless transfer from manual control to automatic control. The default is TRUE.This VI resizes the auto? input array to match the size of the process variable input array. | ||||||
![]() |
output range specifies the range to which to coerce the control output. The default range is –100 to 100.
| ||||||
![]() |
setpoint specifies the setpoint value, or desired value, of the process variable being controlled. This VI resizes the setpoint input array to match the size of the process variable input array. | ||||||
![]() |
process variable specifies the measured value of the process variable being controlled. This value is equal to the feedback value of the feedback control loop. | ||||||
![]() |
setpoint range specifies the maximum and minimum values for the setpoint/process variable range. This VI uses the setpoint range to calculate non-linear integral action. The default range is 0 to 100.
| ||||||
![]() |
PID gains specifies the proportional gain, integral time, and derivative time parameters of the controller.
| ||||||
![]() |
dt (s) specifies the interval, in seconds, at which this VI is called. If dt (s) is less than or equal to zero, this VI uses an internal timer with a one millisecond resolution. The default is –1. | ||||||
![]() |
reinitialize? specifies whether to reinitialize the internal parameters, such as the integrated error, of the controller. The default is FALSE. | ||||||
![]() |
beta specifies the relative emphasis of disturbance rejection to setpoint tracking. The default value of 1 is appropriate for most applications. You can use a smaller value between 0 and 1 to specify emphasis on disturbance rejection, such as process load changes. This VI resizes the beta input array to match the size of the process variable input array. | ||||||
![]() |
linearity specifies the linearity of the error response. The valid range for linearity is 0 to 1. A value of 1 provides a normal linear response, while a value of 0.1 provides an approximately parabolic response. | ||||||
![]() |
output returns the control output of the PID algorithm that is applied to the controlled process. This VI determines the length of the output array from the size of the process variable input array. | ||||||
![]() |
dt out (s) returns the actual time interval in seconds. dt out (s) returns either the value of dt (s) or the computed interval if you set dt (s) to –1. |
You can use the DBL Array instance of this polymorphic VI in multi-loop PID control applications. In this case, the length of the primary input array determines the length of the output array. Other input arrays do not necessarily need to be the same length as the primary input array. This VI resizes other input arrays to the same length as the primary input array as follows:
In this manner, an input value that must be used for each output calculation does not need to be specified repeatedly in the array passed into this VI. Instead, the array can consist of a single value that is used for each output calculation.
Refer to the Manual-Automatic Control VI in the labview\examples\control\pid\prctrlex.llb for an example of using the PID Advanced VI.