Das Open-Control-Projekt - Die Alternative zur C-Control-I


Das Forum zur C-Control-1
Welche C-Control-Varianten existieren?
Übersicht - Suchen - Neueste 50 Beiträge - Neuer Beitrag - Login - Registrieren
INFO - FAQ - CC2-Forum - CCPro-Forum 

 Re: beleuchtungsdauer Kategorie: Programmierung CC-Plus (von Naturbanause - 31.10.2005 12:07)
 Als Antwort auf Re: beleuchtungsdauer von frank - 31.10.2005 10:28
Naturbanause nutzt:  CC1-M-Unit V1.1
Hallo,

mir persönlich sind Tabellen unsymphatisch, da sie zu Speicherfresser ausarten können (2 byte pro Eintrag). Eine andere Möglichkeit besteht in der Verwendung von ein paar Formeln. Das nachfolgende Programmbeispiel konnte ich nicht testen, der 31.März ist noch so weit... Ich habe es aber mit verschiedenen Daten nachgerechnet. Theoretisch funktioniert es. Nun zur Funktion: Pro Tag nimmt die Beleuchtungszeit von Okt. bis Dez 2 min ab und von Jan. bis März 2 min wieder zu (jeweils 1 min früh und 1 min abends). Am 31.12. ist die Beleuchtungszeit 182 min kürzer. Soweit ich erkennen kann, treten drei Fehler auf, die man aber vernachlässigen kann:
 - der 31.10. und der 01.11. sind gleich lang
 - der 31.01. und der 01.02. sind gleich lang
 - der 01.03. ist plötzlich 6 min länger als der 28.02
Die Ursache der Fehler ist die unterschiedliche Anzahl der Tage der Monate.

Gruß Mario

Programmbeispiel:


define licht port[1]

define Zeit word
define kuerzer byte

define LichtEin  730   ' Einschaltzeit im Format hhmm
define LichtAus 2130   ' Ausschaltzeit im Format hhmm

#loop
'
' weiterer Programmcode
'
if second = 59 then goto weiter   ' Vermeidung evtl. Fehlschaltungen bei Minuten- bzw. Stundenwechsel
if month > 3 or month < 10 then kuerzer = 0   ' Apr. bis Sept. - keine Änderung
if month >= 10 then kuerzer = (month - 10) * 30 + day   ' Okt. bis Dez. - Tage werden "kürzer"
if month <= 3 then kuerzer = (4 - month) * 30 + 1 - day   ' Jan. bis März - Tage werden wieder "länger"
Zeit = hour * 60 + minute
if Zeit >= LichtAus / 100 * 60 + LichtAus mod 100 - kuerzer then goto aus
if Zeit >= LichtEin / 100 * 60 + LichtEin mod 100 + kuerzer then goto ein
#aus
licht = off
goto weiter
#ein
licht = ein
#weiter
'
' weiterer Programmcode
'
goto loop

 Antwort schreiben

Bisherige Antworten:

Re: beleuchtungsdauer (von Frank - 31.10.2005 15:13)
    Re: beleuchtungsdauer (von Naturbanause - 31.10.2005 21:20)
        Re: beleuchtungsdauer (von frank - 31.10.2005 21:53)
Re: beleuchtungsdauer (von frank - 31.10.2005 13:57)