×
Siemens Industry Online Support
Siemens AG
Beitragstyp: FAQ Beitrags-ID: 43713352, Beitragsdatum: 08.09.2010
(1)
Bewerten

Wie kann in STEP 7 Basic V10.5 mit der lokalen Fehlerbehandlung das Auftreten von Fehlern innerhalb eines Bausteins abgefragt werden?

  • Beitrag
  • Betrifft Produkt(e)

Anleitung
Mit den erweiterten Anweisungen "GetError" und "GetErrorID" haben Sie die Möglichkeit, das Auftreten von Fehlern innerhalb eines Bausteins abzufragen und die dazugehörige Fehlerinformation auszuwerten. Damit kann der Betriebszustand "STOP" der CPU vermieden und die Programmbearbeitung fortgesetzt werden.

  • Der Ausgangsparameter "ID" mit dem Datentyp Word der Anweisung "GetErrorID" enthält die Fehler-ID des ersten aufgetretenen Fehlers.
  • Im Ausgangsparameter "ERROR" mit dem Systemdatentyp "ErrorStruct" der Anweisung "GetError" sind weitere Informationen zum aufgetretenen Fehler gespeichert.
  • Wenn Sie den ersten aufgetretenen Fehler behoben haben, geben die beiden Anweisungen die Fehler-ID bzw. die Fehlerinformation zum nächsten aufgetretenen Fehler aus.
  • Die lokale Fehlerbehandlung können Sie in OBs, FBs und FCs, einsetzen.
  • Für die Auswertungen müssen Sie die Anweisungen in die Bausteine einfügen, in dem das Auftreten von Fehlern zu erwarten ist (z.B. Peripheriezugriff).
  • Sie können die beiden Anweisungen auch einsetzen, um den aufrufenden Baustein eine Meldung über den Fehlerzustand zu übergeben. Dazu müssen Sie die Anweisungen im letzten Netzwerk des aufgerufenen Bausteins positionieren.

Nachfolgend sind einige Beispiele zur lokalen Fehlerbehandlung beschrieben. Weitere Informationen und Informationen zu den Ausgangsparametern der oben beschriebenen Anweisungen finden Sie in der STEP 7 Basic Onlinehilfe, unter

  • Grundlagen der lokalen Fehlerbehandlung
  • GetError
  • GetErrorID
  • Lokale Fehlerbehandlung für einen Baustein aktivieren
1. Beispiel: Peripheriezugriffsfehler
Die CPU geht bei einem Peripherie-Direktzugriff in den Zustand "STOP", wenn das Modul nicht vorhanden ist, oder eine Störung am Modul vorliegt. Mit der Anweisung "GetError" im Programmcode eines Bausteins kann die voreingestellte Systemreaktion (Zustand "STOP") beim Auftreten eines Peripheriezugriffsfehlers vermieden werden. Die Bearbeitung des Programms wird bei einem Lesefehler mit dem Ersatzwert Null fortgesetzt.
  1. Die Fehlerinformation wird der strukturierten Variable "Error" im DB15 ("Diagnostic") übergeben. Der Konverter liest den Inhalt der Strukturkomponente "Diagnostic.Error.AREA" und konvertiert ihn vom Datentyp Byte in den Datentyp UInt.
  2. Mit der ersten Operation "Gleich" erfolgt die Abfrage, ob der Inhalt des Speicherbereiches "AREA" dem Peripheriebereich entspricht. Der Peripheriebereich hat die Bereichskennung "P" und den Hex-Code "16#80" (entspricht dem Zahlenwert 128 beim Datentyp UInt).
  3. Bei der zweiten Operation "Gleich" wird die Anfangsadresse der Peripheriebaugruppe überprüft. Die Strukturkomponente "OFFSET" enthält die relative Adresse des Operanden. Für die Eingangsbyte-Adresse 2 muss dann mit dem relativen Wert 16 verglichen werden (OFFSET=2x8=16).
  4.  Sind die beiden Operationen "Gleich" erfüllt, erhält der Merker M40.0 (Peripherie_Addr_2) den Wert True.


Bild 01

2. Beispiel: Parametrierter Datenbaustein ist nicht in der CPU vorhanden
Bei der im Bild 02 dargestellten MOVE-Anweisung ist der parametrierte Datenbaustein DB22 nicht in der CPU vorhanden. Die Fehlerinformation wird der strukturierten Variable "Error" im DB15 ("Diagnostic") übergeben. Bild 02 zeigt das Programm in der Ansicht KOP und die Online-Ansicht des DB15. Die gespeicherten Informationen in der strukturierten Variable "Error" (Datentyp: ErrorStruct) im DB15 "Diagnostic" können für die weitere Programmierung in einem anderen FB, FC oder OB verwendet werden.

Die Beobachtungswerte der Strukturkomponenten im DB15 ergeben die folgenden Informationen:
 

ERROR_ID: 16#253A Der globale Datenbaustein existiert nicht.
REACTION: 16#01 Lesefehler, das Programm wird mit dem Ersatzwert weiter bearbeitet.
BLOCK_TYPE: 3 Code-Nr. für den Bausteintyp "FB".
CODE_BLOCK_NUMBER: 11 Die Nummer des Bausteins, in dem der Fehler auftritt ist 11.
AREA: 16#84 Speicherbereich für den DB.
DB_NUMBER: 22 Fehlender DB22.

Der DB22, der im FB11 geöffnet wird, ist nicht in der CPU vorhanden.


Bild 02

3. Beispiel: Der Operand eines Datenbausteins ist außerhalb des gültigen Bereiches
Bild 03 zeigt das Netzwerk zur Fehlerbehandlung für einen Lesefehler. Wie in den ersten beiden Beispielen wird auch hier die Fehlerinformation der Anweisung "GetError" in die strukturierte Variable "Error" des DB15 ("Diagnostic") übertragen.

  1. Die Strukturkomponente "DB_NUMBER" enthält die Nummer des Datenbausteins (z.B. 20 für DB20), wo der Lesefehler aufgetreten ist und wird mit der Anweisung "MOVE" in das MW30 transferiert.
  2. Die Strukturkomponente "OFFSET" enthält die relative Adresse des Operanden (z.B. das 40. Bit im DB). Um daraus die Byte-Adresse zu erhalten, wird dieser Wert mit der Anweisung "DIV" durch 8 (8 Bit) dividiert. Das Ergebnis (Byte-Adresse im DB) wird im MD32 gespeichert.
  3. In diesem Beispiel erfolgt mit der Anweisung "Größer" die Abfrage, ob der DB-Zugriff größer ist als 2 Byte und mit der Anweisung "Gleich" die Abfrage, ob es sich um den Speicherbereich eines Datenbausteins (DB: 16#84) handelt. Dazu muss vorher der Wert der Strukturkomponente "AREA" vom Datentyp Byte in den Datentyp Int konvertiert werden.
  4. Sind die beiden Bedingung mit den Anweisungen "Größer" und "Gleich" erfüllt, wird der M10.1 ("Activity") auf True gesetzt.


Bild 03

Hinweis
Sobald Sie eine der beiden Anweisungen "GetError" oder "GetErrorID" in Ihr Netzwerk einfügen und das Programm nach dem Übersetzen in die CPU laden, wird die lokale Fehlerbehandlung für diesen Baustein aktiviert und die Systemreaktionen (z.B. Betriebszustand "STOP") ignoriert. Diese beiden Anweisungen finden Sie in der Palette "Erweiterte Anweisungen" im Ordner "Programmsteuerung".

Erstellumgebung
Bilder in diesem FAQ wurden mit STEP 7 Basic V10.5+SP2 erstellt.

Securityhinweise
Um technische Infrastruktur, Systeme, Maschinen und Netzwerke gegen Cyber-Bedrohungen zu sichern, ist es erforderlich, ein ganzheitliches IT Security-Konzept zu implementieren (und kontinuierlich aufrechtzuerhalten), das dem aktuellen Stand der Technik entspricht. Die Produkte und Lösungen von Siemens formen nur einen Bestandteil eines solchen Konzepts. Weitergehende Informationen über Cyber Security finden Sie unter
https://www.siemens.com/cybersecurity#Ouraspiration.
Beitrag bewerten
keine Bewertung
Anfragen und Feedback
Was möchten Sie tun?
Hinweis: Das Feedback bezieht sich immer auf den vorliegenden Beitrag / das vorliegende Produkt. Ihre Nachricht wird an die Redakteure im Online Support gesendet. In einigen Tagen erhalten Sie von uns eine Antwort, wenn Ihr Feedback das erfordert. Ist für uns alles klar, werden wir Ihnen nicht mehr antworten.