From 9c4eb6ea1d8d410423250499fb60f075821c54be Mon Sep 17 00:00:00 2001 From: Uwe Jakobeit Date: Sat, 4 Apr 2026 23:26:45 +0200 Subject: [PATCH] Comments on magic numbers, some formatting; take-over comments from ST-Code for orientation --- controller/Controller.h | 73 ++++++++++++++++++++++++----------------- 1 file changed, 42 insertions(+), 31 deletions(-) diff --git a/controller/Controller.h b/controller/Controller.h index 3a44d24..ae42cbd 100755 --- a/controller/Controller.h +++ b/controller/Controller.h @@ -743,15 +743,15 @@ void Step(void) // ------------------------ // (* Parametersatzumschaltung über Kennfeld *) Index_Feuchte = static_cast( 8 - UTILITY_FUNCTIONS::real_to_int(limit((Sollwert_Feuchte - 10.0) / - (90.0 - 10.0) * 8.0, 0.0, 8.0) + 0.5)); + (90.0 - 10.0) * 8.0, 0.0, 8.0) + 0.5)); // 111 Index_Temperatur = static_cast( UTILITY_FUNCTIONS::real_to_int(limit((Sollwert_Temperatur - 10.0) / - (90.0 - 10.0) * 8.0, 0.0, 8.0) + 0.5)); + (90.0 - 10.0) * 8.0, 0.0, 8.0) + 0.5)); // 111 Index_Temperatur_ohne_Feuchte = static_cast(UTILITY_FUNCTIONS::real_to_int( limit((Sollwert_Temperatur - (-20.0)) / - (100.0 - (-20.0)) * 12.0, 0.0, 12.0) + 0.5)); + (100.0 - (-20.0)) * 12.0, 0.0, 12.0) + 0.5)); // 111 // (* Zuweisung der Regelparameter *) - Regler_Heizung_Xp = F_Xp_Heizung * Kennfeld_Regler_Heizung_Xp[Index_Temperatur_ohne_Feuchte]; - Regler_Kuehlung_Xp = F_Xp_Kuehlung * Kennfeld_Regler_Kuehlung_Xp[Index_Temperatur_ohne_Feuchte]; + Regler_Heizung_Xp = F_Xp_Heizung * Kennfeld_Regler_Heizung_Xp[Index_Temperatur_ohne_Feuchte]; + Regler_Kuehlung_Xp = F_Xp_Kuehlung * Kennfeld_Regler_Kuehlung_Xp[Index_Temperatur_ohne_Feuchte]; /* * UJ : Warum fehlt das? IF BDR_Feuchtemodul THEN @@ -776,17 +776,17 @@ void Step(void) !is_valid(Standardgradient_Regelabweichung_Temperatur) || Standardgradient_Regelabweichung_Temperatur <= 0.0) { - Zykluszeit_Regelabweichung_Temperatur = 600.0; + Zykluszeit_Regelabweichung_Temperatur = 600.0; // 111 } else { Zykluszeit_Regelabweichung_Temperatur = limit( 2.0 * 3.1415 * Standardregelabweichung_Temperatur / Standardgradient_Regelabweichung_Temperatur * 60.0, 120.0, - 1200.0); + 1200.0); // 111 } - Zykluszeit_Regelabweichung_Heizung = std::min(Zykluszeit_Regelabweichung_Temperatur, 300.0); - Zykluszeit_Regelabweichung_Kuehlung = std::max(Zykluszeit_Regelabweichung_Temperatur, 600.0); - Amplitude_Regelabweichung_Temperatur = 1.4142 * Standardregelabweichung_Temperatur; + Zykluszeit_Regelabweichung_Heizung = std::min(Zykluszeit_Regelabweichung_Temperatur, 300.0); // 111 + Zykluszeit_Regelabweichung_Kuehlung = std::max(Zykluszeit_Regelabweichung_Temperatur, 600.0); // 111 + Amplitude_Regelabweichung_Temperatur = 1.4142 * Standardregelabweichung_Temperatur; // 111 // Mittelwert Regelabweichung Temperatur if (!Startup_finished || !is_valid(Regelabweichung_Temperatur_Mittelwert) || Temperatursprung) @@ -845,13 +845,16 @@ void Step(void) 1.0); } + // UJ: Todo ST Code neu konvertieren !! // Temperatursprung // f_TemperatureJumpHandler(...) if (!Startup_finished) { Counter_Temperatursprung = 0.0; } - else if (((Sollwert_Temperatur != Sollwert_Temperatur_alt) && (std::abs(Regelabweichung_Temperatur) > 1.0)) || Tuer_offen) + else if (((Sollwert_Temperatur != Sollwert_Temperatur_alt) && + (std::abs(Regelabweichung_Temperatur) > 1.0)) || + Tuer_offen) { Counter_Temperatursprung = std::max(Counter_Temperatursprung + sampling_time, 0.0); } @@ -863,33 +866,39 @@ void Step(void) else if (Regelabweichung_Temperatur > std::max(0.5, 2.0 * Amplitude_Regelabweichung_Temperatur) || Regelabweichung_Temperatur < -std::max(0.5, 2.0 * Amplitude_Regelabweichung_Temperatur)) { - Counter_Temperatursprung = std::max(Counter_Temperatursprung + sampling_time, -120.0); + Counter_Temperatursprung = std::max(Counter_Temperatursprung + sampling_time, -120.0); // 111 } - Temperatursprung = (Counter_Temperatursprung > 0.0) || (Temperatursprung && Counter_Temperatursprung > -60.0); + Temperatursprung = (Counter_Temperatursprung > 0.0) || (Temperatursprung && Counter_Temperatursprung > -60.0); // 111 // Anti-wind-up Heizung (dynamisches Clamping) // ------ F_PID_Temperatuer.AntiWindUpHeater(...) - if ((Counter_Tuer_geschlossen < 180.0) || (Counter_Tuer_offen > 0.0)) + if ((Counter_Tuer_geschlossen < 180.0) || (Counter_Tuer_offen > 0.0)) // 111 { - Regler_Heizung_MIN = 0.0; + Regler_Heizung_MIN = 0.0; Regler_Heizung_I_Anteil_MIN = 0.0; - Regler_Heizung_MAX = 100.0; - Regler_Heizung_I_Anteil_MAX = limit(100.0 - P_Anteil_Heizung, Regler_Heizung_I_Anteil_MIN, Stellgrad_Heizung_Mittelwert); + Regler_Heizung_MAX = 100.0; // 111 + Regler_Heizung_I_Anteil_MAX = limit(100.0 - P_Anteil_Heizung, + Regler_Heizung_I_Anteil_MIN, + Stellgrad_Heizung_Mittelwert); } else { - Regler_Heizung_MIN = 0.0; + Regler_Heizung_MIN = 0.0; Regler_Heizung_I_Anteil_MIN = 0.0; - Regler_Heizung_MAX = 100.0; - if (Temperatursprung) - { - Regler_Heizung_I_Anteil_MAX = limit(100.0 - P_Anteil_Heizung, Regler_Heizung_I_Anteil_MIN, Regler_Heizung_MAX); - } - else - { - Regler_Heizung_I_Anteil_MAX = 100.0; - } -} + Regler_Heizung_MAX = 100.0; // 111 + Regler_Heizung_I_Anteil_MAX = limit(100.0 - P_Anteil_Heizung, + Regler_Heizung_I_Anteil_MIN, + Regler_Heizung_MAX); // 111 + } + + /* Anpassung P-Anteil Heizung bei Temperatursprung */ + if (Temperatursprung) + { + } + else + { + Regler_Heizung_I_Anteil_MAX = 100.0; // 111 + } //---------------------- // Anpassung Xp Heizung @@ -898,13 +907,13 @@ void Step(void) Regelabweichung_Temperatur_Mittelwert > 0.05 && !Temperatursprung) { - Regler_Heizung_Xp /= 2.0; + Regler_Heizung_Xp /= 2.0; // 111 } // Achtung: du referenzierst hier Zykluszeit_Regelabweichung_Feuchte später // – steht unten. Wir setzen default, falls noch uninitialisiert: if (!is_valid(Zykluszeit_Regelabweichung_Feuchte) || Zykluszeit_Regelabweichung_Feuchte <= 0.0) { - Zykluszeit_Regelabweichung_Feuchte = 600.0; + Zykluszeit_Regelabweichung_Feuchte = 600.0; // 111 } Regler_Heizung_Xp = Regler_Heizung_Xp * limit(Zykluszeit_Regelabweichung_Feuchte / 300.0, 1.0, 2.0) * @@ -917,7 +926,7 @@ void Step(void) if (!Startup_finished || !is_valid(Regelabweichung_Temperatur)) { P_Anteil_Heizung = 0.0; } else { - P_Anteil_Heizung = 100.0 / Regler_Heizung_Xp * Regelabweichung_Temperatur; + P_Anteil_Heizung = 100.0 / Regler_Heizung_Xp * Regelabweichung_Temperatur; // 111 } if (!Startup_finished || !is_valid(I_Anteil_Heizung)) { @@ -944,6 +953,7 @@ void Step(void) D_Anteil_Heizung) / (Tau_Heizung_Tv / sampling_time); } + /* Berechnung Stellgrad Heizung */ if (Counter_Tuer_offen > 60.0 || Regelung_AUS || !Startup_finished) { Stellgrad_Heizung = 0.0; @@ -955,6 +965,7 @@ void Step(void) Regler_Heizung_MAX); } + /* Berechnung Stellgrad Heizung Mittelwert * if (!Startup_finished || !is_valid(Stellgrad_Heizung_Mittelwert)) { Stellgrad_Heizung_Mittelwert = 0.0;