Problem mit Funktionsbaustein in ST SUCOSOFT 4 / MOELLER PS4/300

MarioR

Level-1
Beiträge
12
Reaktionspunkte
0
Zuviel Werbung?
-> 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:
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
 
Erledigt

Das manipulieren des "Zentral_tasters" hat, warum auch immer, nicht
funktioniert.
Deshalb habe ich einen eigenen "Merker" für den Urlaub Hoch und Runter
defieniert und diesen mit in den Funktionsbaustein für
"Rollladen_Hoch_Runter" eingefügt. Nun gehts.

Gruß Mario

Für Interessenten:
Das komplette Projekt habe ich als Zip angefügt.

Im Verzeichnis "Rolladen3\SOURCE" liegt der Quellcode der einzelnen
Bausteine:

FB_GAP.txt -
Funktionsbaustein für Zeitgesteuertes Hoch und Runterfahren.
Damit fahre ich die einzelnen Hausseiten im Sommer "Auf Lücke" runter,
wenn die Sonne auf der Hausseite ist und wieder hoch, wenn sie weg ist.
Die Zeiten habe ich einfach "geguckt".

FB_URL.txt -
Funktionsbaustein für die "Urlaubsfunktion", einfach mit einen Schalter
einen Inputkontakt der SPS geschlossen und eine Zeit(Stunde) für Hoch
bzw. Herunterfahren mitgeben und anhand des Monatstages und des
Wochentages wird eine "Zufallsminute" 30 +- x, X=(11-30) berechnet
und zu dieser Zeit wird dann alle Hoch bzw. Runter gefahren.

FB_UD.txt -
Funktionsbaustein für das Hoch und Runterfahren.
Abfrage der Rolladentaster, Zentraltaster, Zeitbausteine etc.
Vorrang für manuelle Bedienung vor Zeitbausteinen.
Kollisionskontrolle etc.

RLST.txt - "Mainprogramm"
Definieren der Ein- und Ausgänge, der Funktionsbausteine etc.
 

Anhänge

  • Rolladen3.zip
    110,2 KB · Aufrufe: 19
Zurück
Oben