-
Notifications
You must be signed in to change notification settings - Fork 13
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Integrator in saturation #19
Comments
Basicly what you mean is that the pid should not do anything if reaches 0 or 100? Doesn't he already do that? The min and max values are constrained, it should not raise above the maximum, or lower bellow the minimum! |
I'm also having extreme saturation problems with the integral component, I believe |
When the control action on the object reaches saturation, the feedback is broken (the control action does not depend on the state of the system). |
I have seen that behavior, turn off the integrator, when the system is saturated! You could do this if you use templating in the 'I' variable, but I agree that should be automatic! I'll look into it! Tks |
I added the solution in the start thread. |
I'll try to take a look at this tomorrow, let me see what I can do! |
Any luck with this? Having the same issue |
from
|
Merged into 1.1.5 |
I'm no expert in coding, but after the last update, it seems that the readout of the integral-attribute is in saturation, but maybe not the regulator itself? I get the attribute I have the min/max to 0-100, windup to 100, and earlier the readout of the integral was the max-vaule, 100 |
The expected behavior is to the PID to increment the "I" until the output reaches the maximum. When on maximum the "I" will stop incrementing and remain constant. That is the expected. But should resume incrementing the "I" if the output falls bellow the maximum. |
In steady state PID = Kp * error + Ki(previous integral + error) + Kd(error - last)
= 0 + Ki (previous integral + error) + 0
= Ki (previous integral + error)
So output of PID controller at the steady state is equal to integral term.
A problem arises if the regulator is in the saturation zone for a very long time.
Therefore, if the regulator is in the saturation zone, it is necessary to reduce the integral component.
I tried this but my knowledge of python is very low.
Instead of
self._i_term += self._ki * error * delta_time
I set this codeMaybe add this fix to the main plugin?
The text was updated successfully, but these errors were encountered: