070914

Dependencies:   FreescaleIAP MODSERIAL mbed monitor timer0

Fork of 17_PT1000 by Temp27

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;
+                }               
+                
             }
             
             //------------------------------------------------------