06-19-2014 08:43 AM
Hi,
Has anyone had much success with the 'Temperature' method of PID control and the autontuning of its parameters? I have several temperature (and other slow-responding) systems that I'm trying to control. But I'm not having much success getting adequate gains. Is there a good guide to implementing this technique?
Also, does the 'Tuning Complete' boolean even work? It appears that the boolean only becomes true when the user stops autotuning manually? Thanks.
-Joe
06-19-2014 01:27 PM
I've never tried the auto-tuning. I've had good luck using the Cohen-Coon (or similar Ziegler-Nichols open-loop) approach for slow-responding heating systems. You'll need some code that can directly set the heater power (PID disabled), and record the current temperature and the heater power along with a timestamp. This might be a separate program, or a mode in your current code. Run the program, wait until the temperature is stable, make a change in the heater power. Too small a step will result in poor tuning, but make sure you don't provide so much power that the heater exceeds its limits. Then, wait until the heater reaches a steady temperature again (this may take a long time). Use the resulting data in the Cohen-Coon method to get a good set of initial gains, which you adjust if necessary. An internet search for "Cohen-Coon" should provide multiple explanations, and there's also an explanation in the PID Toolkit manual (I believe that uses the similar Ziegler-Nichols open-loop method). Be careful about units: the PID VIs use minutes for the gains, even though the dt parameter is in seconds. If you try this and don't get good results, post the raw data and I'll take a look.
06-20-2014 10:05 AM
Joe,
The "PID Temperature Autotuning" is used in system that have large time-delays. By large, the delay should be equal or bigger than the time constant. If that is not the case where the delay is just a fraction of the time constant, than the "PID Advanced Autotuning" probably would have a better response for you.
The "PID Temperature Autotuning" has a 'smith predictor' inside the algorithm that try to avoid the effects of the delay, but, if your system can't be model or differ too much from a first order model with large delay, then it is possible it can not work for you.
The "Tuning Complete" problem was already reported and fixed in later versions. If you want to fix on your version, here is the code to patch your version and in attachment is the VI save in LabVIEW 2013:
06-20-2014 10:18 AM
nathand,
If you see the LabVIEW 2011 (and later) we incorporated the Cohen-Coon as one of the possible algorithms. The shipping examples we have (starting with Autotuning in the name) in this location:
C:\Program Files (x86)\National Instruments\LabVIEW 2013\examples\control\PID
describes how you can achieve what you described if you run on RT. Unfortunately, the "PID Advanced Autotuning", which does most of what would you like to do, doesn't have the Cohen-Coon Algorithm available.
One more comment: if your system is slow and you can speed it up with a P controller, then the Closed-loop system identification could help you to obtain the parameters faster. However, the internal representation assumes that it is a first-order model with delay, which in some system could not be suited.