• 24.04.2024, 09:17
  • Registrieren
  • Anmelden
  • Sie sind nicht angemeldet.

 

Lieber Besucher, herzlich willkommen bei: Aqua Computer Forum. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

PID controller tuning

Dienstag, 22. Februar 2022, 10:32

Hi all,

When utilizing a step response curve to calculate the closest control variables for the fan speed to water temperature curve, I end up close to use a factor 1000 for the PID variables.

Maybe I'm not using the right values or my calculations are off, but I'm trying to understand why;
P = 2000
I = 1500
D = 0

for normal response and;
P = 4000
I = 3500
D = 1000

for the fastest response when mine are;
P = 9000
I = 30000
D = 700
for an aggressive but more accurate response.

What gives?

Montag, 28. Februar 2022, 12:30

Hi again,

For those interested;
I've managed to dig into the PID controller tuning a bit further, and I've gotten closer to a better system, but it is still a bit unstable.

Using the Excel provided: Engineers-Excel.com: PID Loop Simulator
I've come closer to;
P = 14500
I = (can't remember, but less than 10000)
D = 750

It should be possible to calculate for others using the Excel file and a step response measurement of your cooling system, using one variable (MV: fan speed) and the water temperature (PV).

Montag, 28. Februar 2022, 14:51

For non-engineers, like me, who have not been exposed to "PID controllers", this ARTICLE may be enlightening.

Montag, 28. Februar 2022, 17:49

This is very interesting. I recall programming PID control loops for closed loop control systems when I was in college (Electrical Engineering). That was a LONG time ago - we were coding in Fortran and submitting stacks of punch cards, which translates into I am OLD. OP please do post your progress. In the mean time, I have some reading to do. I love this stuff!

Dienstag, 1. März 2022, 07:16

I recall programming PID control loops for closed loop control systems
when you controll your fan speed based on the water temperature this is a closed loop system.

Dienstag, 1. März 2022, 08:09

I might need to start posting a bit more information.

The integral was actually 14000. I still have 1 degree overshoot on the low load thermal target.
Since the integral value is that high, it might explain it.

Its reaction is really fast though.

Further information:
i7 9700k on kryos NEXT RGBpx
RTX 2080 on kryographics NEXT
2x 360 40mm Primochill radiators
6x Alphacool 120mm Aurora
D5 NEXT pump
Leakshield

My step response results:
Process Gain: 0,6 (0,6xxxxx, precise number is in my calculations)
Tau (63,2% of the total step response change): 336 seconds
Delay time: 4 seconds

Edit:
Fan controller change (MV): 15-90%
Temperature change: (PV): 9,7 degrees (35,34 to 25ish)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »RBMDragon« (1. März 2022, 08:11)

Freitag, 4. März 2022, 20:53

Changed the variable factor by 100.

The reponse is not as agressive or fast, but it seems to handle a Heaven Benchmark.
Step Response 90 is the data I recorded for the PID value calculation.


PIDLoopSimulator was used to estimate a controller reponse, although the loop is still much slower.

I used the guides from Engineers-Excel.
The gain was the factor between the change/full range, i.e. 1.

The 336 seconds is the time it takes for the temperature change starting to 63,2% of the final value.
The delay is the time it takes from the 15%-90% step change to notice a temperature change in the temperature.
PIDValues are the factors I inserted.


Setting Integral and Derivative to 0.
Set the Controller Gain until the simulator oscillates (not getting stronger or weaker).
Set the Controller Gain to half that value.
Set the Integral value until the Process value gets as close to 1 (I took the value at 100 seconds)
Set the Derivative value to reduce overshoot (second sheet take maximum value from the Process values)
PIDControl is the controller in action while running Heaven Benchmark on the GPU.


There are still some things I might do better, but for now I'm starting to get progress.

Remayz

Senior Member

Freitag, 4. März 2022, 22:38

Just out of curiosity, you do all this as a tinker experiment, or ..
:P

Samstag, 5. März 2022, 08:37

I do it to try to improve the thermal load response.

It means that when the load changes, the fans will spin up to keep the water temperature in a safe range, while staying quiet when the PC isn't doing much.

I'm also trying something similar with the pump control, but variation in pump speed is not recommended and it has negligible influence on thermals.

Remayz

Senior Member

Samstag, 5. März 2022, 15:32

i asked because from the curves i see, it seems you're basically recreating the existing. By controlling the fans from water temperature, or the delta between ambient and water temperatures (quieter if you have temperature swings in the room), you get to the same result.

Sonntag, 6. März 2022, 02:27

i asked because from the curves i see, it seems you're basically recreating the existing. By controlling the fans from water temperature, or the delta between ambient and water temperatures (quieter if you have temperature swings in the room), you get to the same result.
Well AQS does provide the ability to manually enter values for Factors P. I, D, Hysteresis, and a Reset Time for Factor D if you select Target Temperature mode and then User Defined. I found that if you select one of the presets first (Fastest, Faster, Normal, Slower, Slowest) and then User Defined, you can see what values AQS sets for each preset. I guess you could try them all and graph the resulting curve for each one. If you still felt that all of these presets were not acceptable, once you see how the values affect the curve you could make an educated guess of what values to enter to get whatever response you are after. I think OP is saying that with the PID Loop Simulator he should be able to predict the outcome of entering these values. Then if you know exactly what response you want you can calculate the values to enter to get that response. I may be confused about this. It's interesting, but I have found the curves AQS provides are sufficient for my needs. This is one of the many features in AQS that you can tinker with, and I guess OP is compelled to tinker with it. I am curious how this will develop.

Sonntag, 6. März 2022, 08:48

I approached things a slightly different way using virtual sensors.

For my Water Pump Control I have a Virtual Sensor configures so that it outputs one of two values dependent on load & time.

The lower value is the default and runs the pump at just under 3k rpm.(based on its very simple fan curve with no tweaks)

The higher value runs the pump at its max speed of ~ 4.5k rpm

The Higher speed is triggered

IF either Average CPU/GPU load as measured over 15 seconds goes above threshold (80%) And it then stays above this for a further defined period (120 seconds) THEN use High Value.
In this scenario I also have a 60 second delay on shut off(which actually I need to add in for the next scenario as welll now I think about it)


If However the Average of both CPU & GPU go above threshold then High Value is used straight away.

WaterPump_Sensor.jpg




For Fan Control I have something similar but with a twist.

In this case it uses the H2O delta as a Normal value and a first fixed value (Temp Output) as the standard High.
This then runs the Rad Fans & Case fans on their own curves which are configured so that the Rad fans are more sensitive (ie can run from 0-100% )than the case fans which always run at pretty much a fixed speed based on their curve (my rads are mounted externally).

The next added twst is that once an hour for 5 minutes all fans (inlduing case fans) are spun up to 100% by setting a Max value (100) to be used as the output temp.

Fan_Curve_Sensor.jpg

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »WinstonWoof« (6. März 2022, 08:51)

Sonntag, 6. März 2022, 09:00


In this scenario I also have a 60 second delay on shut off(which actually I need to add in for the next scenario as welll now I think about it)



Quickly modified them to the Delay Off applies evenly

WaterPump_Sensor.jpg

Fan_Curve_Sensor.jpg

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »WinstonWoof« (7. März 2022, 08:15)

Montag, 13. Juni 2022, 01:39


"I used the guides from Engineers-Excel.
The gain was the factor between the change/full range, i.e. 1."
It is not clear to me neither in the Engineers-Excel guide nor in your calculations why Gain=1.
In you calculation the gain should be G=deltaPV/deltaMV so (25,6-35,1)/(90-0) = -0,1. ?(
as well as in the web site mentioned it should be (110-100) / (55-50) =2 ?(

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »ronzino« (13. Juni 2022, 01:41)

Donnerstag, 16. Juni 2022, 19:30

One of my systems, the fans have some trouble holding steady when the coolant is at the target temp if the system TDP is low (but not idle) and not when the TDP is high. When I use slower response options, the oscillations don't happen but the temp overshoots by 2-3C before the fans catch up when the system goes from idle to high TDP.

Not that nesting control loops is necessarily a good idea, but is there a way to link the PID values to a smoothed TDP value in the Playground? Or is that not possible because the PID is being executed on the aquaero and this type of linking with the Windows service isn't possible?

Freitag, 17. Juni 2022, 12:24

After a lot of hours spent to study again PIDs, and hours spent to make a step response of my system, I have figured out that Aqaucomputer had chooesen a PID gains rapresentation with non pratical sense.
K gains or T have a standard representation - form. Aquacomputer chose to adopt its own convenction for those coefficent (they cannot be negative) so it is impossible to a real PID expert to calculate the proper coefficent of its system just beacuse the aquacomputer coefficent representation are custom and not documented.

So don't waste your time with equations and step response..... it will lead you to a death end path.

Samstag, 11. Februar 2023, 01:26

After a lot of hours spent to study again PIDs, and hours spent to make a step response of my system, I have figured out that Aqaucomputer had chooesen a PID gains rapresentation with non pratical sense.
K gains or T have a standard representation - form. Aquacomputer chose to adopt its own convenction for those coefficent (they cannot be negative) so it is impossible to a real PID expert to calculate the proper coefficent of its system just beacuse the aquacomputer coefficent representation are custom and not documented.

So don't waste your time with equations and step response..... it will lead you to a death end path.
This is concerning. Can you elaborate a bit more on your findings?

Ähnliche Themen