Synchronfehlerereignisse maskieren (S7-300, 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
Synchronfehlerereignisse maskieren

Einleitung

Synchronfehlerereignisse sind Programmier- und Zugriffsfehlerereignisse. Solche Fehlerereignisse treten auf durch die Programmierung mit falschen Operandenbereichen, -nummern oder falschen Adressen. Diese Fehlerereignisse maskieren heißt,

  • maskierte Fehlerereignisse lösen keinen Fehler-OB aus und führen nicht zu einer programmierten Ersatzreaktion.

  • von den maskierten Fehlern "merkt sich" die CPU die Fehler, die aufgetreten sind, in einem Ereignisstatusregister.

Die Maskierung erfolgt durch Aufruf der Anweisung "MSK_FLT".

Fehlerereignisse demaskieren heißt, eine vorher vorgenommene Maskierung wieder rückgängig zu machen und das zugehörige Bit im Ereignisstatusregister der aktuellen Prioritätsklasse zu löschen. Die Maskierung wird aufgehoben

  • durch einen Aufruf der Anweisung "DMSK_FLT"

  • wenn die aktuelle Prioritätsklasse beendet ist (nur bei S7-400).

Tritt ein Fehlerereignis nach seiner Demaskierung auf, dann wird vom Betriebssystem der zugehörige Fehler-OB gestartet. Für die Reaktion auf Programmierfehler programmieren Sie den OB 121 und für die Reaktion auf Zugriffsfehler programmieren Sie den OB 122.

Maskierte und aufgetretene Fehlerereignisse können Sie mit der Anweisung "READ_ERR" auslesen.

Hinweis

Unabhängig von einer Maskierung oder Demaskierung der Fehlerereignisse erfolgt bei S7-300 mit Ausnahme der CPU 318 ein Eintragen des Fehlerereignisses in den Diagnosepuffer, und die Sammelfehler-LED der CPU leuchtet.

Fehlerbehandlung allgemein

Wenn in einem Anwenderprogramm Programmier- und Zugriffsfehler auftreten, dann können Sie verschieden darauf reagieren:

  • Sie können einen Fehler-OB programmieren und das Betriebssystem ruft diesen Fehler-OB auf, wenn ein entsprechendes Fehlerereignis auftritt.

  • Sie können den Aufruf des Fehler-OB für jede Prioritätsklasse einzeln sperren. In diesem Fall geht die CPU nicht in STOP, wenn in der Prioritätsklasse ein entsprechender Fehler auftritt. Die CPU trägt die aufgetretenen Fehler in ein Ereignisstatusregister ein. Sie können an diesem Eintrag aber nicht erkennen, wann und wie oft dieser Fehler aufgetreten ist.

Fehlermaske

Die Synchronfehlerereignisse sind einem bestimmten Bitmuster zugeordnet, der Fehlermaske. Diese Fehlermaske finden Sie in den Eingangs- und Ausgangsparametern der Anweisungen "MSK_FLT", "DMSK_FLT", "READ_ERR" wieder.

Bei den Synchronfehlerereignissen wird zwischen Programmier- und Zugriffsfehlern unterschieden, die Sie in zwei Fehlermasken maskieren können. Die jeweiligen Fehlermasken finden Sie in den folgenden Bildern.

Programmierfehlermaske

Das folgende Bild zeigt Ihnen das Bitmuster der Fehlermaske für Programmierfehler. Die Fehlermaske für Programmierfehler steht in den Parametern "PRGFLT_..." (siehe im Folgenden "Programmierfehler, Low-Word" bzw. "Programmierfehler, High-Word").

Nicht relevante Bits

Im Bild obigen bedeutet x für die ...

  • ... Eingangsparameter

für "MSK_FLT", "DMSK_FLT", "READ_ERR"

= "0"

  • ... Ausgangsparameter

für "MSK_FLT", "DMSK_FLT"

= "1" für S7-300

= "0" für S7-400

für "READ_ERR"

= "0"

Zugriffsfehlermaske für alle CPUs

Das folgende Bild zeigt Ihnen für alle CPUs das Bitmuster der Fehlermaske für Zugriffsfehler. Die Fehlermaske für Zugriffsfehler steht in den Parametern ACCFLT_...

Eine Erläuterung der Zugriffsfehler finden Sie in den folgenden Tabellen (siehe unten).

Beispiel

Das folgende Bild zeigt Ihnen für alle CPUs, wie das Low-Word der Fehlermaske für Zugriffsfehler mit allen maskierten Fehlern aussieht.

  • als Eingangsparameter für "MSK_FLT"

  • als Ausgangsparameter für "MSK_FLT"

Programmierfehler Low-Word

Die folgende Tabelle enthält die Fehler, die dem Low-Word der Fehlermaske für Programmierfehler zugeordnet sind. Den jeweiligen Fehlern zugeordnet sind die möglichen Fehlerursachen.

Mögliche Fehlerursachen für Programmierfehler, Low-Word

Fehler

Ereignis-ID
(W#16#...)

Fehler tritt auf, ...

BCD-Wandlungsfehler

2521

... wenn der zu wandelnde Wert keine BCD-Zahl ist (z. B. 5E8).

Bereichslängenfehler beim Lesen

2522

... wenn ein adressierter Operand nicht vollständig innerhalb des möglichen Operandenbereichs liegt.

Beispiel: MW 320 soll gelesen werden, obwohl der Merkerbereich nur 256 Byte groß ist.

Bereichslängenfehler beim Schreiben

2523

... wenn ein adressierter Operand nicht vollständig innerhalb des möglichen Operandenbereichs liegt.

Beispiel: Ein Wert soll auf MW 320 geschrieben werden, obwohl der Merkerbereich nur 256 Byte groß ist.

Bereichsfehler beim Lesen

2524

... wenn bei indirekter, bereichsübergreifender Adressierung eine falsche Bereichskennung für den Operanden angegeben wird.

Beispiel:

Richtig: LAR1 P#E 12.0

L W[AR1, P#0.0]

Falsch: LAR1 P#12.0

L W[AR1, P#0.0] Bei dieser Operation
wird der Bereichsfehler gemeldet.

Bereichsfehler beim Schreiben

2525

... wenn bei indirekter, bereichsübergreifender Adressierung eine falsche Bereichskennung für den Operanden angegeben wird.

Beispiel:

Richtig: LAR1 P#E 12.0

T W[AR1, P#0.0]

Falsch: LAR1 P#12.0

T W[AR1, P#0.0] Bei dieser Operation
wird der Bereichsfehler gemeldet.

Timernummernfehler

2526

... wenn auf einen nicht vorhandenen Timer zugegriffen wird.

Beispiel:SI T [MW 0] mit MW 0 = 129; der Timer 129 soll gestartet werden, obwohl nur 128 Timer vorhanden sind.

Zählernummernfehler

2527

... wenn auf einen nicht vorhandenen Zähler zugegriffen wird.

Beispiel: ZV Z [MW 0] mit MW 0 = 600; es wird auf den Zähler 600 zugegriffen, obwohl nur 512 Zähler vorhanden sind (CPU 416-1).

Ausrichtungsfehler beim Lesen

2528

... wenn ein Byte-, Wort- oder Doppelwortoperand mit einer Bitadresse ≠ 0 adressiert wird.

Beispiel: Richtig: LAR1 P#M12.0

L B[AR1, P#0.0]

Falsch: LAR1 P#M12.4

L B[AR1, P#0.0]

Ausrichtungsfehler beim Schreiben

2529

... wenn ein Byte-, Wort- oder Doppelwortoperand mit einer Bitadresse ≠ 0 adressiert wird.

Beispiel:

Richtig: LAR1 P#M12.0

T B[AR1, P#0.0]

Falsch: LAR1 P#M12.4

T B[AR1, P#0.0]

Programmierfehler High-Word

Die folgende Tabelle enthält die Fehler, die dem High-Word der Fehlermaske für Programmierfehler zugeordnet sind. Den jeweiligen Fehlern zugeordnet sind die möglichen Fehlerursachen.

Mögliche Fehlerursachen für Programmierfehler, High-Word

Fehler

Ereignis-ID
(W#16#...)

Fehler tritt auf, ...

Schreibfehler Datenbaustein

2530

... wenn der Datenbaustein, auf den geschrieben wird, schreibgeschützt ist.

Schreibfehler Instanzdatenbaustein

2531

... wenn der Instanzdatenbaustein, auf den geschrieben wird, schreibgeschützt ist.

Bausteinnummernfehler DB

2532

... wenn ein Datenbaustein aufgeschlagen wird, dessen Nummer größer als die größte zulässige Nummer ist.

Bausteinnummernfehler DI

2533

... wenn ein Instanzdatenbaustein aufgeschlagen wird, dessen Nummer größer als die größte zulässige Nummer ist.

Bausteinnummernfehler FC

2534

... wenn eine Funktion aufgerufen wird, deren Nummer größer als die größte zulässige Nummer ist.

Bausteinnummernfehler FB

2535

... wenn ein Funktionsbaustein aufgerufen wird, dessen Nummer größer als die größte zulässige Nummer ist.

DB nicht geladen

253A

... wenn der aufzuschlagende Datenbaustein nicht geladen ist.

Anweisung nicht geladen

253C bis 253F

... wenn die aufzurufende Anweisung nicht geladen ist.

Zugriffsfehler

Die folgende Tabelle enthält für alle CPUs die Fehler, die der Fehlermaske für Zugriffsfehler zugeordnet sind. Den jeweiligen Fehlern zugeordnet sind die möglichen Fehlerursachen.

Fehler

Ereignis-ID
(W#16#...)

Fehler tritt auf, ...

Peripheriezugriffsfehler beim Lesen

2942

... wenn der Adresse im Peripheriebereich keine Signalbaugruppe zugeordnet ist.

Oder

... wenn der Zugriff auf diesen Peripheriebereich nicht innerhalb der eingestellten Baugruppenüberwachungszeit quittiert wird (Quittungsverzug).

Peripheriezugriffsfehler beim Schreiben

2943

... wenn der Adresse im Peripheriebereich keine Signalbaugruppe zugeordnet ist.

oder

... wenn der Zugriff auf diesen Peripheriebereich nicht innerhalb der eingestellten Baugruppenüberwachungszeit quittiert wird (Quittungsverzug).