derivative action in pid control

R

Thread Starter

Richard

can someone give me a basic description of how derivative action works in a pid controller
 
M

Mihir Ramkrishna

Derivative action is responsible for generating an output which is proportional to the rate of change of error singal with respect to time.
And yes, as far as I know u cannot use D action alone in the controller.
 
Z
Please look for a control engineering book, Preferably "modern control engineering" by Ogata, quite a nice book I would say.
 
P
Hello Richard,

To put it briefly: derivative control (together with proportional control) is an anticipator, that is, it is a linear predictor of control error. Where integral control takes care of the past control error and proportional control takes care of the present, the derivative control is concerned about the future. In PD (we may now neglect integral control for simplicity), you have control u (controller output) at time instant t

u(t) = kp * [e(t) + td * d/dt e(t)]

where e(t) is control error between reference (or setpoint) signal and process output, d/dt is time derivative and kp is proportional gain (P control) and td is derivative time (D control).
Using linear (Taylor) approximation, you get

e(t) + td * d/dt e(t) = e(t+td) (approximation)

and now PD control u(t) = kp * e(t+td). Hence,
derivative control at time t takes action based on predicted control error at time t+td.

Unfortunately, this linear prediction principle does not work satisfactorily with dead-time dominated or noisy processes. Especially, with noisy processes (noisy measurement) derivative control amplifies noise significantly and thus
corrupts control signal and causes excessive wear on actuating devices. There are, however, applications where derivative control is useful.

A good reference on the topic is a book
(the best reference on PID control in overall)

Åström & Hägglund (1995), PID controllers: theory, design and tuning

-P. Airikka
 
The action of the derivative control mode is to provide an output from the controller which is proportional to the rate of change of the deviation from the setpoint.
Derivative control is selected for systems that have long lags or high capacitances, where it can give large amount of corrections to a rapidly changingerror signal while the error is still small. It is almost as if the controller were looking into future to correct a situation that could worsen with time because of its large capacitance.
Hope it helps you.
 
J

James Fountas

James S. Fountas

Hello Richard,

this is a response to P. Airikka equation. While
derivative control classically looks at the change in error with respect to time e(t) d/dt. It is more practical to look at the change in the measure process variable with respect to time, which I will refer to by "P(t)" for now. The example would P(t) d/dt.

P(t) is not a function of the setpoint but e(t) is. Changing a setpoint will change e(t) and possibly cause an surprising change in the output u(t).

I hope this isn't too much to swallow all at once.

Jim :)
 
P
Hello James,

You are quite right with your comment. It is more than typical to ignore set point in derivative control and apply derivation only on process measurement. I can only say in my defence that I used control error in my example just to describe the feature of prediction in derivative control.

Instead of simply using y(t) as a source for derivation (or -y(t) to be correct), I'd like to use (just for freedom of choice) a syntax e(t) = c * r(t) - y(t) where scalar c has either value 0 or 1. Now, by setting c you can choose whether to apply derivation on control error or measurement only. By setting c = 1, you can have drastic (sudden) peaks both in your control and process output responses when there is a sudden set point change. This is what you mentioned. However by setting c = 0, you avoid these undesired peaks but your derivation acts in wrong direction because of -y(t). Yet, it is more preferable to set c = 0.

Ok, it is another issue to talk about replacing d/dt e(t) or - d/dt y(t) by derivative filtering.
Because that's what should be done.

In general, PID controller implementation is not just about calculating the control error and multiplying it by appropriate constants which are functions of PID controller tuning parameters.
There are other concerns also which in real implementation are even more important than the basic calculation routine.

A good PID controller algorithm implementation should cover the following issues:
- operation mode (manual vs. automatic)
- operation direction (direct vs. reverse)
- basic PID controller algorithm
- signal scales
- integral anti-windup (prefer dynamic anti-windup
to simple switching off integral action)
- derivative filtering
- bumpless mode change (between operation modes)
- bumpless parameter change
- safe discretation method (to avoid instability
and ringing with derivative control)
- numerical accuracy and computational efficiency (round-off errros, precalculated coefficients)

In addition, there could be the following features
if needed:
- set point weighting
- feed forward control
- external signal tracking
- measurement filtering
- prediction for dead time dominated processes

Of course, your application for the PID controller algorithm sets the requirements for the features. If you need it just for simulation you may omit most of the features. But for real use, take care that you have an algorithm with more than just basic calculations on set point and measurement.

With regards,
-P. Airikka
 
K
> can someone give me a basic description of how derivative action works in a pid controller <

One way to apply derivative effect is to use the rate of change of input, the D tuning parameter, and the controller scan time to calculate an offset to the current input value, which is added to the actual input for the P calculation. This isn't really functionally different from conventional approaches, but resolving the derivative action to a virtual input value can help to give an understanding of what's going on.

--
Ken Irving <[email protected]>
 
<p>The derivative control produces an output based on RATE OF CHANGE OF ERROR.
</pre>

*********************
| *
^ *
| *
Error *
|*******
|
^------------------------------------
| Time -->
| ***************
| * *
| * *
| *********************
| * *
|---|-------------------*------------
Time ->

^
|
Derivative action
</pre>

<p>As can be seen by this graph the derivative action comes into effect only when there is a slope in the error or in other words a rate of change in error.
 
Top