-> Hier kostenlos registrieren
Hallo,
ich habe einen für meine Rolladensteuerung einen "Urlaubs"-Baustein
geschrieben der, wenn der Schalter "Urlaub" an ist um a-H und 30+- MIN
die Rollos hoch, bzw herunter fahren soll.
Dazu manipuliere ich den "Zentraleingang" des "HochRunter"-Bausteines.
hier nun der Code:
Das Problem ist, auf den Zentraltaster reagiert er, aber nicht auf den
"Urlaubsschalter".
Hat einer eine Idee warum ?
Gruß Mario
ich habe einen für meine Rolladensteuerung einen "Urlaubs"-Baustein
geschrieben der, wenn der Schalter "Urlaub" an ist um a-H und 30+- MIN
die Rollos hoch, bzw herunter fahren soll.
Dazu manipuliere ich den "Zentraleingang" des "HochRunter"-Bausteines.
hier nun der Code:
Code:
(*------ FB_URL -------*)
VAR_INPUT
TimeHour: USINT; (* Stunde für Hoch)
IsZEN_U: BOOL; (* Status des Zentraltasters Hoch*)
IsZEN_D: BOOL; (* Status des Zentraltasters Runter *)
IsURL: BOOL; (* Status des Urlaubs-Schalters *)
END_VAR
VAR_OUTPUT
ItsUpDown: BOOL;
END_VAR
VAR
_GetRealTimeClock: GetRealTimeClock;
_TimeMinute: USINT;
_MinuteAdd: USINT;
_Day: USINT;
_Weekday: USINT;
_Month: USINT;
_Hour: USINT;
_Minute: USINT;
_Second: USINT;
END_VAR
_GetRealTimeClock ( Year => ,
Month => _Month,
Day => _Day,
Weekday => _Weekday,
Hour => _Hour,
Minute => _Minute,
Second => _Second);
IF (IsZEN_U) THEN
ItsUpDown := IsZEN_U;
ELSE
IF (IsURL) THEN
IF (NOT IsZEN_D) THEN
IF (_Day > 30) THEN
_Day := 30;
END_IF;
IF (_Day < 10) THEN
_Day := 20 - _Day;
END_IF;
_MinuteAdd := _Day;
CASE _Weekday OF
0,2,4,6: _TimeMinute := 30 - _MinuteAdd;
ELSE _TimeMinute := 30 + _MinuteAdd;
END_CASE;
IF (_Hour = TimeHour) AND (_Minute = _TimeMinute) AND (_Second = 0) THEN
ItsUpDown := TRUE;
ELSE
ItsUpDown := IsZEN_U;
END_IF;
ELSE
ItsUpDown := FALSE;
END_IF;
ELSE
ItsUpDown := IsZEN_U;
END_IF;
END_IF;
(*------ FB_URL ENDE -------*)
(*Anwendung im Programm:*)
(*Zentraltaster*)
ZEN_FT_U(CLK := ZEN_I_U); (*F_TRIG zum entprellen des Tasters*)
ZEN_FT_D(CLK := ZEN_I_D); (*F_TRIG zum entprellen des Tasters*)
ZEN_U := ZEN_FT_U.Q;
ZEN_D := ZEN_FT_D.Q;
(*Urlaubsschalter*)
(*Hoch geht nur wenn weder ZEN_U noch ZEN_D aktiv Sind*)
(*Bei IsZEN_U = true wird IsZen_U "durchgeschleift"*)
URL_T ( TimeHour := 7,
IsURL := URL_I_UD,
IsZEN_U := ZEN_U,
IsZEN_D := ZEN_D,
ItsUpDown => ZEN_U);
(*Runter*)
URL_T ( TimeHour := 19,
IsURL := URL_I_UD,
IsZEN_U := ZEN_D,
IsZEN_D := ZEN_U,
ItsUpDown => ZEN_D);
Das Problem ist, auf den Zentraltaster reagiert er, aber nicht auf den
"Urlaubsschalter".
Hat einer eine Idee warum ?
Gruß Mario