Vereinfachtes blind_night

Begonnen von wolfii, 26. Juni 2009, 14:41:03

Vorheriges Thema - Nächstes Thema

0 Mitglieder und 2 Gäste betrachten dieses Thema.

wolfii

Hallo miteinander,

ich verwende die Jalousienmodule recht ausgiebig in unserem Haus http://www.sonnenhaus-landsham.de/, war aber mit der Funktion von blind_night nicht so ganz glücklich. Insbesondere hat mich gestört, dass blind_night für die laufende Nacht abbricht, wenn einmal eine Handbetätgung passiert ist.

Hier der Quellcode meines Moduls. Es fällt in den Automatikmodus zurück, sobald die Frist für die Handbedienung abgelaufen ist (in meinem Fall sind das zwei Stunden ...). Vielleicht hilfts ja jemandem.

Gruß

Wolfii

FUNCTION_BLOCK blind_night
VAR_INPUT
   UP, DN : BOOL;
   S_IN : BYTE;
   pi, ai : BYTE;
   E_night : BOOL := TRUE;
   E_day   : BOOL := TRUE;
   dtin : DT;
   sunrise, sunset : TOD;
END_VAR
VAR_INPUT CONSTANT
   sunrise_offset : TIME;
   sunset_offset : TIME;
   night_position : BYTE := 0;
   night_angle : BYTE := 0;
END_VAR
VAR_OUTPUT
   QU, QD : BOOL;
   status : BYTE;
   po, ao : BYTE;
END_VAR
VAR
   night : BOOL;
   last_night, last_day : DATE;
END_VAR

IF up AND dn THEN
   IF  (DT_TO_TOD(dtin) > sunset + sunset_offset)  AND e_night THEN
      (* enable night *)
      night := TRUE;
   ELSIF (DT_TO_TOD(dtin) > sunrise + sunrise_offset) AND night AND e_day  THEN
      (* disable night *)
      night := FALSE;
   END_IF;
ELSE
   IF (DT_TO_TOD(dtin) > sunrise + sunrise_offset AND DT_TO_TOD(dtin) < sunset + sunset_offset) THEN
      night := FALSE;
   END_IF
END_IF

(* shade at night only in auto mode and enable = true *)
IF UP AND DN AND night THEN
   status := 141;
   po := night_position;
   ao := night_angle;
   QU := UP;
   QD := DN;
ELSE
   QU := UP;
   QD := DN;
   po := pi;
   ao := ai;
   status := s_in;
END_IF;

DeejayT

Hey,
das ist cool, genau das hab ich noch gesucht!

Warte immer noch auf die Weiterentwicklung der Jalousiemodule, mal sehen da tut sich sicher noch was. Automatische Beschattung etc.....