Uhrzeitalarm OB's: Organisationsbausteine OB10 bis OB17

Systemseitig gibt es in S7 bereits bis zu 8 Organisationsbausteine, die Uhrzeitalarme auslösen und die Bearbeitung von OB1 stoppen können. Das sind OB10 bis OB17. Der Aufruf dieser OB's kann einmalig oder in einem bestimmten Intervall geschehen. Die Parametrierung erfolgt entweder über Step7 oder über Systemfunktionen SFC. Sie können den Aufruf der OB's für folgenden Intervall parametrieren:

  • Einmalig
  • Minütlich
  • Stündlich
  • Täglich
  • Wöchentlich
  • Monatlich
  • Jährlich
  • Jeweils am Monatsende (Monatsletzter)

Achtung: Bei der Parametrierung "monatlich" können Probleme auftreten, da ein Monat zwischen 28 und 31 Tage haben kann. Stellen Sie den Uhrzeitalarm für beispielsweise monatlich am 31. des Monats, würde der Uhrzeitalarm an Monaten mit 28 bis 30 Tagen nicht aufgerufen werden. Daher dürfen der 29., 30. und 31. eines Monats nicht gesetzt werden. Wenn Sie den Monatsende parametrieren wollen, nehmen Sie die Einstellung "Monatsletzter".

Einstellen und Aktivieren der Uhrzeitalarme OB10-OB17

Sie können die Uhrzeitalarme auf 3 verschiedene Art und Weisen einstellen und aktivieren.

  • Einstellen und aktivieren direkt in Step7 über die Hardwarekonfiguration
  • Einstellen in Step7 über die Hardwarekonfiguration und aktivieren durch Aufruf von SFC30 "ACT_TINT"
  • Einstellen durch Aufruf von SFC28 "SET_TINT" und aktivieren durch Aufruf von SFC30 "ACT_TINT"

Über die Hardwarekonfiguration

Öffnen Sie die Hardwarekonfiguration. Klicken Sie doppelt auf die CPU und wechseln Sie in das Register Uhrzeitalarme. Hier können Sie die Uhrzeitalarme einstellen und aktivieren. Setzen Sie den Haken unter "Aktiv", unter "Ausführung" stellen Sie den Intervall ein. In die nächsten Felder schreiben Sie ein gültiges Startdatum und die Uhrzeit.

OB10 in der Hardewarekonfiguration
Uhrzeitalarm in der Hardwarekonfiguration einstellen und aktivieren

Zwei Dinge fallen auf dieser Registerkarte auf. Die Uhrzeitalarme OB11 bis OB17 sind deaktiviert und können nicht aktiviert werden. Das liegt daran, dass fast alle CPU's S7-300er Baureihe nur 1 Uhrzeitalarm zur Verfügung stellen. Die S7-412 hat 2 Uhrzeitalarme. S7-414 bereits 4. Wie viele Uhrzeitalarme zur Verfügung stehen, hängt ganz von der CPU ab und die Anzahl der verfügbaren Uhrzeitalarme steht im Handbuch der CPU.

Die Prioritäten sind alle auf 2 voreingestellt. Wenn mehrere Uhrzeitalarme mit der selben Priorität vorhanden und eingestellt wurden, wird die Reihenfolge durch die Startereignisse bestimmt. Die Priorität ist bei den Uhrzeitalarmen ab der S7-400er Baureihe und bei CPU318 innerhalb des Bereichs 2 bis 23 änderbar.

Einstellen über die Hardwarekonfiguration und aktivieren über Aufruf von SFC30 "ACT_TINT".

Wenn Sie in der Hardwarekonfiguration den Haken bei "Aktiv" nicht setzen, die restlichen Einstellungen jedoch belassen, dann ist der Uhrzeitalarm zwar deaktiviert, jedoch eingestellt. In unserem Beispiel würde das bedeuten, dass die Einstellung auf täglich um 5:00 Uhr gesetzt ist.

Die Aktivierung erfolgt dann im Programm durch den Aufruf von SFC30 "ACT_TINT". Anbei ein Beispielprogramm wie OB10 aufgerufen werden kann mit den Kommentaren hinter den Zeilen.

CALL "ACT_TINT" //Rufe SFC30 auf
OB_NR:=10 //SFC30 ruft OB10 auf
RET_VAL:=MW30 //Schreibe evtl. Fehlercodes in MW30 ein
NOP 0

Einstellen über SFC28 und Aktivieren über SFC30

Die dritte Möglichkeit einen Uhrzeitalarm einzustellen und zu aktivieren ist über die Systemfunktionen SFC28 und SFC30. Hierbei wird nichts in der Hardwarekonfiguration eingestellt.

Das Einstellen wird über den Aufruf und Parametrierung von SFC 28 "SET_TINT" realisiert. Ein Beispielprogramm:

CALL "SET_TINT" //Aufruf von SFC28
OB_Nr:=10 //SFC28 ruft OB10 auf
SDT:#zeitpunkt //Variable für Startdatum und Zeitpunkt vom Typ DT
PERIOD:W#16#1001 //Intervall täglich
RET_VAL:MW30 //Schreibe Fehlercodes in MW30

Die Aktivierung kann wieder über den Aufruf von SFC30 (wie gezeigt) erfolgen. Wichtig ist, dass der Wert "Time of Day" nicht direkt am SDT-Eingang erfolgt, sondern über eine Variable, die im aufrufenden Baustein deklariert wird. Im rechts abgebildeten Beispiel haben wir die Variable "Zeitpunkt" direkt im OB1 deklariert und vom Typ "Date and Time" angegeben. Über die Funktion (in der Bibliothek zu finden) FC3 weisen wir der Variable das Datum und die Uhrzeit zu. Im nächsten Netzwerk haben wir über SFC28 den Uhrzeitalarm OB10 eingestellt und die Variable "zeitpunkt" am SDT-Eingang zugewiesen. Mit SFC30 wurde der Uhrzeitalarm OB10 aktiviert und arbeitet zum angegebenen Zeitpunkt sein Programm ab, das wir separat im OB10 direkt erstellt haben.

Uhrzeitalarm einstellen
Beispielprogramm um ein Uhrzeitalarm mit SFC28 einzustellen und mit SFC30 zu aktivieren

Uhrzeitalarm stornieren mit SFC29 "CAN_TINT"

Die Bearbeitung des Uhrzeitalarms kann durch SFC29 storniert werden. Ein Beispielprogramm:

CALL "CAN_TINT"
OB_Nr:=10
RET_VAL:MW30

Abfragen des Uhrzeitalarms mit SFC31 "QRY_TINT"

Mit SFC31 kann der kann der Status des Uhrzeitalarms abgefragt werden. Ein Beispielprogramm:

CALL "QRY_TINT" //Aufruf von SFC31
OB_Nr:=10 //Rufe Status von OB10 ab
RET_VAL:MW30 //Schreibe Fehlercodes in MW30
STATUS:MW40 //Schreibe Status in MW40

Status des Uhrzeitalarms
Bit 0=0, Uhrzeitalarm ist vom Betriebssystem freigegeben
Bit 1=0, neue Uhrzeitalarme werden nicht verworfen
Bit 2=0, Uhrzeitalarm ist nicht aktiviert oder ist abgelaufen
Bit 3=0, keine Bedeutung
Bit 4=0, Uhrzeitalarm-OB ist nicht geladen
Bit5=0, die Ausführung des Uhrzeitalarm-OB ist durch eine laufende Testfunktion gesperrt.

Um das Programm im OB10 zu erstellen, öffnen Sie OB10 entweder über die Bibliothek oder erstellen Sie OB10 manuell und schreiben das Programm.