03-19-2013 02:30 PM
I'm trying to tune a water bath temperature controller, where a peltier heats and cools a water block. I'm using the pid autotune (temperature) vi, set up similarly to the example provided (plant parameters are fed through a shift register back to input, pid values are not fed to input until applied or autotuning completes). I've attempted some preliminary Z-N tuning to get initial pid values and waited for the controller to stabilize, but after lengthy autotuning the pid values typically settle around Kc = 0 or -0, Ti = -0.9..., Td = 0, time constant plant parameter = -40, while gain and delay = 0. Steady state is always met after the disturbance from autotuning is introduced, but the values never change, and I can't believe these are valid. Has anyone run into this before?
03-20-2013 09:52 AM
Jeanius
For the Gain to return 0, it means that you are not applying a step response to the system. are you introducing disturbance for the tuning? The gain zero for our type of PID (academic type) means that it will not control the system at all. Are you sure it is zero? it could be a very small number.
Also, the autotuning (temperature) vi uses the internal model technique where the model is a first order model with delay. If your system does not have delay, then the best autotuning VI is the PID advanced autotuning.vi and you can use the "Closed-loop" response. This option speeds up the identification process by using a proportional controller in the closed-loop for identification, making the response faster.
03-20-2013 01:35 PM - edited 03-20-2013 01:36 PM
Thanks for the reply, I'll give that VI a try. I was introducing a step response, and fiddled with that value a lot, but the values came back negative every time. What duration of delay is this VI optimized for? I could probably see ~2-4 seconds before a measureable response was picked up on our instrument.
The process gain doesn't always go to zero, I should say. Sometimes it hangs around 0.3-0.6.
03-21-2013 10:01 AM
The technique used by the Autotuning (temperature) is a open-loop step response and identify (or approximate to) a first-order model with delay and without overshoot. If the model doesn't behave that way, you can't say what will come from it.
Another possible problem (that could explain the 0 gain) is that to be able to obtain the response, we have an internal buffer set to 10.000. If the sampling time is too fast and it take too long to settle, the buffer could overwrite and loose the begining of the response, making gain 0. You can increase the sampling time to avoid this problem.
Hopefully that helps.
03-21-2013 10:01 AM
The technique used by the Autotuning (temperature) is a open-loop step response and identify (or approximate to) a first-order model with delay and without overshoot. If the model doesn't behave that way, you can't say what will come from it.
Another possible problem (that could explain the 0 gain) is that to be able to obtain the response, we have an internal buffer set to 10.000. If the sampling time is too fast and it take too long to settle, the buffer could overwrite and loose the begining of the response, making gain 0. You can increase the sampling time to avoid this problem.
Hopefully that helps.
03-21-2013 06:08 PM
I'd ended up further fine tuning the manually found Z-N values from before, I think the response from my system took too long for the VIs to accurately obtain values. Tried all 4 of the methods provided for autotuning (step open, step closed, relay, pid relay) and they all failed to provide valid gains. It alright though, the Z-N values work fine. Thanks for the help!