FB_WeeklyScheduler

Funktionsbaustein zum Schalten von Aktionen an bestimmten Wochentagen in jeder n-ten Woche im Jahr.

FB_WeeklyScheduler 1:

FB_WeeklyScheduler 2:

Der Funktionsbaustein benötigt zum Schalten das Durchschreiten des Zeitschaltpunktes. Ein nachträgliches Ändern der Schaltereignisse bzw. der Zeit ist daher nicht zulässig.

VAR_INPUT

uiPeriodicity      : UINT;
uiBegin            : UINT;
arrActiveWeekday   : ARRAY[0..6] OF BOOL;
eStartEnd          : ENUM;
stStartEnd         : TIMESTRUCT;
stSystemtime       : TIMESTRUCT;

uiPeriodicity: Periodizität bzw. Intervall. Darf im Bereich von 1..52 liegen.

uiBegin: Startwert für die Woche. Darf im Bereich von 1..52 liegen. Beispiel: uiPeriodicity = 5, uiBegin = 2: Schaltereignisse in KW2, KW7, KW12 etc. - uiPeriodicity = 3, uiBegin = 1: Schaltereignisse in KW1, KW4, KW7 etc.

arrActiveWeekday: Wochentag an dem geschaltet werden soll - arrActiveWeekday[0] => Sonntag .. arrActiveWeekday[6] => Samstag. Mehrfachauswahl ist möglich.

eStartEnd: Auswahl der Start-End-Definition.

TYPE E_StartEnd : ( eSTARTTIME_ENDTIME := 1, eSTARTTIME_DURATION := 2, eSTARTTIME_ENDEVENT := 3, eSTARTEVENT_ENDTIME := 4, eSTARTEVENT_DURATION := 5, eSTARTEVENT_ENDEVENT := 6 ); END_TYPE

eSTARTTIME_ENDTIME: Startzeit/Endzeit-Auswahl. Ist die Start-Tageszeit größer oder gleich der End-Tageszeit, so wird das Ende auf den nächsten Tag gelegt.

eSTARTTIME_DURATION: Startzeit/Dauer-Auswahl.

eSTARTTIME_ENDEVENT: Startzeit/Endereignis-Auswahl.

eSTARTEVENT_ENDTIME: Startereignis/Endzeit-Auswahl. Ist die Start-Tageszeit größer oder gleich der End-Tageszeit, so wird das Ende auf den nächsten Tag gelegt.

eSTARTEVENT_DURATION: Startereignis/Dauer-Auswahl.

eSTARTEVENT_ENDEVENT: Startereignis/Endereignis-Auswahl.

stStartEnd: Struktur mit den Parametern, welche Start und Ende definieren. Nicht benötigte Variablen bleiben intern unberücksichtigt, wie beispielsweise die Dauer bei Startzeit/Endzeit-Auswahl.

TYPE ST_StartEnd : STRUCT todStartTime : TOD; bStartEvent : BOOL; tDuration : TIME; todEndTime : TOD; bEndEvent : BOOL; END_STRUCT END_TYPE

todStartTime: Startzeit.

bStartEvent: Startereignis

tDuration: Schaltdauer.

todEndTime: Endzeit.

bEndEvent: Endereignis.

stSystemtime: aktuelle Uhrzeit im TIMESTRUCT-Format. Wichtig ist, dass jede Sekunde mitgezählt wird.

VAR_OUTPUT

bOut               : BOOL;
bTriggerOn         : BOOL;
bNoEventNextYear   : BOOL;
bError             : BOOL;
nErrorId           : UDINT;

bOut: Steuerausgang, welcher durch die Start- und Endereignisse ein- oder ausgeschaltet wird.

bTriggerOn: Triggerausgang für die Einschaltereignisse. Dieser Ausgang dient dazu, Einschaltereignisse zu erfassen. Sollten 2 Einschaltereignisse aufeinanderfolgen würde man dieses über den Steuerausgang bOut nicht bemerken, da dieser auf TRUE stehen bleiben würde, siehe auch zeitliche Überschneidungen in der Übersicht.

bNoEventNextYear: Innerhalb der nächsten 366 Tage kann kein Tag gefunden werden, auf den die Parametrierung zutrifft.

bError: Dieser Ausgang wird auf TRUE geschaltet, wenn die Parametrierung fehlerhaft ist. Der befehlsspezifische Fehlercode ist in nErrorId enthalten. Wird nach korrekter Parametrierung auf FALSE zurückgesetzt.

nErrorId: Enthält den befehlsspezifischen Fehlercode. Wird nach korrekter Parametrierung auf auf 0 zurückgesetzt. Siehe Fehlercodes.