PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Zeitgesteurtes ein und ausschalten, Verständnisproblem



Accenter
02.02.2008, 18:49
Mein Haussteuerungsprojekt gibt über ein Relais die Türklingel frei (nur im eingestellten Zeitfenster). Es gihbt eine Ein und eine Ausschaltzeit (jeweils nur Stunden und Minuten).

Allerdings bekomm ich die Programmiereung nicht so hin, dass die Zeit auch mitten im "Zeitfenster" übernommen wird. Es muß also genau die Zeit eintreffen bis sich etwas ändert.

Hier mal mein Code:

Glockeschaltsub:
If _hour = _stundeein And _min = _minuteein Then
Glockeonoff = 1
End If
If _hour = _stundeaus And _min = _minuteaus Then
Glockeonoff = 0
End If
Return

Ich hab das ganze auch mit < und > versucht jedoch darf dann die Ausschaltzeit nie kleiner gewählt sein als die Einschlatzeit:

Biespiel:

10 Uhr EIN und 14 Uhr AUS funktioniert.

10 Uhr EIN und 01 Uhr AUS funktioniert dann nicht mehr.

Ich hoffe es kommt halbwegs verständlich rüber wo für mich das Problem liegt.

_werwurm_
02.02.2008, 20:24
ich denke ich würde das so lösen:

1. nicht mehr im code festlegen ob ein oder aus sondern nur noch DAS ein- oder ausgeschalten wird
2. die zeiten sortieren
3. festlegen ob ein/aus .. oder aus/ein geschalten wird

dadurch könnte man dann schreiben:

wenn "schaltzeit_1" dann schalte_um
wenn "schaltzeit_2" dann NOT schalte_um

das ist dann zwar nicht besonders leserlich aber müßte klappen.



edit: besser

wenn < "schaltzeit_1" dann schalte_um
sonst wenn < "schaltzeit_2" dann NOT schalte_um
sonst wenn > "schaltzeit_2" dann schalte_um

Accenter
03.02.2008, 18:41
Ich versteh es leider immer noch nicht. Hab mir das jetzt lange angesehen...

Ich hab eigene variablen (Stunden und Minuten) für die ein und ausschaltzeit.

Daraus muß ich jetzt irgend ne Formel bauen. Glockeonoff=1 aktiviert das Relais zur Glockenfreigabe.

Ich steh gedanklich grade ziemlich an und finde keine Lösung :-(

Vitis
03.02.2008, 20:48
mal angenommen man würde nicht stunden und minuten zählen, sondern
nur minuten ab 0 Uhr. dann könnte man eine abfrage machen
wenn > einschaltminuten und wenn < ausschaltminuten

Accenter
03.02.2008, 20:57
ja soweit kann ich folgen :-) das Problem ist für mich, dass die Ausschaltzeit auch kleiner der Einstellzeit sein kann und dadurch wirds schwer.

peterfido
03.02.2008, 21:01
Wenn bei größer und kleiner die Ausschaltzeit nicht kleiner als die Einschaltzeit sein darf, dann muss das halt abgefangen werden. In etwa
if stundeaus < stundeein then
stundeaus = stundeaus + 24
stunde = stunde + 24
endif

so würde ich es probieren. Falls das nicht klapt, dann würde ich es mit einer Schleife probieren. Erst alles ausschalten und dann die Schleife bis zur aktuellen Zeit laufen lassen und wenn diese dann die Schaltzeiten erreicht einschalten und evtl auch wieder ausschalten.

_werwurm_
04.02.2008, 02:31
ja oder halt sortieren:

normal wird erst ein- und dann ausgeschalten

wenn ausschalt < einschalt dann wird die logik halt umgekehrt - also erst aus- und dann einschalten

so in etwa meinte ich das weiter oben .. auch wenns bissl verworren rüberkam ;)

Accenter
04.02.2008, 13:32
ich weiß so ca auf was du hinaus möchtest aber wie ich das in einen Programmcode packe weiß ich noch nicht :-(