Re: Programm läuft nicht Kategorie: Programmierung (von Hans - 12.05.2007 20:57) | ||
Als Antwort auf Re: Programm läuft nicht von Walter - 12.05.2007 20:48 | ||
| ||
Hallo ich würde den Befehl "loop" an das Ende setzen So wie es aufgebaut ist wiederholt sich nur Programminfo an LCD Die anderen Zeilen werden garnicht angesprungen Gru� Hans > Hallo! > > Bin wieder mal kurz vor einem Nervenzusammenbruch, grins! > Mein Programm läuft einfach nicht - die �bertragung auf die C-Controll klappt, der > Text Solarsteuerung und Datum erscheint und bleibt für ewig stehen. Es passiert > dann einfach nichts mehr. > Einzelne Programmteile habe ich in der Entwicklung seperat ablaufen lassen, hat funkioniert. > Das komplette Programm läuft allerdings nicht. Verschiedene Parameter > müssen noch korrigiert werden (sleep, Temperaturdifferenzen...) > Ich hoffe mir kann jemand sagen, was ich falsch mache. > > Danke, Walter > > > //------------ > thread main > //------------ > > { > int delta; > int differenz; > string s,p,t; > int n,ad,d; > float U1,U2,U3,R1,R2,R3,T1,T2,T3; > station_io.init(); > station_io.RELoff(1); > station_io.RELoff(2); > station_lcd.init(); > > > > /******** Programminfo am LCD *************/ > > station_io.Clear(); > station_lcd.clear(); > station_lcd.print(" Solarsteuerung"); > station_lcd.line2(); > station_lcd.print(" 2007_05_10"); > sleep 5000; > > loop > > { > > /******** Temperaturmessungen am Boiler **********/ > > { > station_lcd.clear(); > p=" "; > U1=0.004*ports.adc(4); //Boilersensor auf Klemme 32 > R1=5/U1-1; > T1=10*(1000/(math.ln(R1)/4.3+1000/298)-273); //modifizierte Formel > str.putfloatf(p,T1,1); > p=p+" Boilertemp."; > station_lcd.print(p); > if T1 > 70 //Boilertemperatur 70 Grad > { station_io.LEDon(1); //Leuchtsignale an der C-Controll > station_io.LEDon(2); > station_io.LEDon(3); > station_io.LEDon(4); > station_io.LEDon(5); > sleep 5000; //Wert wird später höher gesetzt > } > if T1 < 65 > { station_io.LEDoff(1); > station_io.LEDoff(2); > station_io.LEDoff(3); > station_io.LEDoff(4); > station_io.LEDoff(5); > sleep 2000; > } > } > > /********** Absorbertemperatur (Vorlauf) **********/ > { > station_lcd.clear(); > t=" "; > U2=0.004*ports.adc(2); //Absorbersensor auf Klemme 30 > R2=5/U2-1; > T2=10*(1000/(math.ln(R2)/3.988+1000/298)-273); //modifizierte Formel=3.988 > str.putfloatf(t,T2,1); > t=t+" Absorbtemp"; > station_lcd.print(t); > sleep 2000; > > > /********** Rücklauftemperatur **********/ > > s=" "; > U3=0.004*ports.adc(3); //Rücklaufsensor auf Klemme 31 > R3=5/U3-1; > T3=10*(1000/(math.ln(R3)/3.988+1000/298)-273); //modifizierte Formel=3.988 > str.putfloatf(s,T3,1); > s=s+" Rucklauftemp"; > station_lcd.line2(); > station_lcd.print(s); > sleep 2000; > > > /********** Differenzsteuerung der Pumpe **********/ > > differenz = T2 - T3; // Klemme 30 und 31 > if differenz > 10 // 10 Grad Differenz > { ports.set(8,1); sleep 2000; // Pumpe ein Minirelais auf Kl. 46 > station_io.LEDon(6); sleep 2000; // Lichtsignal wenn Pumpe läuft > } > if differenz < 7 // bei <7 Grad Differenz > { ports.set(8,0); sleep 2000; // Pumpe aus > station_io.LEDoff(6); sleep 2000; // Lichtsignal aus > } > } > > // if math.abs(differenz) <= 9 // alles ausschalten > // { ports.set(8,0); sleep 2000; // Pumpe aus > > sleep 2000; > > > > /********** Lichtmessung zur Nachführung **********/ > > > delta = ports.adc(0) - ports.adc(1); //Lichtsensoren auf Klemme 28 und 29 > if delta > 200 // Einschaltbedingung Rechtslauf > { station_io.RELoff(1); sleep 2000; // erst ausschalten > station_io.RELon(2); sleep 2000; // dann einschalten > } > if delta < -200 // Einschaltbedingung Linkslauf > { station_io.RELoff(2); sleep 2000; // erst ausschalten > station_io.RELon(1); sleep 2000; // dann einschalten > } > if math.abs(delta) <= 200 // alles ausschalten > { station_io.RELoff(1); sleep 2000; // ausschalten > station_io.RELoff(2); sleep 2000; // ausschalten > } > } > } > > | ||
Antwort schreiben Antworten: |