Fix to windup problem

C

Thread Starter

Chris Schene

I have a motor control circuit that has a windup problem because I am only passing “positive” control values from the PID controller; the integrator “winds up” in the negative direction when the motor is shutdown and of course there is an unwind “time delay” before I get control action in the positive direction when I turn the motor back on.

One of the techniques I have seen for fixing the windup problem is rather than feed the error signal to the controller, feed (En – En-1) to the controller so that now the controller works on the difference between two time sequential error signals.

Now, since de/dt = (En – En-1/)(delta T) wouldn’t it be precisely the same thing to place a unity differentiator after the error signal and feed de/dt rather than (En – En-1) into the controller so that that if de/dt = 0 (as when the motor is turned off or pegged at a rail) , the integrator won’t windup?

I am implementing this in an analog switched capacitor FPAA circuit…so I have mathematical type functions but no ability to implement computer logic, as a consequence the differentiator is very “cheap” in terms of component cost and preferable to (En - En-1)
 
B

BrianCopeland

The antiwindup solution to which you refer comes from the velocity form of the PID algorithm. It is well explained at the site "lorien.ncl.ac.uk/ming/digicont/digimath/dpid1.htm":http://lorien.ncl.ac.uk/ming/digicont/digimath/dpid1.htm .

If the PID controller is winding up, chances are that it is using the positional form of the algorithm. In that case, using the derivative for feedback as suggested would cause (marginal)instability because of cancellation of the integrator term in the feedback loop in fact results in the overall input/output gain having an integrator term. Its almost like using an integrator in open loop. In general loops where integrators and differentiators are cascaded (I have seen one or two in text books!) should be avoided.
 
I
I took a look at the mentioned web site. What is not explained here is what is meant by "constrained control signal". The windup phenomenon arises if a combination of an unconstrained integration and a following limiting function occurs. As a result, the integrator output may reach a value that is much greater than the control constraint value or the final element constraints. After that when the error signal changes its sign and the integration starts in the opposite direction the initial value for this integration would be excessively high (or low) and it would dominate in the overall control signal.

Chris, in your situation the windup occurs as a result of excessive integration caused by a non-zero error signal due to motor shutdowns and neither form of the PID control would help. Insertion of the derivative function would contradict the feedback principle. The controller would not sense the controlled variable any more and multiple steady states are possible in such a system. To avoid the windup a reset of the integral term can be used when the motor is started. If no start/stop signal can be fed from the motor there has to be a circuit that prevents the integrator from further integration (switches off its input) once the PID-controller output reaches its maximal allowed value (the control constraint). However, you use an analog circuit for the control. That probably limits the available choice of logic functions. What else could be used: the integrator output can be asymmetrically limited by a diode circuit (the way it prevents it from further integration) at levels that must be found by experiment or analysis. That is another measure, which does not completely solve the problem but mitigates it. I am reasoning in terms of an opamp; sorry if I don't take into account the real situation.

Regards,
Igor Boiko

Dr. Igor Boiko
[email protected]
Tel: 1-403-294-2745
 
C

Chris Schene

Thank you Igor and Brian for your responses.

I was a little confused, I think, in my original statement of the problem. The difference form of the equation I saw was delta U = Un - Un-1.

In any case, I used some logic on the FPAA chip to reset the integrator to 0 if the output of the PI controller is negative. This fix seems to eliminate most of the issues, at least in simulation. Though I do not completely understand the theory behind my "reset" fix.

I am on vacation (and away from the computer) for the next week. Again, thanks.

Chris Schene
Anadigm, Inc
"The FPAA Company"
 
B

Bill Clemons

Answer: The input differentiator won't work, as the controller would not recognize a constant deviation rate from set point, interpreted as zero error.

Though your problem sounds board-level, many controllers offer some form of anti-windup reset or reset inhibitor, to knock off the integral gain, say on shutdown/start up, PV=0, CO=100, or manually actuated.
 
Top