LabVIEW

cancel
Showing results for 
Search instead for 
Did you mean: 

PID control oscillation

Solved!
Go to solution

Hello,

 

I have a circulated water loop, and I control its temperature in the following way:

The sensor is a thermistor bridge, this bridge is driven with a 5V precision reference (http://www.voltagestandard.com/New_Products.html). The output of this bridge is connected to a Keithley 2182 nanovoltmeter. My LabView PID control (i have PID toolkit purchased) drives a Keithley 2400 current source which is connected to a solid state Peltier water-to-air heat exchanger. The air side of this heat exchanger is in a temperature controlled cabinet (air temperature stability is +-0.02 Celsius). The thermistor bridge gives a signal about 50 mV/Kelvin at the 5V excitation.

I have attached a picture, where you can see one hour measurement data (1 Hz sampling rate). Typically I have a stability +- 3E-6 Volts (standard deviation), which corresponds to +- 6E-5 Kelvin stability.

 

PIDwaterloop.jpg

 

I have tuned this PID control with the standard Ziegler-Nicholes tuning protocol, so first I brought the system to stable oscillation, and I have measured the ultimate period time (1.375 minutes), and the ultimate gain (147). The Z-N table gave from these values the following PID parameters:

P= 86.47

I= 0.687 min

D = 0.171 min

 

 

Overall, I am satisfied with my temperature control, but I am looking for advice how to remove the visible oscillatory effect. This oscillation has a period time about 30-40 minutes, as you can see in the picture.

Is there something I could try to make my control even more precise? (it is also possible that I am already at the possible barrier given by the structural confines...)

 

Thanks very much!

0 Kudos
Message 1 of 39
(12,387 Views)

Hi Blokk,

 


The air side of this heat exchanger is in a temperature controlled cabinet (air temperature stability is +-0.02 Celsius).

Typically I have a stability +- 3E-6 Volts (standard deviation), which corresponds to +- 6E-5 Kelvin stability.


 

So you have an environment with ±0.02K "stability" and you worry about ±0.00006K "stability" of your PID control loop? Really?

Your PID control is 333 times better than your environment, which works as disturbance of your control loop...

One more thought: what's the accuracy of your thermistor bridge?

 


advice how to remove the visible oscillatory effect


 

Use some useful scaling of the Y axis 😄

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 2 of 39
(12,371 Views)

The oscillation of the temperature of the environment has a much higher frequency compared to the oscillation of the controlled circulated water loop. If you want to control the temperature in an object, you shield it: we dynamically control the temperature of the cabinet's air, what gives the first barrier. The second barrier is the circulated water loop inside in a double walled vacuum vessel, here we can reach about 2-30 microKelvin precision. Actually inside the vacuum vessel, we have a third temperature controlled zone (connected to the water loop via Peltier heat exchanger), its temperature is stable up to +-30 nanoKelvin. This is one typical configuration of a heat flow isothermal vacuum calorimeter.

 

As I told above, I am basically satisfied with the system's performance. I just wanted to ask about possible refine options in the PID control of the water loop, to remove the slow oscillation. For example, if is it possible to use a different pid tuning table to the Ziegler-Nichols, what could eliminate the shown oscillation....Or if there is a method how to modify slightly the tuned pid parameters in order to remove the oscillation...

0 Kudos
Message 3 of 39
(12,363 Views)

Hi Blokk,

 

now your question becomes more clear...

 

Ziegler_nichols is giving results very fast, but not as accurate as possible. See Wikipedia for more information on Z-N and PID tuning in general! There are other tuning methods and LabVIEW also provides an Autotuning VI in the PID palette...

Best regards,
GerdW


using LV2016/2019/2021 on Win10/11+cRIO, TestStand2016/2019
0 Kudos
Message 4 of 39
(12,361 Views)

Actually several times I tried the automatized PID Autotune VIs from the Toolkit, but somehow they never gave me the desired performance neither the optimal pid parameters. I guess my approach was bad, maybe I tried to use these autotune vis in a too intuitive way 🙂

So whenever I have to tune a pid control, I just use the "manual" way: I start the control in P mode only, and I slowly step up the gain til stable oscillation, and I calculate the pid parameters from the oscillating curve. Strangely, the PID toolkit autotune wizard never was able to give me good results... 😞

 

I understand that, this is too general for the people here to be able to help me, so I will try the toolkit autotune options again, and I will post here when I have a more specific question....

 

Thanks for replying!

Best Regards,

 

0 Kudos
Message 5 of 39
(12,358 Views)

Hello,

 

My first experiance with the PID Autotuning (Temperature) VI:

 

I started to use this VI on my cabinet air temperature control unit, but I have realized some strange thing:

When I use the autotune function, I have to specify the autotuning parameters. In the manual, the step amplitude is defined like this:

 

"step amplitude specifies the amplitude of the setpoint relay action. The setpoint relay is between setpoint - amplitude and setpoint + amplitude."

 

But when I start the autotune process, what I see is this "step amplitude" is not the relay action for the setpoint, but the VI use this value as a constant (?) output...is this a bug?

 

 

 

0 Kudos
Message 6 of 39
(12,340 Views)

very bad: during autotuning, the VI just sets the output to be equal with the step amplitude, and also, even if I specified to tune the system to be PID control, the D parameter is always zero...

What do I do wrong?

(in the pic you can see the initial pid values, what I have got via the manual Ziegler-Nichols method...)pid-airloop.png

0 Kudos
Message 7 of 39
(12,335 Views)
Solution
Accepted by topic author Blokk

Blokk wrote:

Is there something I could try to make my control even more precise? (it is also possible that I am already at the possible barrier given by the structural confines...)


Can you plot the output from the control loop (the value being written to the current source)? More specifically, plot the output from the Keithley (if available) since the PID algorithm may output values with a finer resolution than the Keithley can generate; otherwise, round the PID output to match the resolution of the Keithley. See if the current alternates steadily between two specific output values, or if the output is changing continuously over the course of the oscillation.

 

What I suspect is happening is that you've reached the limit of the resolution of the current source, in which case it will be difficult to eliminate this oscillation using PID because the current source cannot output the exact value that would allow you to maintain the desired steady-state temperature. If this is the case, the output will cycle between the two closest output values and you'll always have some oscillation. You could try increasing the integral gain (reducing the integral time) to see if you can get a faster response and reduce the amplitude of the oscillation, but the tradeoff may be greater overshoot when you change the setpoint.

Message 8 of 39
(12,327 Views)

Very good idea!

 

Usually the water-to-air heat exchanger requires a current around 130 mAmpere from the Keithley 2400 to maintain the setpoint temperature, and remove the excess heat from the inner loops of the calorimeter.

Therefore, the Keithley 2400 sourcemeter is used in the +-1 Ampere range, what has the worst resolution.

 

Thanks for pointing out!

 

 

ps.: I have still the question about the PID Autotune (Temperature) VI, why it sets the output value to be equal to the step amplitude, since the step amplitude (+-) should be added to the setpoint during the auto tuning?

And the D term is always zero...

 

Best Regards,

0 Kudos
Message 9 of 39
(12,317 Views)

I think nathand has hit a good point.  You need to look at some of the intermediate signals such as the Keithley output to see what else is going on.

 

Does the oscillation remain "stable" in the sense that its frequency and amplitude do not change much over an extended period such as days or a week? One or two cycles do not tell you much about the system behavior.

 

How often does your system update the Keithley output?  Too much difference in the response time of the thermal system and the electrical system can make it hard to stabilize.

 

Lynn

0 Kudos
Message 10 of 39
(12,313 Views)