Re: thread sensoren Kategorie: Sensoren (von reneforster - 26.10.2004 16:20) | ||
Als Antwort auf thread sensoren von Mario - 26.10.2004 15:41 | ||
| ||
Nachfolgend ein paar Dinge : //............................................................... //... ........ //.. Messen der Temperaturen und speichern in variable //............................................................... thread Sensoren { loop // diese Variablen müssen vor die Loop Schleife, sonst werden diese jedesmal // wieder neu definiert !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! string a,b,c,e,f; int n,ad,d; float U,R; b=""; U=0.004*ports.adc(0); R=(8000/U-1600)/10000; // mache deine Berechnung noch mit einer Hilfsvariable, sonst könnte sein // das bei Threadabgabe das ergebniss nicht stimmt und dein Schaltprogramm // falsche IST werte hat, so etwa : // hilsvariable = Formel/Berechnung ; // IST1 = Hilfsvariable global.IST1=1000/(math.ln(R)/3.988+1000/298)-273; str.putfloatf(b,global.IST1,1); a="Kessel : "; b=a+b; c=""; U=0.004*ports.adc(1); R=(8000/U-1600)/10000; // schon wieder IST1 ????????????????????????????????????????? global.IST1=1000/(math.ln(R)/3.988+1000/298)-273; str.putfloatf(c,global.IST1,1); a="Heizkreis"; c=a+c; e=""; U=0.004*ports.adc(2); R=(8000/U-1600)/10000; // schon wieder IST1 ????????????????????????????????????????? global.IST1=1000/(math.ln(R)/3.988+1000/298)-273; str.putfloatf(e,global.IST1,1); a="Boiler : "; e=a+e; f=""; U=0.004*ports.adc(3); R=(8000/U-1600)/10000; // schon wieder IST1 ????????????????????????????????????????? global.IST1=1000/(math.ln(R)/3.988+1000/298)-273; str.putfloatf(f,global.IST1,1); a="Pufferoben : "; f=a+f; } /************************************************************************* Hauptprogramm 1 *************************************************************************/ thread Programm1 { string a,s,b,c,e,f; int n,ad,d; float U,R; //************************************************************************ // hier beginnt die Programmschleife ------------------------------------- loop { // Programmteil für Fühler 1 *** Kesseltemperatur ****************************** station_lcd.clear();sleep 5;station_lcd.print("Temperatur im"); // was willst du hier anzeigen, Variable b hat den Wert 0 ??!!!!!!!! station_lcd.line2();station_lcd.print(b); sleep 2000; // zwei Sekunden Anzeige am Display if global.IST1 {ports.set(8,0); station_io.LEDoff(1);}//..Ports low wenn temp unter SOLL if global.IST1 {ports.set(9,0);station_io.LEDoff(2);}//....low wenn temp unter soll+5 Grad if global.IST1>=global.SOLL1 {ports.set(8,1);//..Port high pumpe kessel ein station_io.LEDon(1);} if global.IST1>(global.SOLL1+5) {ports.set(9,1);station_io.LEDon(2);}//..port high wenn temp 3 grad über SOLL // Programmteil für Fühler 2 *** Heizkreistemperatur *************************** station_lcd.clear();sleep 5;station_lcd.print("Temperatur im"); // was willst du hier anzeigen, Variable c hat den Wert 0 ??!!!!!!!! station_lcd.line2();station_lcd.print(c); sleep 2000;// zwei Sekunden Anzeige am Display if global.IST2 {ports.set(10,1);station_io.LEDon(6);}//...port high wenn temp niedrig if global.IST2>=global.SOLL2 {ports.set(10,0);station_io.LEDoff(6);}//..port low wenn temp=SOLL if global.IST4 {station_io.LEDoff(6);}// led off bei Puffer oben unter SOLL4 if global.IST2>global.SOLL2+3 {ports.set(11,1);station_io.LEDon(7);}//..port high wenn temp über SOLL if global.IST2<=global.SOLL2 {ports.set(11,0);station_io.LEDoff(7);}//..port low wenn temp=SOLL if global.IST4 {station_io.LEDoff(7);}//..Led off bei Pufferoben unter SOLL4 temp // ................Fühler 3 für Boiler ladung bis 60 Grad........ station_lcd.clear();sleep 5;station_lcd.print("Temperatur im"); // was willst du hier anzeigen, Variable e hat den Wert 0 ??!!!!!!!! station_lcd.line2();station_lcd.print(e); sleep 2000;// zwei Sekunden Anzeige am Display if global.IST3>=global.SOLL3 {ports.set(13,0);station_io.LEDoff(3);}//..Boiler stop bei 60 Grad if global.IST3 {station_io.LEDoff(3);} if global.IST3 {ports.set(13,1);station_io.LEDon(3);}//..boiler Laden //.............................................................................. // ..............Fühler4 Puffer oben ab 40 Grad heizungspumpe P4 ein,freigabe // freigabe für Boiler REL1,unter 40 Grad Mischerstop und schliessen,Boilerstop, station_lcd.clear();sleep 5;station_lcd.print("Temperatur "); // was willst du hier anzeigen, Variable e hat den Wert 0 ??!!!!!!!! station_lcd.line2();station_lcd.print(f); sleep 2000;// zwei Sekunden Anzeige am Display if global.IST4 {ports.set(12,0);station_io.LEDon(4);// Port P4 low unter 40 Grad station_io.RELon(1);//... freigabe stop Boiler stop,mischer zu ,relais extern ports.set(10,0);ports.set(11,0);station_io.LEDoff(6);station_io.LEDoff(7); ports.set(13,0);station_io.LEDoff(3);station_io.LEDoff(5);} if global.IST4>global.SOLL4 {ports.set(12,1);station_io.LEDoff(4);station_io.LEDon(5); station_io.RELoff(1);}//...freigabe Boiler und Mischer ,relais extern //..heizungspumpe ein }} thread für die anzeige string a,b,c,e,f; nochmals anlegen muss oder nicht?? Du müsstest dieVariable "c", wo bei stehen sollte "Heizkreis : xx Grad" als global anlegen, dann würde das schon gehen. Benutze aber bitte dafür einen anderen Namen als wie "c". z.B. globale Variable "TempHeizkreis" dann übergibst du Fühlerberchnungsthread immer in die Variable "TempHeizkreis". Jetzt kannst du die Variable "TemHeizkreis" von jeden Thread aus anzeigen lassen. Rene | ||
Antwort schreiben Antworten: Re: thread sensoren (von Mario - 26.10.2004 17:32) |