Schaltuhr Programmbeispiel

Das folgende Programmbeispiel soll anhand einer Tages-Schaltuhr verdeutlichen, wie die Bausteine insbesondere in Hinblick auf die Eingänge eStartEnd, stStartEnd und stSystemTime zu parametrieren sind.

Um die Systemzeit auf PC bzw. CX basierenden Systemen auszulesen empfiehlt sich die Verwendung des Bausteines NT_GetTime(), welcher in der Bibliothek TcUtilities.lib vorhanden ist. Ein Programm zum Auslesen könnte folgendermaßen aussehen:

Schaltuhr Programmbeispiel 1:

Damit hat man eine Zeitbasis, mit der sich die Scheduler-Bausteine in Bezug auf den Zeiteingang stSystemTime parametrieren lassen. Am Eingang eStartEnd wird der Enumerator angelegt, der dem gewünschten Verhalten entspricht:

eSTARTTIME_ENDTIME

Startkriterium: Uhrzeit - Endkriterium: Uhrzeit

eSTARTTIME_DURATION

Startkriterium: Uhrzeit - Endkriterium: Dauer

eSTARTTIME_ENDEVENT

Startkriterium: Uhrzeit - Endkriterium: Ereignis (Boolscher Eingang)

eSTARTEVENT_ENDTIME

Startkriterium: Ereignis (Boolescher Eingang) - Endkriterium: Uhrzeit

eSTARTEVENT_DURATION

Startkriterium: Ereignis (Boolescher Eingang) - Endkriterium: Dauer

eSTARTEVENT_ENDEVENT

Startkriterium: Ereignis (Boolescher Eingang) - Endkriterium: Ereignis (Boolescher Eingang)


Für den Eingang stStartEnd muss eine Strukturvariable gleichen Typs deklariert werden, welche hier im Beispiel ebenfalls stStartEnd genannt wird. Im Programm werden dann die Untervariablen dieser Struktur beschrieben, die für die Funktionsart wichtig sind. Für das gezeigte Beispiel sind das todStartTime und tDuration. Alle anderen Variablen werden nicht gelesen und müssen daher auch nicht beschrieben werden.

Schaltuhr Programmbeispiel 2:


Beide Programme müssen im MAIN-Baustein aufgerufen werden, wobei der Programmteil P_SchedulerExample erst dann durchlaufen werden darf, wenn der Programmteil P_SystemTime gültige Daten liefert, also P_SystemTimeValid auf TRUE steht. Diese Verriegelung rührt daher, dass das Lesen der Uhrzeit einige Zyklen dauert und somit bei Programmstart eine ungültige Zeit vorliegt, mit der nicht gearbeitet werden darf.

Schaltuhr Programmbeispiel 3:

Wird das Programm am 1.Januar gestartet, so ergibt sich folgender Verlauf:

Schaltuhr Programmbeispiel 4:

Die Tage an denen geschaltet wird beginnen mit dem 2. des Jahres (uiBegin:=2). Das setzt sich dann alle 3 Tage fort (uiPeriodicity:=3). Der Einschaltzeitpunkt liegt bei 15 Uhr (stStartEnd.todStartTime := tod#15:00:00) und die Schaltdauer beträgt 6 Stunden (stStartEnd.tDuration := t#6h).