
|
INFO - FAQ - CC2-Forum - CCPro-Forum |
|
Ich (Anfänger) habe folgendes Problem: Ich habe für meine C-Control-Station I 2.0 (mit DCF-Modul) ein Anwesenheitssimulations-Programm geschrieben, das über 4 Stromstoßschalter Licht in 4 Stromkreisen an- u. ausschaltet, abhängig v. Monat (wg. Helligkeit draußen) u. Wochentag. Gestern u. heute habe ich es erlebt, dass die Relais 1 bzw. 2 einen Dauerimpuls auf das jeweilige Stromstoßrelais (wird natürlich warm) gaben.Die den Stromstoßschaltern zugeordneten manuell zu bedienenden Lichtschalter (besser -taster) waren blockiert. Was habe ich falsch gemacht ? Und noch eine Frage habe ich: Wie kann man die Anlage -- wenn man früher nach Hause kommt -- für einen Tag außer Betrieb setzen ? (anbei vereinfachtes Programm) Im Voraus vielen Dank! Friedel :-) '------ I/O PORTS --------- '-------------------------- define SDA port[9] define SCL port[10] '-------------------------- '---- SYSTEM MEMORY ------- '-------------------------- define EXTPORT byteport[4] define REL1 port[29] 'Weglicht define REL2 port[30] 'Garten define REL3 port[31] 'Eingang define REL4 port[32] 'Flur define aktuelleZeit word define a 1300 'Einschaltzeit define b word define c 2200 'Ausschaltzeit #INIT print"#ON_LCD#"; print"#INIT#"; SDA=on SCL=on EXTPORT=OFF 'braucht man die 5 letzten Zeilen? '.................................... #loop aktuelleZeit = Hour * 100 + Minute print"#L101#"; aktuelleZeit if month = 1 then b = a 'Januar; kann man vermutl. durch eine "case"-Abfrage optimieren if month = 2 then b = a + 100 'Febr. if month = 3 then b = a + 200 'März if month = 4 then b = a + 300 'April if month = 5 then b = a + 400 'Mai if month = 6 then b = a + 500 'Juni if month = 7 then b = a + 500 'Juli if month = 8 then b = a + 400 'Aug. if month = 9 then b = a + 300 'Sept. if month = 10 then b = a + 200 'Okt. if month = 11 then b = a + 100 'November if month = 12 then b = a 'Dezember print month print a print b if dow > 6 then dow = 0 'dient dazu, einen bug zu umgehen; 'if dow = 1 then goto Montag 'kann man vermutl. durch eine '"case"-Abfrage optimieren 'if dow = 2 then goto Dienstag if dow = 3 then goto Mittwoch 'if dow = 4 then goto Donnerstag 'if dow = 5 then goto Freitag 'if dow = 6 then goto Samstag 'if dow = 0 then goto Sonntag #Mittwoch 'Hier folgt Relais 1 (Weglicht): if aktuelleZeit = b + 320 and second = 1 then rel1=ON 'Licht einschalten if aktuelleZeit = b + 320 and second = 2 then rel1=OFF if aktuelleZeit = b + 345 and second = 1 then rel1=ON 'Licht ausschalten if aktuelleZeit = b + 345 and second = 2 then rel1=OFF if aktuelleZeit = b + 415 and second = 1 then rel1=ON 'Licht einschalten if aktuelleZeit = b + 535 and second = 2 then rel1=OFF if aktuelleZeit = c + 31 and second = 1 then rel1=on 'Licht ausschalten if aktuelleZeit = c + 31 and second = 2 then rel1=off '........................................ 'Hier folgt Relais 2 (Garten): if aktuelleZeit = b + 20 and second = 1 then rel2=ON 'Licht einschalten if aktuelleZeit = b + 20 and second = 2 then rel2=OFF if aktuelleZeit = b + 120 and second = 1 then rel2=ON 'Licht ausschalten if aktuelleZeit = b + 120 and second = 2 then rel2=OFF if aktuelleZeit = b + 123 and second = 1 then rel2=ON 'Licht einschalten if aktuelleZeit = b + 123 and second = 2 then rel2=OFF if aktuelleZeit = c + 31 and second = 30 then rel2=on 'Licht ausschalten if aktuelleZeit = c + 31 and second = 31 then rel2=off '........................................ 'Hier folgt Relais 3 (Eingang): if aktuelleZeit = b + 21 and second = 1 then rel3=ON 'Licht einschalten if aktuelleZeit = b + 21 and second = 2 then rel3=OFF if aktuelleZeit = c + 29 and second = 1 then rel3=on 'Licht ausschalten if aktuelleZeit = c + 29 and second = 2 then rel3=off 'Licht ausschalten '.......................................... 'Hier folgt Relais 4 (Flur): if aktuelleZeit = c + 35 and second = 40 then rel4=ON 'Licht einschalten if aktuelleZeit = c + 35 and second = 41 then rel4=OFF if aktuelleZeit = c + 40 and second = 1 then rel4=on 'Licht ausschalten if aktuelleZeit = c + 40 and second = 2 then rel4=off 'Licht ausschalten goto loop END |
| Antwort schreiben |