
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
||
|
Hallo, ich auch nochmal: Das Problem liegt hier: if Uhrzeit >= 2000 then gosub AllesAus if uhrzeit >= 830 then gosub AllesAn Das Relais K1 wird ab 20:00 ausgeschalten, aber sofort wieder eingeschalten, da >=20:00 ja auch >=8:30 ist. Da musst Du Dir eine etwas andere Abfrage einfallen lassen, ggf. mit Zustandsflags arbeiten. MfG, MaPi > Hallo! > ICh schon wieder ;) > Also ich habe deinen Ratschlag befolgt und es klappt wunderbar.. Bei überschreiten der MaxTemp fällt das Relais ab und die Beleuchtung geht aus. > Doch ich habe nun ein weiteres Problem... :( > Abends schaltet K1 nicht aus, wie vorgesehen. Vielleicht hat einer eine Idee, woran´s liegen könnte? > > Hier der aktuelle Quellcode: > > define LED1 port[1] 'LEDs an Port 1-6 > define LED2 port[2] > define LED3 port[3] > define LED4 port[4] > define LED5 port[5] > define LED6 port[6] > > define K1 port[7] 'Relais 1 und 2 an Port 7 und 8 > define K2 port[8] 'K1=Licht K2=Licht(Heizen) > > define Temp ad[5] > > define T1 word 'Variable für Temperatur > > define Uhrzeit word 'Variable für die aktuelle Uhrzeit > > define minTemp 27 'Minimaltemperatur 27°C (Schalttemperatur) > define maxTemp 33 'Maximaltemperatur 33°C (Schalttemperatur) > > define absminTemp 20 'Absolute Minimaltemperatur (Alarmtemperatur) > define absmaxTemp 40 'Absolute Maximaltemperatur (Alarmtemperatur) > > > '***Das eigentliche Programm*** > > > #Anfang > LED1=OFF 'Hier wird sichergestellt, dass LED1-6 aus sind > LED2=OFF > LED3=OFF > LED4=OFF > LED5=OFF > LED6=OFF > K1=OFF 'Hier wird sichergestellt, dass Relais 1 und 2 aus sind > K2=OFF > > #loop 'Endlosschleife > if second=0 or second=59 then goto loop 'Verhindert Fehler beim Stundenwechsel > Uhrzeit=hour*100+minute 'Aktuelle Uhrzeit für Auswertung zwischenspeichern > T1=(Temp*5-250)/10 'Hier wird die Temperatur errechnet > if Uhrzeit >= 2000 then gosub AllesAus > if uhrzeit >= 830 then gosub AllesAn > goto loop > > #AllesAn 'wird morgens um 8.30Uhr aufgerufen > K1=ON 'Relais 1 zieht an ("Sonnenaufgang") > if T1<(minTemp) then K2=ON 'Wenn Temp <27 zieht K2 an (heizen) > if T1>(maxTemp) then K2=OFF 'Wenn Temp >33 fällt K2 ab (heizen aus) > if T1<(absminTemp) then gosub minAlarm > if T1>(absmaxTemp) then gosub maxAlarm > return > > #minAlarm 'LED1 blinkt und es ertönt ein Alarmsignal > pause 1 > LED1=1 > BEEP 250,20,0 > pause 1 > LED1=0 > BEEP 350,20,0 > return > > #maxAlarm 'LED6 blinkt und es ertönt ein Alarmsignal > pause 1 > LED6=1 > BEEP 250,20,0 > pause 1 > LED6=0 > BEEP 350,20,0 > return > > #AllesAus 'wird abends um 20.00Uhr aufgerufen > K1=OFF 'Beleuchtung geht aus > K2=OFF > return > > > > Hallo! > > Dankeschön für die schnelle Hilfe. Hatte da wohl echt ein Brett vorm Kopp :D > > Werd´s gleich mal ausprobieren! :) > > Also, danke nochmals ;) > > > > > > > > > Hallo Florian, > > > das generelle Problem ist, dass die Temperatur nur einmal bei Start des Programms abgefragt und berechnet wird. Später in der Endlosschleife nimmst Du deshalb immer den gleichen Temp.wert her, die Steuerung kann deshalb generell nicht auf Temperaturwechsel reagieren. > > > Schieb die Messung/Berechnung der Temperatur in die Endlosschleife und es wird funktionieren. > > > > > > Am einfachsten findest Du den Bug mit dem Simulator (-->überwachte Variablen ; T1 überwachen bei maueller Änderung von AD5). > > > > > > Grüsse, MaPi > > > > > > > > > > Hallo liebe Forengemeinde! > > > > Ich habe mich in den letzten Wochen viel mit C-Control, bzw Basic-Programmierung beschäftigt und mir mit Hilfe dieses Forums und verschiedenen anderen Seiten eine kleine Terrariensteuerung gebastelt. Sie beinhaltet eine einfache Zeitschaltuhr, sowie einen Temperaaturbereich der überwacht/geregelt wird. Jetzt habe ich das Problem, dass ich irgendeinen Fehler im Quellcode habe... Auf jeden Fall schaltrt das Relais bei vorgegebener Übertemperatur nicht ab. Vielleicht kann sich ja mal jemand den Quellcode ansehen und mir sagen, was der Fehler ist.. Ich denke mal für die erfahrenen Nutzer hier dürfte das kein Problem sein. > > > > Also hier der Quellcode, und schonmal ein herzliches Dankeschön im voraus :) > > > > > > > > > > > > > > > > 'Geckoterrariumsteuerung Test.bas > > > > > > > > define LED1 port[1] 'LEDs an Port 1-6 > > > > define LED2 port[2] > > > > define LED3 port[3] > > > > define LED4 port[4] > > > > define LED5 port[5] > > > > define LED6 port[6] > > > > > > > > define K1 port[7] 'Relais 1 und 2 an Port 7 und 8 > > > > define K2 port[8] 'K1=Licht K2=Licht(Heizen) > > > > > > > > define Temp ad[5] > > > > > > > > define T1 word 'Variable für Temperatur > > > > > > > > define Uhrzeit word 'Variable für die aktuelle Uhrzeit > > > > > > > > define minTemp 27 'Minimaltemperatur 27°C (Schalttemperatur) > > > > define maxTemp 33 'Maximaltemperatur 33°C (Schalttemperatur) > > > > > > > > define absminTemp 20 'Absolute Minimaltemperatur (Alarmtemperatur) > > > > define absmaxTemp 40 'Absolute Maximaltemperatur (Alarmtemperatur) > > > > > > > > > > > > '***Das eigentliche Programm*** > > > > > > > > > > > > #Anfang > > > > LED1=OFF 'Hier wird sichergestellt, dass LED1-6 aus sind > > > > LED2=OFF > > > > LED3=OFF > > > > LED4=OFF > > > > LED5=OFF > > > > LED6=OFF > > > > K1=OFF 'Hier wird sichergestellt, dass Relais 1 und 2 aus sind > > > > K2=OFF > > > > T1=(Temp*5-250)/10 'Hier wird die Temperatur errechnet > > > > > > > > #loop 'Endlosschleife > > > > if second=0 or second=59 then goto loop 'Verhindert Fehler beim Stundenwechsel > > > > Uhrzeit=hour*100+minute 'Aktuelle Uhrzeit für Auswertung zwischenspeichern > > > > if Uhrzeit >= 2000 then gosub AllesAus > > > > if uhrzeit >= 830 then gosub AllesAn > > > > goto loop > > > > > > > > #AllesAn 'wird morgens um 8.30Uhr aufgerufen > > > > K1=ON 'Relais 1 zieht an ("Sonnenaufgang") > > > > if T1<(minTemp) then K2=ON 'Wenn Temp <27 zieht K2 an (heizen) > > > > if T1>(maxTemp) then K2=OFF 'Wenn Temp >33 fällt K2 ab (heizen aus) > > > > if T1<(absminTemp) then gosub minAlarm > > > > if T1>(absmaxTemp) then gosub maxAlarm > > > > return > > > > > > > > #minAlarm 'LED1 blinkt und es ertönt ein Alarmsignal > > > > pause 1 > > > > LED1=1 > > > > BEEP 250,20,0 > > > > pause 1 > > > > LED1=0 > > > > BEEP 350,20,0 > > > > return > > > > > > > > #maxAlarm 'LED6 blinkt und es ertönt ein Alarmsignal > > > > pause 1 > > > > LED6=1 > > > > BEEP 250,20,0 > > > > pause 1 > > > > LED6=0 > > > > BEEP 350,20,0 > > > > return > > > > > > > > #AllesAus 'wird abends um 20.00Uhr aufgerufen > > > > K1=OFF 'Beleuchtung geht aus > > > > K2=OFF > > > > return > > > > > > > > |
| Antwort schreiben |