Setting pid on latency systems

I need to adjust the gain PI (D) on a system with a fairly long delay. This is a general temperature controller, but the temperature sensor is far from the heater. Additional Information:

  • the sensor response is delayed by 10 seconds after any change on the heater

  • temperature is measured with a frequency of 1 Hz, with a resolution of 0.01 Β° C

  • the heater is a PWM controller with a period of 1 Hz, with a 10-bit PWM

  • The goal is to keep the fluctuation below Β± 0.05 Β° C

I am currently using the controller as PI. I cannot avoid hesitation. The higher the gain, the smaller and faster the oscillation. Still too high (about Β± 0.15 Β° C). Decreasing P and I results in very long and deep oscillations.

I think it has to do with the delay. Settling time is not a problem, it can take all the time.

I am puzzled as to how to get the system to work. Let them think to use only I. When the probe reaches the target value and the output of I begins to decrease, the temperature rises for some other time. I cannot use a derived term because the changes are too slow and dError is very close to zero (if I set dGain to a huge value, too much noise).

Any idea?

+3


source to share


2 answers


Typically for long delays, you have two options: omit the system payoff or, if you have a plant model that you control, use the Smith Predictior .

I would start by simulating your system (using open loop steps on the input) to quantify the delay and time constant of your plant, and then check if the temperature and PWM speed samples match.



Please note that if your PWM frequency is too low compared to the dynamics of the plant, you will have prolonged oscillations due to the slow PWM. You can test this using only constant input to your PWM (no controllers, open loop).

EDIT: Didn't see that the problem has been solved already, but I'll leave that here for reference.

+4


source


Try the P version only. How fast are proportional fluctuations? If you cannot set the Kp small enough not to get any hesitation, your heater will be suppressed for your system.

If the system dead time is on the order of 10 s, the time constant (T_i) for the integral term should be 3.3 times less than the dead time using the Ziegler Nichols open loop PI rule ( https://controls.engin.umich.edu/wiki /index.php/PIDTuningClassical#Ziegler-Nichols_Open-Loop_Tuning_Method_or_Process_Reaction_Method :) and then the integral member must be Ki = Kp / T_i. So with deadtime = 10s, then Ki should be Kp / 33 or slower.

If you only get integral oscillations, then the integral winds up and down faster than the process responds, and it should be even smaller.



Also - think about the units of different terms. It may not be the delay that caused your problems as much as the resolution of the measurement and control systems. If you drive (for example) a 100W PWM heater with 1/1024 resolution, you have 0.1W resolution for the amount of PWM you are trying to adjust based on a 0.01 C temperature difference. At less than Kp = 100 PWMcount / degree (or 10W / degree) you do not have enough PWM resolution to make changes in response to the 0.01C error. With Kp = 10PWM / C, you may need a 0.10C change to cause the actual PWM power change. Can you use a higher resolution PWM?

Thinking about it the other way, if you want to drive the system in the 30C range at 0.01C, I think you would like at least 15-bit PWM to have 10x the resolution in the controlled system. By using only 10 bits of PWM, you only get 1C of total range with 10x control in measurement resolution.

+1


source







All Articles