Haltepunkte (Breakpoints) werden üblicherweise zur Fehlersuche im Programm genutzt. CODESYS unterstützt Haltepunkte in allen IEC-Editoren.
Sie können Haltepunkte an bestimmten Positionen im Programm setzen, um dort einen Ausführungsstopp zu erzwingen und die Variablenwerte zu beobachten. Sie können spezielle "Datenhaltepunkte" setzen, um die Programmausführung anzuhalten, wenn sich der Wert einer bestimmten Variablen ändert.
Der Stopp am Haltepunkt oder Datenhaltepunkt kann an zusätzliche Bedingungen geknüpft werden. Sie können Haltepunkte und Datenhaltepunkte auch zu "Ausführungspunkten" umdefinieren, an denen das Programm nicht stoppt, sondern bestimmter Code abgearbeitet wird.
Die Ansicht „Haltepunkte“ gibt eine Übersicht über alle definierten Haltepunkte. Darin stehen Ihnen zusätzliche Befehle zum gleichzeitigen Ändern mehrerer Haltepunkte zur Verfügung.
Im Editor wird der Status von Haltepunkten und Ausführungspunkten mit folgenden Symbolen markiert:
-
Haltepunkt aktiviert
-
Haltepunkt deaktiviert
-
Haltepunkt ist in einer anderen Instanz des gerade im Editor geöffneten Bausteins gesetzt.
-
Stop an Haltepunkt
-
Haltepunkt mit Bedingung aktiviert
-
Haltepunkt mit Bedingung deaktiviert
-
Ausführungspunkt aktiviert
-
Ausführungspunkt deaktiviert
-
Ausführungspunkt mit Bedingung aktiviert
-
Ausführungspunkt mit Bedingung deaktiviert
-
Datenhaltepunkt aktiviert
-
Datenhaltepunkt deaktiviert
-
Stop am Datenhaltepunkt
-
Datenausführungspunkt aktiviert
-
Datenausführungspunkt deaktiviert
-
Stop am Datenausführungspunkt
-
Datenausführungspunkt mit Bedingung aktiviert
-
Datenhaltepunkt mit Bedingung aktiviert
Siehe auch
Datenhaltepunkte
Die Funktion der Datenhaltepunkte ist vom Zielsystem abhängig. Aktuell sind Datenhaltepunkte nur mit der CODESYS Control Win V3 möglich.
An einem Datenhaltepunkt hält die Programmabarbeitung an, wenn sich der Wert einer bestimmten Variablen oder Speicheradresse ändert. Wie bei "normalen" Haltepunkten kann der Stopp an eine zusätzliche Bedingung geknüpft werden, oder kann statt des Stopps bestimmter Code abgearbeitet werden (Umwandlung in einen Datenausführungspunkt).
Sie setzen einen Datenhaltepunkt mit dem Befehl „Neuer Datenhaltepunkt“ entweder aus dem Menü „Debug“, oder in der Ansicht „Haltepunkte“ über die Schaltfläche „Neu“. Sie geben dabei einen qualifizierten Variablennamen oder direkt eine Speicheradresse an, die auf Änderung ihres Werts überwacht werden soll.
Beispiel
Im folgenden Beispielcode wird der Speicherplatz von Variable iNumber
ungewollt überschrieben. Mit einem Datenhaltepunkt auf der Variablen iNumber
wird jedoch bemerkt, wenn sich ihr Wert ändert. Die Abarbeitung bleibt dann mit einer
entsprechenden Meldung bei dem Arrayzugriff stehen, welcher den Variablenwert überschreibt:
Idx
= 7
. Sehen Sie dazu auch weiter unten: "Setzen eines Datenhaltepunkts".
PROGRAM PLC_PRG VAR Idx : INT; Ary : ARRAY[0..3] OF BYTE; iNumber : INT := 55; END_VAR FOR idx := 0 TO 6 DO Ary[idx] := 0; END_FOR
Haltepunkte in Applikationen mit mehreren Tasks
Grundsätzlich gilt: Debugging ist nicht auf mehreren Tasks gleichzeitig möglich. Solange Sie auf einer Task mit Haltepunkten oder schrittweiser Abarbeitung arbeiten, werden Haltepunkte in anderen Tasks ignoriert.
Wenn ein Baustein, in dem ein Haltepunkt gesetzt ist, von mehreren Tasks verwendet wird, dann wird nur die Task ("Debug-Task") angehalten, die zuerst auf den Haltepunkt trifft. Alle anderen Tasks laufen weiter. Im Dialog „Aufrufliste“ sehen Sie, welche Task gerade angehalten wird.
Wenn Sie wollen, dass nur eine bestimmte Task von einem Haltepunkt betroffen sein soll, können Sie dies in den Haltepunkteigenschaften festlegen.
Haltepunkte funktionieren für jede Applikation separat, so dass ein "Halt auf BP" keine andere Applikation betrifft. Dies gilt auch für Vater/Kind-Applikationen, sogar wenn der Haltepunkt in einem Baustein gesetzt ist, der von mehreren Applikationen verwendet wird und dessen Code nur einmal auf der SPS liegt.




HINWEIS

Die E/As, die von der "Debug-Task" bedient werden, werden bei einem Stop im Haltepunkt nicht aktualisiert, auch wenn Sie die Option „E/As aktualisieren im Stop“ in den SPS-Einstellungen aktiviert haben.
Wenn die Applikation auf der SPS an einem Haltepunkt steht, erzeugt ein Online Change oder Download ein Stoppen aller Tasks, was ein Stop der SPS bedeutet! In diesem Fall zeigt CODESYS eine entsprechende Meldung an und Sie können entscheiden, ob Sie mit dem Login fortfahren wollen oder nicht.
Siehe auch
Setzen eines einfachen Haltepunkts (Beispiel ST-Editor)
Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft. Der Operating Mode ist „Debug“.
-
Öffnen Sie eine POU in der Sprache ST im Editor.
-
Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.
-
Wählen Sie den Befehl „Debug Haltepunkt umschalten“ oder drücken Sie die Taste [F9].
Die Zeile wird rot markiert und mit dem Icon
(Haltepunkt aktiviert) gekennzeichnet. Wenn das Programm an dem Haltepunkt steht, wird die Zeile mit dem Icon
(Stop an Haltepunkt) gekennzeichnet. Die Abarbeitung des Programms stoppt. Dies wird in der Statuszeile mit dem rot hinterlegten Status
HALT AUF BP
signalisiert. -
Wählen Sie den Befehl „Debug Start“ oder drücken Sie die Taste [F5].
Das Programm läuft weiter.
-
Setzen Sie weitere Haltepunkte und überprüfen Sie an den Haltepositionen die Werte von Variablen.
-
Setzen Sie den Cursor in eine Zeile, in der ein Haltepunkt gelöscht werden soll.
-
Wählen Sie den Befehl „Debug Haltepunkt umschalten“ oder drücken Sie die Taste [F9].
Die Markierung verschwindet. Der Haltepunkt ist gelöscht.
Siehe auch
Festlegen einer Haltepunkt-Bedingung (Beispiel ST-Editor)
-
Öffnen Sie eine POU in der Sprache ST im Editor.
-
Setzen Sie den Cursor in die Zeile, in der ein Haltepunkt gesetzt werden soll.
-
Wählen Sie den Befehl „Debug Neuer Haltepunkt“.
Es öffnet sich der Dialog „Neuer Haltepunkt“.
-
Wählen Sie die Registerkarte „Bedingung“.
-
Wählen Sie im Abschnitt „Trefferzahl“ die Option „Anhalten, wenn die Trefferzahl ein Vielfaches ist von“.
Geben Sie im Feld rechts daneben den Wert 5 ein.
-
Definieren Sie zusätzlich noch eine boolesche Bedingung, wann der Haltepunkt aktiv sein soll. Aktivieren Sie dazu die Option „Halt, wenn True“. Geben Sie im Feld rechts daneben eine boolesche Variable ein.
-
Aktivieren Sie die Option „Haltepunkt sofort aktivieren“.
-
Schließen Sie den Dialog.
Die Zeile wird rot markiert und mit dem Icon
gekennzeichnet
Beobachten Sie nun das laufende Programm. Solange die boolesche Variable für die
Bedingung FALSE
ist, ist die Bedingung für den Haltepunkt nicht erfüllt und das Programm läuft. Wenn
Sie die Variable auf TRUE
setzen, ist die Bedingung erfüllt und das Programm bleibt bei jedem 5. Durchlauf
an diesem Haltepunkte stehen.
Siehe auch
Festlegen eines Ausführungspunkts (Beispiel ST-Editor)
-
Öffnen Sie eine POU in der Sprache ST im Editor.
-
Setzen Sie den Cursor in die Zeile, in der ein Ausführungspunkt gesetzt werden soll.
-
Wählen Sie den Befehl „Debug Neuer Haltepunkt“.
Es öffnet sich der Dialog „Neuer Haltepunkt“.
-
Wählen Sie die Registerkarte „Ausführungspunkt Einstellungen“.
-
Aktivieren Sie die Option „Ausführungspunkt“.
Geben Sie im Feld „Folgenden Code ausführen“ folgende Anweisung ein:
iCounter := iCounter + 1;
Geben Sie im Feld „Meldung im Geräte-Log ausgeben“ folgenden Text ein:
Ausführungspunkt erreicht {iCounter}
-
Schließen Sie den Dialog.
Wenn das Programm den Ausführungspunkt erreicht, bleibt es nicht stehen, sondern es wird der oben definierte Code ausgeführt. Zusätzlich wird eine Meldung im Geräte-Log ausgegeben.
Siehe auch
Setzen eines Datenhaltepunkts
Voraussetzung: Die Applikation ist im Onlinebetrieb und läuft.
-
Wählen Sie den Befehl „Ansicht Haltepunkte“.
-
Wählen Sie den Befehl „Debug Neuer Datenhaltepunkt“.
-
Klicken Sie im Dialog „Neuer Haltepunkt“ in der Registerkarte „Daten“ auf die Schaltfläche
.
-
Wählen Sie im Dialog „Eingabehilfe“ in der Registerkarte „Watch-Variablen“ die Variable aus, bei deren Wertänderung das Programm anhalten soll.
Alternativ geben Sie in der Registerkarte „Daten“ in die Eingabezeile direkt den qualifizierten Namen der Variablen ein. Beispiel:
PLC_PRG.iNumber
. Die genaue Anzahl der zu überwachenden Bytes wird als „Größe“ angegeben. Automatisch ist hier ein dem Datentyp entsprechender Wert vorgegeben, Sie können aber auch weniger Bytes überwachen lassen. -
Selektieren Sie in der Ansicht „Haltepunkte“ die Zeile mit dem Datenhaltepunkt und klicken Sie auf die Schaltfläche
.
Die Zeile wird markiert und mit dem Icon
(Datenhaltepunkt aktiviert) gekennzeichnet. Wenn das Programm den Datenhaltepunkt erreicht, das heißt, wenn sich der Wert der ausgewählten Variablen ändert, stoppt die Abarbeitung des Programms. Im Implementierungsteil des Bausteins wird die Folgezeile mit einem Pfeil
gekennzeichnet. Dies wird in der Statuszeile mit dem rot hinterlegten Status
HALT AUF BP
signalisiert. -
Wählen Sie den Befehl „Debug Start“ oder drücken Sie die Taste [F5].
Das Programm läuft weiter und bleibt dann wieder stehen, wenn sich der Wert der Variablen erneut ändert.
Siehe auch