Skip to main content

Diagnose bei Absturz der Visualisierung

Ein Absturz der Visualisierung kann verschiedene Ursachen haben. Sehen Sie im Folgenden, wie sie im Falle des Absturzes einer Visualisierung die Ursache ermitteln können und welche Maßnahmen zur Vermeidung von Abstürzen sinnvoll sind.

Der Befehl Ausführung an behandelten Exceptions anhalten unterstützt Sie bei der Fehlersuche. Aktivieren Sie den Befehl, bevor die Applikation gestartet wird.

Tipp

Der Befehl Ausführung an behandelten Exceptions anhalten steht standardmäßig in keinem Menü zur Verfügung, kann jedoch über Tools → Anpassen wie folgt konfiguriert werden.

  1. Wählen Sie Tools → Anpassen

    Es erscheint die Registerkarte Menü. Dort müssen Sie zunächst eine Menüposition für den Befehl festlegen. In diesem Fall ist es sinnvoll, eine Position unter dem Menü Online auszuwählen.

  2. Selektieren Sie die gewünschte Position und klicken Sie die Schaltfläche Befehl hinzufügen.

    In der Liste Befehl hinzufügen werden alle Befehle gelistet.

  3. Selektieren Sie links die Kategorie Online und danach rechts den gewünschten Befehl. Beenden Sie den Dialog mit OK. Beenden Sie dann den Dialog Anpassen ebenfalls mit OK

    Nun ist der Befehl Ausführung an behandelten Exceptions anhalten unter dem Menü Online verfügbar.

Die Vorgehensweise für das Hinzufügen des Befehls finden Sie im Kapitel „???“ detailliert beschrieben.

Alternativ zum Befehl Ausführung an behandelten Exceptions anhalten können Sie das Compiler-Define VISU_NO_EXCEPTION_HANDLING für die Applikation setzen. Die Exception wird dann nicht von der Visualisierung abgefangen und das Programmiersystem zeigt die Stelle an, wo das System abgestürzt ist.

Mögliche Ursachen für den Absturz einer laufenden Visualisierung

. Mögliche Ursachen für den Absturz einer laufenden Visualisierung
  • In der Visualisierung wird ein Frame-Element mit einer Schnittstellenvariablen mit Gültigkeitsbereich VAR_INPUT verwendet und diese Schnittstellenvariable (im Beispiel: PLC_PRG._itfTest1, _itfTest1 : ITF_TEST;) wurde in der Applikation noch nicht zugewiesen

_visu_img_crash_var_input.png
_visu_img_crash_frame_itf.png
  • In der Visualisierung wird ein Frame-Element mit einer Schnittstellenvariable (im Beispiel fbTest) mit Gültigkeitsbereich VAR_IN_OUT verwendet, die als Datentyp einen Funktionsbaustein hat. Die übertragene Variable zeigt jedoch nicht auf diesen Funktionsbaustein

_visu_img_crash_var_inout.png
_visu_img_crash_frame_fb.png
  • Division durch 0: Bei einem Ausdruck mit einer Division darf der Divisor (im Beispiel PLC_PRG.rVal2) nicht 0 sein

_visu_img_crash_div_zero.png
  • Verwendung von VAR_IN_OUT-Variablen eines Funktionsbausteins in der Visualisierung:

    Wenn in einem Funktionsbaustein Variablen mit Gültigkeitsbereich VAR_IN_OUT deklariert sind, darf eine Visualisierung erst dann auf diese Variablen zugreifen, nachdem das Programm den Funktionsbaustein aufgerufen hat und die VAR_IN_OUT-Variablen in einem Funktionsbaustein zugewiesen wurden

  • Verwendung von Null-Pointer und Null-Referenzen: Eine Pointer-Variable darf nicht Null sein (Beispiel: PLC_PRG.pValue^)

  • Fehler im internen Code; dies ist nur im Call-Stack ersichtlich

Maßnahmen zur Vermeidung dieser Fehler

. Maßnahmen zur Vermeidung dieser Fehler
  • Verwenden Sie Schnittstellen, die initial auf Dummy-Objekte zeigen

  • Rufen Sie Visu_Prg im Projekt erst dann auf, wenn alle Initialisierungen durchgeführt wurden

  • Verwenden Sie den Operator SEL wie in folgendem Beispiel: SEL(ptr<>0,0,ptr^.<>value)