-

Code debuggen: Breakpoints

Hinweis
Dieses Thema bezieht sich nur auf die (nicht-sicherheitsbezogene) Standard-Steuerung. Die entsprechenden Schritte für die sicherheitsbezogene SPS finden Sie im Hilfekapitel "Sicherheitsbezogene SPS-Inbetriebnahme: Von Kompilieren bis Debuggen ‣ Sicherheitsbezogene SPS-Inbetriebnahme: Von Kompilieren bis Debuggen
×‣ Verbinden contra Monitoring-Modus contra Debug-Modus
×‣ Sicherheitsbezogene Applikation aus dem Sicherheitscockpit steuern
×‣ Steuerungsdiagnose aus dem Cockpit der sicherheitsbezogenen SPS
×‣ Sicherheitssteuerung überwachen/debuggen
×‣ Monitoring-Modus: Online-Werte anzeigen
×‣ Debuggen von sicherheitsbezogenem Code: Forcen/Überschreiben
×‣ WATCH-Fenster: Sicherheitsbezogene Applikation überwachen/debuggen
×‣ Simulation der sicherheitsbezogenen SPS
×
".

Diese Thema enthält folgende Informationen:

Allgemeine Informationen und Voraussetzungen

Zu Ihrer Unterstützung beim Funktionstest stellen die Code-Editoren im Debug-Modus mehrere Debug-Funktionen zur Verfügung. Sie können beispielsweise Breakpoints setzen, um die Projektausführung an einer bestimmten Codestelle anzuhalten. Wird ein Breakpoint erreicht, hält das laufende Projekt an dieser Stelle, an der sich Breakpoint befindet und der Steuerungsstatus wechselt in den Zustand "Angehalten" (dies wird am Steuerungssymbol in der ANLAGE angezeigt).

Sie können dann die aktuellen Werte der Variablen oder Funktions-/Funktionsbaustein-Formalparameter untersuchen.

Voraussetzungen für die Verwendung von Breakpoints:

Wird ein Breakpoint erreicht, kann die Projektausführung mit dem Befehl 'Fortfahren' im CALL STACKS-Fenster oder im BREAKPOINTS-Fenster fortgesetzt werden (beide Fenster sind im Cross-Funktionen-Bereich im unteren Bildschirmbereich zu finden) oder Sie können das Projekt mit Hilfe der Stepping-Funktionen Schritt für Schritt ausführen. Die Befehle (Fortfahren und Stepping) im CALL STACKS-Fenster und im BREAKPOINTS-Fenster sind im Abschnitt "Debuggen mit gesetzten Breakpoints" unten beschrieben.

Die Handhabung der Breakpoints (Setzen, Entfernen, Umschalten) erfolgt entweder im Online-Code-Arbeitsblatt oder im BREAKPOINTS-Fenster. Das BREAKPOINTS-Fenster listet alle Breakpoints auf und bietet eine Symbolleiste und ein Kontextmenü zum Umschalten, Deaktivieren und Entfernen von Breakpoints. Außerdem kann von dort direkt in ein Code-Arbeitsblatt gesprungen werden, in dem ein Breakpoint gesetzt ist (siehe Tabelle unten).

Falls das CALL STACKS-Fenster oder das BREAKPOINTS-Fenster im Cross-Funktionen-Bereich (im unteren Bildschirmbereich) ausgeblendet ist, können Sie das jeweilige Fenster durch Klicken auf die entsprechende Schaltfläche anzeigen:

BREAKPOINTS-Fenster
CALL STACKS-Fenster

Hinweis
Breakpoints werden deaktiviert, aber nicht entfernt, wenn PLCnext Engineer vom Applikationsprozess getrennt wird (Umschalten vom Debug-Modus zurück in den Programmiermodus) oder Sie PLCnext Engineer beenden. Sie müssen wie unten beschrieben manuell entfernt werden.

WARNUNG
Unbeabsichtigter Betriebszustand des Geräts
  • Stellen Sie vor dem Verwenden von Breakpoints sicher, dass geeignete organisatorische Maßnahmen (gemäß zutreffender Sektornormen) getroffen wurden, um Gefährdungen im Falle einer ungewollten oder falschen Funktion der Anwendungslogik zu vermeiden.
  • Bestimmen Sie das tatsächliche physikalische Verhalten der I/Os beim Erreichen eines Breakpoints, welches vom Steuerungstyp abhängt, und stellen Sie sicher, dass das Erreichen von Breakpoints zu keiner Gefährdung führen kann.
  • Betreten Sie den Betriebsbereich nicht, während die Maschine in Betrieb ist.
  • Stellen Sie sicher, dass keine anderen Personen den Betriebsbereich betreten können, während die Maschine in Betrieb ist.
  • Beachten Sie die vorgegebenen Richtlinien in relevanten Sektornormen, wenn die Maschine in einer anderen Betriebsart als "in Betrieb" läuft.
  • Verwenden Sie geeignete Sicherheitsverriegelungen, wenn eine Gefahr für Personen und/oder Ausrüstung besteht.

Befehle zum Setzen, Umschalten und Deaktivieren von Breakpoints

Befehle in Code-Arbeitsblättern (im Debug-Modus)

SchaltflächeBefehlTastenkombinationBeschreibung
Breakpoint umschalten<Strg> + <Alt> + <F9>Setzt oder entfernt einen Breakpoint an der gewählten Codestelle oder -zeile.

Falls an der gewählten Stelle/Codezeile bereits ein Breakpoint existiert, wird dieser durch den Befehl entfernt.
Breakpoint aktivieren/deaktivieren<Strg> + <Alt> + <F10>Aktiviert oder deaktiviert einen bestehenden Breakpoint. Der Breakpoint-Status (aktiviert oder deaktiviert) wird durch ein entsprechendes Symbol angezeigt (siehe Abschnitt "Breakpoint-Status und Symbole" unten).

Befehle im BREAKPOINTS-Fenster

Wie gewohnt, ist im BREAKPOINTS-Fenster auch die Mehrfachauswahl von Einträgen möglich. Halten Sie zum Beispiel die <Strg>-Taste gedrückt, während Sie auf die gewünschten Zeilen klicken.

SchaltflächeKontextmenüBeschreibung
, , , Debug-Befehle, die auch im CALL STACKS-Fenster verfügbar sind. Weitere Informationen finden Sie im Abschnitt "CALL STACKS/BREAKPOINTS-Fenster: Debuggen mit gesetzten Breakpoints".
<Strg> + <Umschalt> + <F5>Befehl: Weiter

Setzt die Programmausführung fort, bis der nächste gesetzte Breakpoint erreicht ist.

Der Befehl steht auch im CALL STACKS-Fenster zur Verfügung.
<F11>Befehl: Einen Einzelschritt ausführen

Die Programmausführung wird in der nächsten Zeile oder mit dem nächsten Objekt fortgesetzt und dann an dieser Codestelle angehalten.
Erreicht das Programm den Aufruf eines Anwender-FB, so wird der Code dieser POE im Debug-Modus geöffnet und schrittweise abgearbeitet.
(Dieses Verhalten gilt für Anwender-FBs, die im aktuellen Projekt definiert sind, sowie für FBs aus referenzierten Anwender-Bibliotheken.)

Der Befehl steht auch im CALL STACKS-Fenster zur Verfügung.
<Strg>  + <F11>Befehl: Einen Prozedurschritt ausführen

Die Programmausführung wird in der nächsten Zeile oder mit dem nächsten Objekt fortgesetzt und dann an dieser Codestelle angehalten.
Erreicht das Programm den Aufruf eines Anwender-FB, so wird der FB übersprungen und stattdessen die nächste Zeile bzw. das nächste Objekt markiert.

Der Befehl steht auch im CALL STACKS-Fenster zur Verfügung.
<Umschalt>  + <F11>Befehl: Den Code bis zum Rücksprung ausführen

Dieser Befehl ist bei der schrittweisen Abarbeitung anwenderdefinierter FB-POEs relevant. Durch den Befehl wird der FB-Code verlassen und zur aufrufenden POE zurückgekehrt.

Der Befehl steht auch im CALL STACKS-Fenster zur Verfügung.
Breakpoint aktivierenAktiviert den/die im Fenster ausgewählten Breakpoint(s). Der Status schaltet im Fenster auf 'Aktiv' und das Symbol im Code wechselt auf
.
Alle Breakpoints aktivierenAktiviert alle Breakpoints im Fenster. Der Status schaltet im Fenster auf 'Aktiv' und das Symbol im Code wechselt auf
.
Breakpoint deaktivierenDeaktiviert den/die im Fenster ausgewählten Breakpoint(s). Der Status schaltet im Fenster auf 'Inaktiv' und das Symbol im Code wechselt auf
.
Alle Breakpoints deaktivierenDeaktiviert alle Breakpoints im Fenster. Der Status schaltet im Fenster auf 'Inaktiv' und das Symbol im Code wechselt auf
.
Breakpoint entfernenEntfernt den/die im Fenster ausgewählten Breakpoint(s).
Alle Breakpoints entfernenEntfernt alle Breakpoints im Fenster.
Zu Code wechselnÖffnet das Code-Arbeitsblatt, in dem der Breakpoint gesetzt ist und markiert ihn. Falls das Arbeitsblatt noch nicht im Debug-Modus ist, wird die entsprechende Instanz automatisch geöffnet.

Breakpoint-Status und -Symbole

Der aktuelle Status eines Breakpoints wird an dem Element, für das ein Breakpoint gesetzt wurde, durch folgende Symbole gekennzeichnet:

Der Status ist auch im BREAKPOINTS-Fenster sichtbar.

Symbol im CodeSymbol im BP-FensterBreakpoint-StatusBeschreibung
AktiviertBreakpoint ist aktiviert. Aktiviert bedeutet, die Projektausführung wird an diesem Breakpoint angehalten.
DeaktiviertBreakpoint ist deaktiviert. Der Breakpoint ist zwar im Code-Arbeitsblatt gesetzt, wird aber ignoriert, wenn er während der Projektausführung erreicht wird.
ErreichtBreakpoint erreicht. Die Projektausführung wurde am Breakpoint angehalten. Die Codestelle wird im CALL STACKS-Fenster angezeigt.
Mit Hilfe der Schrittfunktionen (Stepping) kann das Code-Arbeitsblatt schrittweise abgearbeitet werden (siehe Abschnitt "Debuggen mit gesetzten Breakpoints" unten).
Inaktiv aktiviertDer Breakpoint ist aktiviert, kann aber nicht erreicht werden, da die Verwendung von Breakpoints im Cockpit deaktiviert ist. Aktivieren Sie die Verwendung aller Breakpoints (siehe Abschnitt 'Voraussetzungen" oben).
Inaktiv deaktiviertDer Breakpoint ist deaktiviert und die Verwendung von Breakpoints ist im Cockpit deaktiviert. (Siehe Abschnitt "Voraussetzungen" oben.)
-UngebundenDer Breakpoint kann nicht mehr erreicht werden, da die Kommunikationsverbindung zwischen PLCnext Engineer und der Steuerung unterbrochen ist (offline) und keine Debug-Befehle/Online-Werte mehr übertragen werden können.
Ungebundene Breakpoints werden nur im BREAKPOINTS-Fenster angezeigt. Im Code ist keine Online-Anzeige möglich, solange die Steuerung offline ist.

Setzen von Breakpoints

Hinweis
Um anwenderdefinierte Funktionen/Methoden debuggen zu können und/oder Execution Values (tatsächliche Werte an der Codestelle) in Online-Arbeitsblättern anzeigen zu können, müssen Sie im Steuerungs-Cockpit die entsprechende erweiterte Debug-Funktion auswählen. Lesen Sie hierzu die Abschnitte "Erweitertes Debuggen: Execution Values vs. "normale" Online-Werte" und "Erweitertes Debuggen anwenderdefinierter Funktionen, Methoden und AS-Aktionen/Transitionen".

Setzen Sie einen Breakpoint an einem Element wie folgt:

  1. Doppelklicken Sie in der ANLAGE auf den Knoten der Steuerung und öffnen Sie den 'Cockpit'-Editor. Falls die Verwendung von Breakpoints im Cockpit noch nicht freigegeben ist, klicken Sie auf die nachfolgend gezeigte Schaltfläche und bestätigen die anschließende Sicherheitsabfrage mit 'Ja'. Wenn die Schaltfläche gedrückt ist, sind Breakpoints freigegeben und können beim Debuggen aktiv werden.

  2. Aktivieren Sie den Debug-Modus, indem Sie PLCnext Engineer an den laufenden Applikationsprozess anhängen.

    Wählen Sie die POE-Instanz, in der Sie einen Breakpoint setzen möchten ('In den Instanzeditor wechseln' oder Doppelklick auf das Instanzsymbol in der ANLAGE) und öffnen Sie das gewünschte Arbeitsblatt.

  3. Im grafischen Code: Linksklicken Sie auf den Namen des Objekts, für das Sie einen Breakpoint setzen möchten und klicken Sie anschließend auf die Schaltfläche 'Breakpoint umschalten' (entweder in der Editor-Symbolleiste oder in der Direktsymbolleiste des Objekts), um den Breakpoint an dieser Stelle einzufügen.

    Alternativ dazu können Sie auch den Kontextmenübefehl 'Breakpoint umschalten' des Objekts wählen oder <Strg> + <Alt> + <F9> drücken.

    Im textuellen Code: Linksklicken Sie in die schmale Spalte links vom Anfang der Zeile, in der Sie den Breakpoint setzen möchten.

    Alternativ dazu können Sie auch in die Codezeile linksklicken und in der Symbolleiste des Editors die Befehlsschaltfläche 'Breakpoint umschalten' wählen oder <Strg> + <Alt> + <F9> drücken.

    Der Breakpoint wird im Code-Arbeitsblatt durch folgendes Symbol gekennzeichnet:

    Der Breakpoint wird auch im BREAKPOINTS-Fenster aufgelistet. Hier stehen Befehle zur Verfügung, um ihn zu deaktivieren oder entfernen.

    Hinweis
    Wenn Sie einen Breakpoint setzen, während das Projekt ausgeführt wird, kann die Ausführung direkt an dieser Stelle angehalten werden.

  4. Wenn das Programm an einem Breakpoint angehalten wurde, erscheint das folgende Symbol an der Einfügestelle:

    In textuellem Code bekommt die betreffende Variable einen gelben Hintergrund:

    Die Codestelle wird im CALL STACKS-Fenster angezeigt (mit markiert) und ihr Status im BREAKPOINTS-Fenster schaltet auf 'Erreicht' ().

    Nun können Sie den Code schrittweise abarbeiten (mit den Stepping-Befehlen im CALL STACKS oder BREAKPOINTS-Fenster) oder die Ausführung bis zum nächsten Breakpoint fortsetzen. Lesen Sie hierzu den folgenden Abschnitt "CALL STACKS/BREAKPOINTS-Fenster".

CALL STACKS/BREAKPOINTS-Fenster: Debuggen mit gesetzten Breakpoints

Wenn die Projektausführung an einem gesetzten Breakpoint angehalten wird (sichtbar durch das Symbol an der Breakpoint-Stelle), wird diese Codestelle...

Im CALL STACKS-Fenster und im BREAKPOINTS-Fenster stehen Befehle zur Verfügung, um die Ausführung bis zum nächsten Breakpoint fortzusetzen oder eine der drei Schrittfunktionen (Stepping) auszuführen.

Mit den Schrittfunktionen lässt sich das Projekt Schritt für Schritt abarbeiten, um so die Applikation in kontrollierter Weise auszuführen. Drücken Sie dazu im CALL STACKS/BREAKPOINTS-Fenster wiederholt auf die jeweilige Schritt-Schaltfläche oder die zugehörige Tastenkombination.

Beim Stepping wird die aktuelle Schrittposition im Code durch das Symbol gekennzeichnet, bevor die nächste Operation ausgeführt werden kann.

SymbolTastenkombinationBeschreibung
<Strg> + <Umschalt> + <F5>Befehl: Weiter

Setzt die Programmausführung fort, bis der nächste gesetzte Breakpoint erreicht ist.
<F11>Befehl: Einen Einzelschritt ausführen

Die Programmausführung wird in der nächsten Zeile oder mit dem nächsten Objekt fortgesetzt und dann an dieser Codestelle angehalten.
Erreicht das Programm den Aufruf eines Anwender-FB, so wird der Code dieser POE im Debug-Modus geöffnet und schrittweise abgearbeitet.
(Dieses Verhalten gilt für Anwender-FBs, die im aktuellen Projekt definiert sind, sowie für FBs aus referenzierten Anwender-Bibliotheken.)
<Strg>  + <F11>Befehl: Einen Prozedurschritt ausführen

Die Programmausführung wird in der nächsten Zeile oder mit dem nächsten Objekt fortgesetzt und dann an dieser Codestelle angehalten.
Erreicht das Programm den Aufruf eines Anwender-FB, so wird der FB übersprungen und stattdessen die nächste Zeile bzw. das nächste Objekt markiert.
<Umschalt>  + <F11>Befehl: Den Code bis zum Rücksprung ausführen

Dieser Befehl ist bei der schrittweisen Abarbeitung anwenderdefinierter FB-POEs relevant. Der FB-Code wird verlassen und zur aufrufenden POE zurückgekehrt.
<Strg> + <Alt> + <F3>Ein Heißstart wird nicht von allen Steuerungstypen unterstützt.

Führt einen Heißstart der Steuerung aus. Während eines Heißstarts werden keine Daten initialisiert. Stattdessen wird das Programm mit den aktuellen Variablenwerten fortgesetzt.

Nach Ausführung des Befehls, hängt sich PLCnext Engineer automatisch an den laufenden Prozess auf der Steuerung an und schaltet in den Debug-Modus.

Der Befehl ist nur verfügbar, wenn PLCnext Engineer mit der Steuerung verbunden und die Steuerung gestoppt ist. Es ist nicht notwendig, in den Debug-Modus zu schalten.

Weitere Infos
PLCnext Technology-Steuerungen können ein erweitertes Retain Handling unterstützen.

<Strg> + <Alt> + <F4>Ein Warmstart wird nicht von allen Steuerungstypen unterstützt.

Führt einen Warmstart der Steuerung aus. Während eines Warmstarts werden nur nicht-remanente Daten initialisiert.

Nach Ausführung des Befehls, hängt sich PLCnext Engineer automatisch an den laufenden Prozess auf der Steuerung an und schaltet in den Debug-Modus.

Der Befehl ist nur verfügbar, wenn PLCnext Engineer mit der Steuerung verbunden und die Steuerung gestoppt ist. Es ist nicht notwendig, in den Debug-Modus zu schalten.

Weitere Infos
PLCnext Technology-Steuerungen können ein erweitertes Retain Handling unterstützen.

<Strg> + <Alt> + <F5>Führt einen Kaltstart der Steuerung aus. Während eines Kaltstarts werden alle Daten initialisiert.

Nach Ausführung des Befehls, hängt sich PLCnext Engineer automatisch an den laufenden Prozess auf der Steuerung an und schaltet in den Debug-Modus.

Der Befehl ist nur verfügbar, wenn PLCnext Engineer mit der Steuerung verbunden und die Steuerung gestoppt ist. Es ist nicht notwendig, in den Debug-Modus zu schalten.

Breakpoints entfernen

Breakpoints können im Code oder im BREAKPOINTS-Fenster entfernt werden.

Setzen Sie anschließend die Applikation fort, indem Sie im CALL STACKS- oder BREAKPOINTS-Fenster auf 'Ausführung fortsetzen' klicken: