OB_RT: OB Programmlaufzeit ermitteln (S7-400) - STEP 7

Erweiterte Anweisungen (S7-300, S7-400)

ft:publication_title
Erweiterte Anweisungen (S7-300, S7-400)
Product
STEP 7
Version
V20
Publication date
11/2024
Language
de-DE
OB_RT: OB Programmlaufzeit ermitteln

Beschreibung

Mit der Anweisung können Sie die Laufzeit einzelner OBs über verschiedene Zeiträume ermitteln.

Hinweis

Die Anweisung liefert die zuletzt aufgezeichneten Zeitwerte für den gewünschten OB unabhängig davon, ob dieser momentan geladen ist oder nicht. Die Daten werden auch durch Löschen oder Überladen nicht zurückgesetzt, sondern nur durch einen Neustart (Warmstart).

Parameter

Die folgende Tabelle zeigt die Parameter der Anweisung "OB_RT":

Parameter

Deklaration

Datentyp

Speicherbereich

Bedeutung

OB_NR

Input

INT

E, A, M, D, L

OB, dessen zuletzt ermittelte Zeiten abgefragt werden sollen. Gültige OB-Nummern sind alle in Ihrer CPU realisierten OBs mit Ausnahme von OB 121 und OB 122. Die Bearbeitung von Synchronfehlern zählt zur Bearbeitungszeit des jeweils fehlerverursachenden OB. Die Angabe der OBs 121 und 122 oder nicht in der CPU realisierten OBs führt zu einer Fehlermeldung.

Bei OB_NR=0 werden die Daten des OB, in dessen Kontext die Anweisung aufgerufen wurde, übergeben. Bei Aufruf von der Anweisung "OB_RT" in den OBs 121 oder 122 mit OB_NR=0 werden die Zeiten des alarmverursachenden OB inclusive der Zeiten im OB 12x ausgegeben.

RET_VAL

Return

INT

E, A, M, D, L

Tritt während der Bearbeitung der Anweisung ein Fehler auf, enthält der Rückgabewert einen Fehlercode.

Andernfalls enthält RET_VAL die Nummer des OB, für den diese Daten abgerufen wurden.

PRIO

Output

INT

E, A, M, D, L

In PRIO wird die Prioritätsklasse des abgefragten OB ausgegeben.

LAST_RT

Output

DINT

E, A, M, D, L

Laufzeit der letzten abgeschlossenen Bearbeitung des angegebenen OB in Mikrosekunden.
Falls der OB, zu dem Sie Laufzeiten ermitteln wollen, momentan gerade in Bearbeitung ist, gilt:
Beim ersten Aufruf von der Anweisung "OB_RT" während der aktuellen Bearbeitung des gewünschten OB wird in LAST_RT die Laufzeit der letzten abgeschlossenen OB-Bearbeitung angegeben.
Bei jedem weiteren Aufruf der Anweisung "OB_RT" während der aktuellen Bearbeitung des gewünschten OB wird in LAST_RT

  • DW#16#FFFF FFFF angegeben, falls im gewünschten OB bereits ein "OB_RT"-Aufruf mit OB_NR=0 erfolgt ist.

  • die Laufzeit der letzten abgeschlossenen OB-Bearbeitung angegeben, falls im gewünschten OB kein "OB_RT"-Aufruf mit OB_NR=0 erfolgt ist.

Hinweis: Die Unterbrechungszeiten durch höherpriore OBs sind in LAST_RT nicht enthalten. Die OB-spezifischen Betriebssystemleistungen (z. B. die Erzeugung und die Bereitstellung der OB-Startinformation, die Aktualisierung des Prozessabbilds, die Aktualisierung des Teilprozessabbilds) sind in LAST_RT enthalten.

LAST_ET

Output

DINT

E, A, M, D, L

Zeitspanne zwischen OB-Anforderung und Bearbeitungsende des angegebenen OB in Mikrosekunden, und zwar für die letzte abgeschlossene Bearbeitung des angegebenen OB.
Falls der OB, zu dem Sie Laufzeiten ermitteln wollen, momentan gerade in Bearbeitung ist, gilt:
Beim ersten Aufruf der Anweisung "OB_RT" während der aktuellen Bearbeitung des gewünschten OB wird in LAST_ET die Zeitspanne zwischen der letzten vollständig bearbeiteten OB-Anforderung und dem Bearbeitungsende des angegebenen OB angegeben.
Bei jedem weiteren Aufruf der Anweisung "OB_RT" während der aktuellen Bearbeitung des gewünschten OB wird in LAST_ET

  • DW#16#FFFF FFFF angegeben, falls im gewünschten OB bereits ein "OB_RT"-Aufruf mit OB_NR=0 erfolgt ist.

  • die Zeitspanne zwischen der letzten vollständig bearbeiteten OB-Anforderung und dem Bearbeitungsende des gewünschten OB angegeben, falls im gewünschten OB kein "OB_RT"-Aufruf mit OB_NR=0 erfolgt ist.

Hinweis: Die Unterbrechungszeiten durch höherpriore OBs sind in LAST_ET enthalten.

CUR_T

Output

DINT

E, A, M, D, L

Zeitpunkt der OB-Anforderung des angegebenen OB, der momentan gerade bearbeitet wird, als Relativzeit in Mikrosekunden. Falls der angegebene OB momentan nicht bearbeitet wird, enthält CUR_T den Wert "0".

Hinweis: Die Systemzeit ist ein Zähler, der von "0" bis "2 147 483 647" Mikrosekunden zählt. Beim Überlauf startet der Zähler wieder bei "0".

CUR_RT

Output

DINT

E, A, M, D, L

Bisherige Laufzeit der aktuellen Bearbeitung des angegebenen OB in Mikrosekunden. CUR_RT ist "0", wenn der OB nicht oder noch nicht bearbeitet wird. Nach Ende der Bearbeitung wird die Laufzeit in LAST_RT übertragen, und CUR_RT wird auf 0 gesetzt.
Hinweis: Die Unterbrechungszeiten durch höherpriore OBs sind in CUR_RT nicht enthalten. Die bis zum Aufrufzeitpunkt von der Anweisung "OB_RT" erbrachten OB-spezifischen Betriebssystemleistungen sind in CUR_RT enthalten.

CUR_ET

Output

DINT

E, A, M, D, L

Die seit der Anforderung des angegebenen OB, der momentan gerade bearbeitet wird, vergangene Zeitspanne in Mikrosekunden. CUR_ET ist "0", wenn der angegebene OB momentan nicht bearbeitet wird. Nach Ende der Bearbeitung wird die Laufzeit in LAST_ET übertragen, und CUR_ET wird auf "0" gesetzt.
Hinweis: Die Unterbrechungszeiten durch höherpriore OBs sind in CUR_ET enthalten.

NEXT_ET

Output

DINT

E, A, M, D, L

Falls weitere Bearbeitungen des angegebenen OB anstehen, bevor die aktuelle Anforderung beendet wurde, wird in NEXT_ET die Zeitspanne vom aktuellen Zeitpunkt bis zum Zeitpunkt der nächst folgenden Anforderung in Mikrosekunden angezeigt. NEXT_ET ist "0", wenn außer dem aktuellen zur Bearbeitung anstehenden bzw. in Bearbeitung stehenden Startereignis für den betroffenen OB kein weiteres Startereignis existiert.

WinLC RTX und die S7-400-CPUs verwenden diesen Parameter nicht. Bei ihnen hat NEXT_ET den Wert "FFFF FFFF".
Hinweis: Die Unterbrechungszeiten durch höherpriore OBs sind in NEXT_ET enthalten.

Weitere Informationen zu den gültigen Datentypen finden Sie unter "Übersicht über die gültigen Datentypen".

Die Zeiten enthalten auch die Laufzeiten eventuell eingeschachtelter Bearbeitungen von Synchronfehler-Alarmen (OB 121, OB 122).

Hinweis

Falls Sie in OB_NR eine OB-Nr. angeben, die im Mengengerüst Ihrer CPU zwar vorhanden ist, der zugehörige OB vom Betriebssystem aber noch nicht aufgerufen bzw. von Ihnen noch nicht in die CPU geladen wurde, enthält RET_VAL die angegebene OB-Nr., PRIO die projektierte (ggf. Default-) Priorität des angegebenen OB. Die Laufzeitparameter (CUR_RT, CUR_ET, LAST_RT, LAST_ET, NEXT_ET) liefern den Initialwert DW#16#FFFF FFFF zurück. Bei den folgenden Anlaufarten bzw. Betriebszustandswechseln werden die Laufzeitparameter auf ihren Initialwert gesetzt: Neustart, Kaltstart, Wiederanlauf.

Parameter RET_VAL

Ereignisklasse Fehlercode

Erläuterung

1 bis 102

Nummer des OB, zu dem Informationen übergeben werden

W#16#8080

Parameter OB_NR enthält einen unzulässigen Wert.

W#16#8xyy

allgemeine Fehlerinformation

Siehe auch: Fehlerauswertung mit dem Ausgangsparameter RET_VAL