Jump to content
  • Sign in to follow this  

    Tia Portal – OB121 Programmierfehler-Interrupt-Organisationsblock

       (0 reviews)

    caixiaofeng

    In diesem Artikel setzen wir unsere Diskussion über verschiedene Arten von Organisationsblöcken in der Siemens-SPS fort. Dieses Mal sprechen wir über den OB121 oder den Programmierfehler-Interrupt im Tia-Portal.

    Inhalt:

    • Was sind Programmierfehler-Interrupts OB121?
    • Beispiele für Programmierfehler.
    • Was passiert, wenn ein Programmierfehler erkannt wird?
    • Simulation eines Programmierfehlers im TIA-Portal.
    • Wie kann der OB121 gegen Programmierfehler nützlich sein?
    • Schlussfolgerungen.

    Was sind Programmierfehler-Interrupts (OB121)?
    OB121 ist ein Organisationsblock, der vom Betriebssystem der SPS aufgerufen wird, wenn beim Ausführen Ihrer Logik ein Programmierfehler auftritt. Beachten Sie, dass wir nicht von einem Programmierfehler sprechen, der vom Compiler abgefangen wird, wenn versucht wird, Ihre Logik in Ihre SPS herunterzuladen. Siehe Bild 1.

    141-1.gif

    Bild 1 – Einige Programmierfehler werden vom Compiler erkannt

    Wie Sie im letzten Bild sehen, liegt in meiner SPS-Logik ein Programmierfehler vor; einige Operanden fehlen in der Eingabe und Ausgabe von Netzwerk 1. Dieser Fehler wurde jedoch vom Compiler erkannt, bevor die Logik überhaupt in die SPS heruntergeladen wurde. Der Fehler in Bild 1 ist nicht der Programmierfehlertyp, der den Aufruf von OB121 auslösen kann.

    Fehler in Ihrem SPS-Programm, die vom Compiler nicht gefunden werden können, aber dennoch Probleme in Ihrer Logik verursachen können, während die SPS läuft, sind die Programmierfehler, die wir meinen. Diese Fehler lösen einen Aufruf von OB121 durch das Betriebssystem aus.

    Beispiele für Programmierfehler

    Hier sind einige Beispiele für Fehler in Ihrer SPS-Logik, die Programmierfehler verursachen können:

    • Maximale Verschachtelungstiefe von Blockaufrufen überschritten.
    • Sie haben einen NULL-Zeiger verwendet, um einen Operanden anzusprechen.
    • Unbekannte Anweisung.
    • Die adressierte Zeichenfolge weist falsche Längeninformationen auf.
    • Bereichslängenfehler beim Lesen.
    • Bereichslängenfehler beim Schreiben.
    • Fehler in Timer-Nr.
    • Zugriff auf einen nicht geladenen DB; die DB-Nummer befindet sich im zulässigen Bereich.
    • DB existiert nicht.

    Diese und viele weitere Fehler können Programmierfehler in Ihrer SPS verursachen. Im Hilfebereich des TIA-Portals können Sie nachlesen, welche anderen Gründe zu Programmierfehlern in der SPS führen können.

    Was passiert, wenn ein Programmierfehler erkannt wird?

    Wenn Ihre SPS einen Programmierfehler erkennt, kann eines von drei Ereignissen eintreten.

    1. Ihre SPS zeigt einen Fehler an und wechselt in den STOP-Modus.
    2. Ihre SPS zeigt einen Fehler an, führt Ihre Logik jedoch weiter aus.
    3. Ihre SPS zeigt einen Fehler an und versucht dann, diesen Fehler zu beheben.

    Diese drei Ereignisse hängen im Wesentlichen von Ihrer SPS-Programmierung ab. Das heißt, Ihr Code entscheidet, wie sich das Betriebssystem bei Erkennung eines Programmierfehlers verhält.

    Simulation eines Programmierfehlers im TIA-Portal

    Um das Verhalten der SPS besser zu verstehen, erstellen wir ein einfaches Programm, in dem wir einen Programmierfehler verursachen, und sehen dann, was passiert. Siehe Bild 2.

    141-2.gif

    Bild 2 – Einfache Programmlogik

    Die von uns erstellte Logik ist sehr einfach. Wenn InitiateProgError aktiviert wurde, wird der Wert 126 in den Bereich DB52.DBW16 verschoben. Beachten Sie, dass wir DB52 nicht erstellt haben. Dies wird also unser Programmierfehler sein. Beachten Sie, dass dieser Fehler beim Kompilieren oder Herunterladen in die SPS nicht erkannt wird. Siehe Bilder 3 und 4.

    141-3.gif

    Bild 3 – Vom Compiler nicht erkannter Fehler

    Sehen Sie, wie der Block erfolgreich kompiliert wurde, obwohl ein Programmierfehler auftrat.

    141-4.gif

    Bild 4 – Block in SPS heruntergeladen

    Wieder wurde der Block mit einem Programmierfehler in die SPS heruntergeladen.

    Lassen Sie uns nun unser SPS-Programm simulieren und sehen, was passiert. Die Simulation des SPS-Codes finden Sie in Animation 1.

    spacer.png

    Animation 1

    Wie Sie in der obigen Animation sehen, blinkt die PLC ERROR-LED einige Sekunden lang rot, dann wechselt die PLC in den STOP-Modus.

    Gehen Sie zur PLC-Onlinediagnose, um zu sehen, was passiert ist. Siehe Bild 5.

    141-6.gif

    Bild 5 – Online- und Diagnose der PLC

    Was Sie in der Animation gesehen haben, ist genau das, was Sie im vorherigen Bild sehen. Es kann in 3 Schritten beschrieben werden:

    1. Die PLC erkennt den Programmierfehler, nämlich dass OB52 nicht geladen ist.
    2. Das Betriebssystem löst den Aufruf des OB121 aus, aber in unserer Logik wurde kein OB121 erstellt.
    3. Wenn die PLC feststellt, dass in unserer Logik kein OB121 erstellt wurde, initiiert das Betriebssystem eine STOP-Anforderung. Und die PLC wechselt in den STOP-Modus.

    Wie kann der OB121 gegen Programmierfehler hilfreich sein?
    Fügen wir unserem SPS-Code einen OB121 hinzu und sehen wir, wie sich die Dinge ändern. Siehe Bild 6.

    141-7.gif

    Bild 6 – Hinzufügen eines OB121

    Nachdem wir den OB121 erstellt und in unsere SPS-Logik eingefügt haben, sehen wir, was in der Simulation passiert.

    Denken Sie daran, dass wir keine SPS-Logik in den OB121 geschrieben haben. Siehe Animation 2.

    spacer.png

    Animation 2

    Wie Sie in Animation 2 sehen, blinkt die PLC ERROR-LED rot, wenn InitiateProgError ausgelöst wird, aber die SPS läuft weiter.

    Das bedeutet, dass die SPS nicht in den STOP-Modus wechselt. Sehen wir uns die Online-Diagnose an, um zu sehen, was tatsächlich passiert ist. Siehe Bild 7.

    141-9.gif

    Bild 7 – Fehler hat nicht zum Stoppen der SPS geführt

    Sie sehen auf dem Bild, dass die SPS den Fehler erkennt, aber nicht in den STOP-Modus wechselt. Sie überspringt diesen Fehler, setzt den Zyklus fort und beginnt wieder von vorne.

    Wenn der Fehler erneut auftritt, erkennt sie ihn erneut und gibt einen Alarm in der Diagnose aus. Überspringen Sie den Fehler und fahren Sie fort. Das bedeutet, dass die SPS in jedem Scan-Zyklus denselben Alarm ausgibt. Und deshalb sehen Sie auf dem Bild, dass das Ereignis immer wieder ausgelöst wird und der Alarm sich in jedem Scan-Zyklus wiederholt.

    Ein leerer OB121 bietet Ihnen also den Vorteil, dass die SPS weiterläuft und Ihr Prozess weiterläuft.

    Aber wir können noch mehr tun: Wir können versuchen, diesen Fehler zu erkennen und zu beseitigen. Außerdem können wir versuchen, die Art des erkannten Programmierfehlers anzuzeigen.

    Fehlertyp bestimmen

    Der OB121 verfügt über eine interne Fehler-ID, die wir verwenden können, um den Fehlertyp anzuzeigen, beispielsweise als Alarm auf einem HMI. Innerhalb des OB121 erstellen wir eine einfache MOVE-Anweisung, mit der wir den Fault_ID-Eingang des OB121 in einen definierten Speicherbereich innerhalb unseres globalen DBs verschieben. Siehe Abbildung 8.

    141-10.gif

    Abbildung 8 – Fehlertyp identifizieren

    Wie Sie im vorherigen Bild sehen, wird die Fault_ID bei Auftreten des Programmierfehlers in die Data.ProgErrorID verschoben. Siehe Abbildung 9.

    141-11.gif

    Abbildung 9 – Programmierfehler Fault_ID

    Sie können sehen, dass die Fehler-ID 3A ist. Wenn Sie die TIA Portal-Hilfe überprüfen, können Sie die Bedeutung dieses Fehlers herausfinden.

    3A: Zugriff auf einen DB, der nicht geladen ist; die DB-Nummer befindet sich im zulässigen Bereich.

    Den Fehler abfangen

    Das bedeutet einfach, dass Sie versuchen, den SPS-Programmierfehler zu beheben, nachdem Sie die Ursache ermittelt haben. Dies hängt hauptsächlich davon ab, was der Fehler ist und wie Sie ihn behandeln möchten. Wir werden einfach eine Lösung für den Fehler simulieren, um zu sehen, wie sich die SPS verhält.

    Die eigentliche Lösung für den von uns verursachten Fehler besteht darin, einfach den DB52 zu erstellen oder einen bereits erstellten Datenblock zu verwenden.

    Aber der Simulation halber werden wir einfach einen einfachen Kontakt hinzufügen, der sich öffnet, wenn der Programmierfehler auftritt, um diesen Fehler abzufangen. Siehe Bilder 10 und 11.

    141-12.gif

    Bild 10 – Den Fehler abfangen

    Immer wenn OB121 aufgerufen wird, wird der CatchError gesetzt.

    141-13.gif

    Bild 11 – Fehler beheben

    Wenn OB121 aufgerufen wird, wird CatchError gesetzt und verwendet, um den Programmierfehler in Netzwerk 1 abzufangen. Die SPS-Simulation finden Sie in Animation 3.

    spacer.png

    Animation 3

    Aus der obigen Animation können Sie erkennen, dass die SPS beim Auslösen von InitiateProgError kurzzeitig in den Fehlermodus gerät, der dann gelöscht wird und die SPS sich dauerhaft im RUN-Modus befindet.

    Fazit

    Einfach ein leeres OB121 in Ihrer Logik stellt sicher, dass Ihre SPS nicht in den STOP-Modus wechselt, wenn in Ihrem Code ein Programmierfehler vorliegt. Sie können das OB121 später auch verwenden, um den Fehler zu identifizieren und zu beheben.

    Sign in to follow this  


    User Feedback

    Create an account or sign in to leave a review

    You need to be a member in order to leave a review

    Create an account

    Sign up for a new account in our community. It's easy!

    Register a new account

    Sign in

    Already have an account? Sign in here.

    Sign In Now

    There are no reviews to display.


Apply for friendship links:WhatsApp or E-mail: admin@plchmis.com
×
×
  • Create New...