I'm building a machine that operates over 20 orders of magnitude with logarithmic process characteristics. I have tried regular PID and also all sorts of variations of PID and did not get good results. What other alternatives to PID I have?

I start with 21% oxygen in a closed vessel (at high temperature) and pump it out ion by ion down to log10(pO2)=-20 of original amount. I have sensitive enough sensor, pump and power supply for it. This part all works great if I set pump currents by hand or babysit the process. To go up in concentration I just lower the pump current and leakage takes care of adding oxygen.

But as you see, in context of trying to automate the control with PID, what works well at one region is completely unsuitable at another region. It does not help that the full loop of measurements takes about 10 seconds.

I have limited the current used to 500mA, and at worst conditions the current needed to cope with the leakage is 700µA, so the range for the current is not so huge. Nor is the range for sensor voltage, which is about 100mV to -1V.

Maybe I could control pump voltage instead of pump current. Current results directly to change in amount of oxygen (which is logarithmic). The resistance of the pump depends on temperature, and most of all the oxygen gradient, and would yield much more linear and automatically regulated response.

  • $\begingroup$ 20 orders of magnitude? I know of no possible mechanical technology that can, for example, open and close a set of relay contacts or a gas valve fast enough to cover that dynamic range. Have you actually built this machine, or just modeled it at this point? $\endgroup$ – niels nielsen Jan 8 '18 at 0:30
  • 3
    $\begingroup$ 20 orders of magnitude implies that the difference between 1.00000000000000000000 and 1.00000000000000000001 is significant to your process. Having a hard time fathoming what kind of process you are talking about. I've done some pretty precise measurements, but I've never even dreamed about going beyond about 6 orders of magnitude, and most typical engineering applications don't go beyond 3. Can you post some more details about your application? $\endgroup$ – Daniel K Jan 8 '18 at 2:32
  • $\begingroup$ Can you create a control loop which adjusts the PID constants according to one of your measured variables, thereby keeping the loop close to critically damped throughout the range? $\endgroup$ – Jonathan R Swift Jan 8 '18 at 10:21
  • $\begingroup$ I am trying ID control where the I is limited. I know approximately the maximum current needed per conditions and I try to discard the excess integral part based on this maximum. $\endgroup$ – Doege Jan 8 '18 at 10:30
  • $\begingroup$ Your system is very likely to be nonlinear, so you will probably have to resort to some adaptive or nonlinear controller. Do you have a somewhat accurate model of your system? $\endgroup$ – fibonatic Jan 8 '18 at 10:42

An alternative to PID is Model Predictive Control (MPC) [1], [2], [3], [4].

As your system is highly nonlinear, I would recommend using Nonlinear Model Predictive Control (NMPC) [5], [6], [7].

Model predictive controller, predicts the future dynamic of the system and takes action before hand. This controller performs an online optimization at each sampling time and handles the system constraints explicitly.

| improve this answer | |
  • $\begingroup$ You happen to have [2] as PDF seeing you are one of the authors? $\endgroup$ – Doege Jan 8 '18 at 15:06
  • $\begingroup$ @Doege, would you please request for full-text here? $\endgroup$ – Arash Jan 9 '18 at 7:08

Your Answer

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

Not the answer you're looking for? Browse other questions tagged or ask your own question.