Programm bleibt stehen Kategorie: Programmierung (von Horst - 3.01.2005 20:57) | ||
| ||
Hallo ich benutze die Control II für die Heizungsteuerung. Die Anzeige auf dem externen LCD, die eigentliche Steuerung, die Zeitverwaltung, Datenspeicherung auf 4 Mbit und die Temperaturabfrage der 8 Temperaturmodule über den TWBus laufen in verschiedene Treads. Die Steuerung läuft tadellos bis auf die Tatsache dass nach einiger Zeit sich die Steuerung aufhängt. Sobald der Thread für die Temperaturerfassung nicht gestartet wird läuft die Steuerung. Wird der Temperaturthread gestartet steht die Steuerung ab und zu nach einigen Minuten jedoch spätestestens einigen Stunden. Hat jemand hierfür eine Erklärung oder ähnliche Probleme? Ich würde mich freuen wenn jemand eine Lösung für dieses Problem hat. Bin etwas verzweifelt da´ich schon seit ein paar Woche versuche den Fehler zu finden. Kann es zu Timingproblemen kommen wenn da das externe LCD auch über die Ports P1 gesteuert wird???? Hier habe ich ein Teil des Temperturthreads abgebildet. //******************************************** function Modemstatus() returns int { long erg; capture global.pf; twb.init(); erg = twbs.rw_frame(0, allg.Modem_Adresse, 0, 0, 0); release; return (erg); } function twb_temp(byte adr) returns int { int Temp; string s; byte i; //Temperatur über TWB abfragen for i = 1 ... 3 { capture global.pf; Temp = twbs.stemp(adr); release; if (Temp < 2000) break; } //Temperatur oder Fehler zurück melden return(Temp); } //**************************************** // Temperatur Thread //**************************************** thread Temperaturen { int Temp; byte i; string s1, s2; //TWB-Bus initialisieren Temp = sensor_prog.Modemstatus(); allg.anz1 = "Modemstatus:"; s1 = "Modemstatus:"; if Temp < 2000 { allg.Einst.Zustand = allg.setBit(allg.Einst.Zustand, allg.z_Twb, allg.OFF); allg.anz2 = " OK"; s2 = " OK"; //anzeige.ausgebenl(s1, s2); } else { allg.Einst.Zustand = allg.setBit(allg.Einst.Zustand, allg.z_Twb, allg.ON); //Fehlermeldung anzeigen allg.anz2 = sensor_prog.ERR[Temp - 2001]; s2 = sensor_prog.ERR[Temp - 2001]; allg.anz_func = 1; } run 1000; loop { if allg.getBit(allg.Einst.Zustand, allg.z_Simu) { //Temparaturen aus Temperaturvektor nehmen // nicht neu setzen continue; } if allg.getBit(allg.Einst.Zustand, allg.z_Twb) { //Temparaturen aus Temperaturvektor nehmen // nicht neu setzen continue; } //Hier werden die Temperaturen abgefragt und in die Globalen Variablen //geschrieben //Brenner abfragen Temp = twb_temp(allg.t_Brenner + 1); if Temp < 2000 allg.Temp[allg.t_Brenner] = Temp + allg.Einst.Tkorr_Brenner; //Vorlauf abfragen //twb.init(); Temp = twb_temp(allg.t_Vorlauf + 1); if Temp < 2000 allg.Temp[allg.t_Vorlauf] = Temp + allg.Einst.Tkorr_Vorlauf; //Aussentemperatur abfragen //twb.init(); Temp = twb_temp(allg.t_Aussen + 1); if Temp < 2000 allg.Temp[allg.t_Aussen] = Temp + allg.Einst.Tkorr_Aussen; //Brauchwasser abfragen //twb.init(); Temp = twb_temp(allg.t_Brauchw + 1); if Temp < 2000 allg.Temp[allg.t_Brauchw] = Temp + allg.Einst.Tkorr_Brauchw; //Solar abfragen //twb.init(); Temp = twb_temp(allg.t_Solar_u + 1); if Temp < 2000 allg.Temp[allg.t_Solar_u] = Temp + allg.Einst.Tkorr_Solar_u; //twb.init(); Temp = twb_temp(allg.t_Solar_o + 1); if Temp < 2000 allg.Temp[allg.t_Solar_o] = Temp + allg.Einst.Tkorr_Solar_o; //Kaminofen abfragen //twb.init(); Temp = twb_temp(allg.t_Kamin + 1); if Temp < 2000 allg.Temp[allg.t_Kamin] = Temp + allg.Einst.Tkorr_Kamin; //Heizkreis abfragen //twb.init(); Temp = twb_temp(allg.t_Heiz + 1); if Temp < 2000 allg.Temp[allg.t_Heiz] = Temp + allg.Einst.Tkorr_Heiz; sleep 1000; } //************************************************************ | ||
Antwort schreiben Antworten: Re: Programm bleibt stehen (von André H. - 4.01.2005 16:39) Re: Programm bleibt stehen (von Horst - 4.01.2005 19:39) Re: Programm bleibt stehen (von André H. - 4.01.2005 20:35) Re: Programm bleibt stehen (von M.Seidel - 4.01.2005 10:28) Re: Programm bleibt stehen (von Horst - 4.01.2005 19:41) Re: Programm bleibt stehen (von Thomas - 4.01.2005 10:01) Re: Programm bleibt stehen (von Horst - 13.01.2005 13:26) Re: Programm bleibt stehen (von Günni - 4.01.2005 9:47) Re: Programm bleibt stehen (von Horst - 13.01.2005 13:27) |