I'm trying to design a PID controller but I have a problem in the following case:

The process variable can only be between 0 and 1. The setpoint can be close to one, for instance 0.97. Hence the lowest possible error is -0.03 (0.97 - 1), and the maximal error 0.97 (0.97 - 0). As a result, the controller output usually decreases much more slowly than it increases.

I would like it to be able to decrease faster, with the same set point. Is there a correct way to do that? Of course I could multiply the error by some constant only when it's negative, but I'm not sure it's right to do that (I don't have a lot of experience in control theory).


  • $\begingroup$ When you say "can only be between 0 and 1", when does this restriction occur ? The idea behind the question is that, if the value must be between 0 and 1 but only at specific moments (when you actually do control your thing), just round it towards 0 or 1 at that moment, and let it go further when you estimate its next value. $\endgroup$ – Loufylouf Jun 15 '15 at 11:34
  • $\begingroup$ Thanks for your answer. The process variable is actually a percentage (from measurements), so it's always between 0 and 1. $\endgroup$ – pidcontrol Jun 15 '15 at 12:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.