|
Home
Control News
Control Questions
Science Articles
Technology and Policy
About Us
Control Forum
|
Velocity and Full Value forms of the PID algorithm
Friday, December 19, 2003
Question:
What is the difference between the velocity and full value forms of the PID algorithm
Answer:
I don’t often hear the terms "Positional" or "Velocity" (or
the equivalent,
”full value” and “incremental”) anymore.
Back (1970’s through 1980’s), control was often implemented on a mini-computer
connected to analog instruments on a panel-board. The analog instrument would provide the
4 to 20 ma signal that actually was connected to the equipment in the plant (typically a
valve). There were two ways to connect the output signal to the analog instrument using a
Digital to Analog converter in the computer.
One method, the velocity or incremental method, transmitted a rate of change to the analog
instrument, which then integrated the rate of change to provide the actual current output
to the valve.
The other method, the position or full value method, transmitted an analog voltage that
corresponded to the actual position of the valve.
The advantage of the velocity form is that if the computer failed (quite common in those
days) the analog instrument held its value and allowed the operator to adjust the output
manually.
The advantage of the positional form is that the compute actually determines the valve
position, can indicate it to the operator, and allow the operator to set the valve
position through the computer.
The PID algorithm had to be different for the two methods. The velocity form will be
integrated in the external analog device, so the equation is actually the derivative of
the PID algorithm:
DeltaOut = Kp(dE/dt + Ki x E + Kd x d2E/dt2)
Where Kp is gain, Ki is Reset Rate, Kd is Derivative, E is error, and DeltaOut is what is
actually output to the analog device.
The code to implement this is:
DeltaOut = Kp*(E-ELast+Ki*E+Deriv*(E-ELast*2+ELastLast))
ELast is the error from the previous execution of the code, ELastLast is the error from
two passes before. The code is executed at some rate, perhaps once per second.
For the position form, the above equation is integrated. So the code would be:
Output = OutLast + Kp*(E-ELast+Ki*E+Deriv*(E-ELast*2+ELastLast))
|