C
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)
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)