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 wie folgt konfiguriert werden.
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.
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.
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
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


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


Division durch
0
: Bei einem Ausdruck mit einer Division darf der Divisor (im BeispielPLC_PRG.rVal2)
nicht0
sein

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 dieVAR_IN_OUT
-Variablen in einem Funktionsbaustein zugewiesen wurdenVerwendung 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
Verwenden Sie Schnittstellen, die initial auf Dummy-Objekte zeigen
Rufen Sie
Visu_Prg
im Projekt erst dann auf, wenn alle Initialisierungen durchgeführt wurdenVerwenden Sie den Operator
SEL
wie in folgendem Beispiel:SEL(ptr<>0,0,ptr^.<>value)