Update vom 10.05.15
Dependencies: FreescaleIAP MODSERIAL mbed monitor timer0
Fork of 18_PT1000 by
Diff: main.cpp
- Revision:
- 16:3a4350104b68
- Parent:
- 13:a44b80b168b2
- Child:
- 17:c307f8c96ab1
--- a/main.cpp Wed Aug 20 12:19:13 2014 +0000 +++ b/main.cpp Sat Aug 30 08:38:54 2014 +0000 @@ -2,6 +2,7 @@ // die Ausgabe auf das Format #nr val umgestellt // 03.08.14 Monitorbefehle hinzugefügt // 08.08.14 Programm um Tropfenerfassung erweitert +// 30.08.14 die Temperaturbegrenzung bei ausgeschaltert Tropfensteuerung geändert #include "mbed.h" #include "ConfigFile.h" @@ -380,51 +381,72 @@ //pc.printf("%d;",temp_word); // Rohwert ausgeben pc.printf("Temp-R %0.2f; ",temp_float); - //------------------------------------------------------ - // Regelabweichung berechnen - - temp_diff = (soll_wert - temp_soll); - - //------------------------------------------------------ - // Begrenzen der Eingangsgröße - - if(temp_diff > soll_wert)temp_diff = soll_wert; + // die Temperaturregelung ist nur bei aktiver Tropfensteuerung eingeschaltet + // + if (f_flag) + { + //------------------------------------------------------ + // Regelabweichung berechnen + + temp_diff = (soll_wert - temp_soll); - //temp_neu = ((temp_diff*0.0005) + (temp_alt*0.9)); - - //------------------------------------------------------ - // bei geringen Abweichungen ein I-Anteil berechnen, damit Regelabweichung - // auf 0 gefahren werden - if(temp_diff < 3){ - esum += temp_diff * 0.00001; + //------------------------------------------------------ + // Begrenzen der Eingangsgröße + + if(temp_diff > soll_wert)temp_diff = soll_wert; + + //temp_neu = ((temp_diff*0.0005) + (temp_alt*0.9)); + + //------------------------------------------------------ + // bei geringen Abweichungen ein I-Anteil berechnen, damit Regelabweichung + // auf 0 gefahren werden + if(temp_diff < 3){ + esum += temp_diff * 0.00001; + } + + //------------------------------------------------------ + // berechnen der Steuergröße + + temp_neu = (temp_diff*0.0005) + esum; + + //------------------------------------------------------ + // Regler nach oben begrezen + + if(temp_neu > 0.02){ + temp_neu = 0.02; + } + + //------------------------------------------------------ + // Regler nach unten begrezen + + if(temp_soll > soll_wert){ + temp_neu = 0.0; + esum = 0.0; + } + } //------------------------------------------------------ - // berechnen der Steuergröße - - temp_neu = (temp_diff*0.0005) + esum; - - //------------------------------------------------------ - // Regler nach oben begrezen - - if(temp_neu > 0.02){ - temp_neu = 0.02; - } - - //------------------------------------------------------ - // Regler nach unten begrezen - - if(temp_soll > soll_wert){ - temp_neu = 0.0; - esum = 0.0; + // Zulässige Temperatur für den Heizwiderstand begrezen + // bei eingeschalteter Trofensteuerung wird die Temperatur + // auf T_TEMP_MAX und bei ausgeschalteter Tropfensteuerung + // auf soll_wert begrenzt + if (f_flag) + { + if(temp_float > R_TEMP_MAX) + { + temp_neu = 0.0; + esum = 0.0; + } } - - //------------------------------------------------------ - // Zulössige Temperatur für den Heizwiderstand begrezen - - if(temp_float > R_TEMP_MAX){ - temp_neu = 0.0; - esum = 0.0; + else + { + if(temp_float > soll_wert) + { + temp_neu = 0.0; + esum = 0.0; + } + } //------------------------------------------------------