Document Title

| ALPHA-VISION® SoftPlc7

# Testbetrieb

## 1. Allgemeines

Um auf einfache und schnelle Weise Einblicke in den Programmablauf der SoftPlc7 zu gewinnen, ohne eine Verbindung zu einem Programmiergerät wie den SIMATIC Manager aufbauen zu müssen, verfügt die SoftPlc7 über einen integrierten Debugger, der einige Standard-Debug-Funktionalitäten zur Verfügung stellt. Er wird aktiviert über den Menüpunkt "Ansicht->Testbetrieb".
Intern werden dieselben Mechanismen wie beim externen Debuggen über den SIMATIC Manager verwendet, deshalb schließen sich beide Debug-Möglichkeiten gegenseitig aus. Beim Versuch beide zu aktivieren wird eine Fehlermeldung ausgegeben.
Der Debugger ist als Ergänzung zur Schnittstelle zum SIMATIC Manager gedacht und bietet deshalb nicht denselben Funktionsumfang. Auch werden Assembler-Macros wie der CALL-Befehl nicht als solche dekodiert, sondern als elementare Assembler-Befehle wiedergegeben. Die folgenden Screenshots sollen das verdeutlichen.
Hier zunächst ein kurzes STEP7-Programm:
Der CALL-Befehl ist in mehrere Befehlszeilen aufgeteilt:

## 2. Kontrollelemente

Durch die vier Auswahlfelder für den aktuellen, 1., 2., und 3. Baustein sowie für Global-DB und Instanz-DB kann wie beim Debuggen mit dem SIMATIC Manager eine Trigger-Bedingung definiert werden, die erfüllt sein muss, damit intern Werte mitgeschrieben werden. Diese Werte werden zyklisch abgefragt und in das Listenfenster mit den Assembler-Befehlen eingetragen. Über das Auswahlfeld "Refreshrate" wird bestimmt, ob und wie oft diese Werte aktualisiert werden.
Die Darstellung ist weitgehend der des SIMATIC Managers angeglichen, so werden Akku-Inhalte hexadezimal und Adressregister als Adresse oder als Zeiger wiedergegeben. Bei der Adresse kann durch linken Mausklick auf das Feld "Adresse" zwischen hexadezimaler und dezimaler Darstellung gewählt werden.
Die Kontrollfelder für BStack, LStack (Lokaldaten) und Klammerstack sind erst dann aktiv und zugänglich, wenn auch tatsächlich ein Callstack vorliegt (s.u.).
Die letzte Spalte "Operand" des Listenfensters bleibt initiell leer. Über den Menüpunkt "Extras->Operand..." oder durch einfachen linken Mausklick auf die Taste "Operand" kann ein beliebiger Operand eingegeben werden, der während des Programmdurchlaufs mit beobachtet wird. Dies vereinfacht die Fehlersuche bei neu erstellten STEP7-Programmen enorm, da die Ursache eines Programm-Fehlverhaltens relativ schnell lokalisiert werden kann. Man kehrt zum anfänglichen Zustand ohne Operand durch eine leere Eingabe zurück. Es können sowohl globale Operandenbereiche (M, E, A, PE, PA, DBn) als auch situationsbedingte (L, DB, DI) angegeben werden, Wiederholungen sind bis zu einer Gesamtlänge von 8 Bytes erlaubt, z.B. MB10,8 oder DBD 20,2 usw. Die Syntax entspricht der wie im Debug-Panel.

## 3. Haltepunkte und Einzelschrittmodus

Durch Anwahl des Menüpunktes "Extras -> Haltepunkt setzen/entfernen" wird an der markierten Stelle im Code ein Haltepunkt gesetzt, gekennzeichnet durch "*HLT*" in der Adressspalte. Ein erneutes Anwählen entfernt den Haltepunkt wieder. Der oben beschriebene Triggerkontext kann auch für Haltepunkte vorgeschrieben werden; über den Menüpunkt "Extras -> Triggerbedingung auch für Haltepunkte" lässt sich dieser Modus ein- und ausschalten. Die SoftPlc7 hält dann bei einem Haltepunkt die Bearbeitung nur an, wenn dieser Trigger-Kontext erfüllt ist.
Solange der Testbetrieb nicht beendet wird, sind alle Haltepunkte gültig, auch wenn der aktuell zu beobachtende Baustein gewechselt wird und Haltepunkte nicht mehr sichtbar sind.
Wird nun im Laufe der Programmbearbeitung in der SoftPlc7 ein Haltepunkt registriert, geht die CPU in den Zustand HALT über, die Programmbearbeitung wird angehalten, und der aktuelle Callstack kann in Form von BStack, LStack (Lokaldaten) und Klammerstack (s.u.) eingesehen werden. Über die Menüpunkte "Extras->Im Aufrufpfad weiter" bzw. "Extras->Im Aufrufpfad zurück" kann dann schnell im Aufrufpfad vor- und zurücknavigiert werden, die Rücksprungadresse ist hervorgehoben und sichtbar.
Im Zustand HALT gibt es die Möglichkeit, das Programm bis zum nächsten Haltepunkt fortzusetzen ("Extras -> Fortsetzen") oder jeweils nur einen Befehl weiter zu simulieren ("Extras -> Nächste Anweisung ausführen"). Im letzten Fall geht die Maschine nach Abarbeitung des Befehls wieder in den Zustand HALT über. Falls der aktuelle Befehl ein Bausteinaufruf ist, wird im Programm in den aufgerufenen Baustein verzweigt und erst nach Rückkehr in den aufrufenden Baustein der Haltezustand angenommen, sofern im aufgerufenen Baustein nicht noch weitere Haltepunkte liegen. Alternativ kann auch in diesen Baustein verzweigt und vor der ersten Anweisung angehalten werden ("Extras -> Aufruf ausführen"). Über den Menüpunkt "Extras -> Baustein verlassen" kann aus dem Haltezustand solange weitersimuliert werden, bis der Rücksprung in den aufrufenden Baustein abgeschlossen ist. Es ist auch möglich, das Programm bis zur Cursorposition weiterlaufen zu lassen ("Extras -> Bis Cursor weiterlaufen"). In letzteren beiden Fällen können andere Haltepunkte in anderen Bausteinen zuvor noch zu einem Haltezustand führen.
Durch die Menüfunktion "Extras -> Alle Haltepunkte entfernen" lassen sich auf einfache Weise sämtliche Haltepunkte im Programm entfernen, eine Fortsetzung des Programms muss danach explizit durch "Extras -> Fortsetzen" oder durch die Taste F5 angestoßen werden.

## 4. BStack, LStack und Klammerstack

Wann immer der Programmablauf unterbrochen wird, speichert die SoftPlc7 wie die echte PLC den sog. BStack, LStack und Klammerstack. Eine solche Unterbrechung kann entweder durch einen Haltepunkt hervorgerufen werden (-> Zustand HALT) oder durch einen Fehler im STEP7-Programm bei fehlendem OB 121 (-> Zustand STOP).
Im Auswahlfeld "BStack" kann dann jeder Programmbaustein in der Aufrufhierarchie, angefangen vom initiellen Organisationsbaustein bis hin zum aktuellen Programmbaustein, ausgewählt werden. Gleichzeitig werden die gesamten Lokaldaten dieses Bausteins angezeigt, die beim Aufruf des jeweils nächsten Bausteins gültig waren. Bei einem Organisationsbaustein ist dann u.a. die Startinformation abzulesen. Es werden ebenso alle bis zu maximal sieben Klammerebenen aufgelistet. Der Eintrag einer jeden Klammerebene ist bestimmt durch die Funktionskennung, d.h. U(, UN(, O(, ON(, X( oder XN(, durch das gespeicherte VKE- und OR-Bit. Die Werte dieser beiden Bits resultieren aus den Werten der Bits VKE, OR und /ER bei Ausführung der booleschen Funktion.
Zu jedem Baustein im BStack wird bei Anwahl der entsprechende STEP7-Code aufgelistet; der Befehl, zu dem zurückgesprungen würde, ist besonders hervorgehoben und bei Bausteinwechsel auch im sichtbaren Bereich des Fensters.

## 5. Suchfunktionen

Um bei längeren Bausteinen die Suche nach bestimmten Befehlen zu erleichtern, wurde hier die Standard-Suchfunktionalität mit leichten Änderungen implementiert. Bei der Suche werden Leerzeichen und Tabs sowohl im STEP7-Code als auch in der Suchmaske grundsätzlich ignoriert, das gleiche gilt für Groß-/Kleinschreibung. So wird etwa eine Befehlszeile "UC FC 99" durch die Suchmaske "cf C9" erkannt.
Es werden Menüfunktionen "Extras -> Suchen nach...", "Extras -> Vorwärts weitersuchen" und "Extras -> Rückwärts weitersuchen" zur Verfügung gestellt, mit Hilfe derer im Code in beide Richtungen gesucht werden kann.

## 6. Bedingte Haltepunkte

Eine besondere Hilfe, um Programmfehler aufzuspüren, sind die bedingten Haltepunkte. Durch die Vorgabe bestimmter Operanden, Werte und Vergleichsoperatoren kann eine komplexe Haltebedingung definiert werden. Ist während des Programmablaufs vor Ausführung einer Assembler-Anweisung eine solche Haltebedingung erfüllt, so geht die CPU in den Haltezustand. Eine Meldung, die auf die Bedingung hinweist, wird ausgegeben.

Eine Haltebedingung besteht aus einer Und-Verknüpfung aus bis zu vier elementaren Bedingungen. Bei einer elementaren Bedingung wird immer ein Operand als vorzeichenlose Zahl interpretiert und mit einem vorzeichenlosen Wert verglichen. Mögliche Operanden-Bereiche sind alle auch im Debug-Panel gültigen: M, E, A, PE, PA, L, DB, DI, DBn, T und Z, mögliche Vergleichsoperatoren sind =, <>, <, <=, >, >=. Eine elementare Bedingung kann durch drei leere Eingaben wieder gelöscht werden.
Die Eingabe einer neuen Haltebedingung startet man über die Taste "Neu", die oberen Kontrollfelder können danach ausgefüllt und die neue Bedingung über die Taste "Übernehmen" in die untere Liste übernommen werden. Eine zuvor schon eingegebene Bedingung wird angezeigt, wenn in der Liste die entsprechende Zeile aktiviert wird; danach kann die Bedingung bearbeitet werden und bei Fehleingabe über die Taste "Zurücksetzen" wieder zurückgesetzt werden. Die Taste "Löschen" entfernt eine Bedingung aus der Liste.