PID Advanced VI
- Updated2025-07-30
- 3 minute(s) read
Implements a PID controller using a PID algorithm with advanced optional features. The advanced PID algorithm includes the features of the algorithm the PID VI uses, as well as manual mode control with bumpless manual-to-automatic transitions, nonlinear 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.

You can use the DBL Array instance of this polymorphic VI in multi-loop PID control applications. In this case, the length of the process variable input determines the length of the output array. Other input arrays do not necessarily need to be the same length as the process variable input. This VI resizes other input arrays to the same length as the process variable input as follows:
- If the input array is longer than the process variable input, the input array is truncated to the length of the process variable input. Additional values in the array are not used.
- If the input array is shorter than the process variable input, the last value of the input array is repeated until the size matches that of the process variable input.
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.
Bumpless Manual-to-Automatic Transfer
This VI supports bumpless manual-to-automatic transfer, which ensures a smooth controller output during the transition from manual to automatic control mode.
Bumpless Automatic-to-Manual Transfer
This VI cannot implement bumpless automatic-to-manual transfer. To ensure a smooth transition from automatic to manual control mode, you must design your application so that the manual output value matches the control output value at the time that the control mode switches from automatic to manual. You can do this by using a local variable for manual control, as shown in the following block diagram.
Examples
Refer to the following example files included with LabVIEW.
- labview\examples\control\PID\Manual-Automatic Control.vi