Debuggen

Um Fehler innerhalb eines mit MATLAB®/Simulink® erstellten TcCOM-Moduls zu finden bzw. das Verhalten des Moduls in der Gesamtarchitektur des TwinCAT-Projekts zu analysieren, stehen unterschiedliche Wege zur Verfügung.

Debuggen im Blockdiagramm

Wurde bei der Generierung des TcCOM-Moduls das Blockdiagramm exportiert, kann dieses in der TwinCAT-Entwicklungsumgebung angezeigt und unter anderem zum Debuggen innerhalb der entsprechenden Modulinstanz verwendet werden. Dazu nutzt das Blockdiagramm den Microsoft Visual Studio Debugger, der über den TwinCAT Debugger-Port mit der TwinCAT-Laufzeit verbunden werden kann. Das Verbinden (Attachen) des Debuggers erfolgt wie im C++-Bereich unter Debuggen beschrieben.

Voraussetzungen für das Debuggen innerhalb des Blockdiagramms sind:

Setzen von Breakpoints im Blockdiagramm

1. Nach dem Verbinden (Attachen) des Debuggers mit der TwinCAT-Laufzeit, werden die möglichen Breakpoints im Blockdiagramm den Blöcken zugeordnet und als Punkte dargestellt. Durch Anklicken des gewünschten Breakpoints kann dieser aktiviert werden, um die Ausführung der Modulinstanz bei der nächsten Abarbeitung des zugehörigen Blocks zu stoppen. Die Farbe des Punktes gibt Auskunft über den aktuellen Zustand des Breakpoints:
2. Im Tool-Tip des Breakpoints findet man zusätzliche Informationen, wie z. B. den zugehörigen C++-Code-Abschnitt:
Debuggen 2:
Debuggen 3:

Breakpoints werden nicht immer einem einzelnen Block zugeordnet. Im zugrundeliegenden C++-Code sind häufig Funktionalitäten mehrerer Blöcke in einem Codeabschnitt oder sogar einer Zeile zusammengefasst. Weil sich daher oft mehrere Blöcke den gleichen Breakpoint teilen, ändert sich bei der Aktivierung eines Breakpoints im Blockdiagramm häufig auch die Darstellung der Punkte an anderen Blöcken.

Auswertung von Exceptions

Treten während der Abarbeitung eines TcCOM-Modules Exceptions, wie z.B. eine Division durch Null, auf, so kann die Stelle an der diese Exception versursacht wurde im Blockdiagramm dargestellt werden. Dazu muss das TcCOM-Modul die oben genannten Voraussetzungen erfüllen und der C++-Debugger muss im TwinCAT-Projekt aktiviert sein (TwinCAT 3 C++ Enable C++ debugger). Nachdem der Debugger verbunden (attached) wurde, was vor aber auch noch nach dem Auftreten der Exception erfolgen kann, wird der verursachende Block im Blockdiagramm hervorgehoben, sofern die verursachende Codezeile einem Block zugeordnet werden kann. Der Name des Blockes wird rot dargestellt und der Block selbst wird fett markiert.

Debuggen 4:

Manuelle Auswertung von Exceptions ohne Quellcode

Auch wenn auf dem Engineering-System nicht der Source Code des Modules verfügbar ist oder der C++-Debugger nicht aktiviert wurde, kann man nach Auftreten einer Exception die Fehlerstelle im Blockschaltbild hervorheben.

Typischerweise wird beim Auftreten eines Fehlers immer eine Fehlermeldung generiert, in der die Quellcode-Datei sowie die Zeile im Quellcode angegeben ist. Über diese Information lässt sich eine Exception in vielen Fällen einem Block des Blockschaltbildes zuordnen. Dazu kann man wie folgt vorgehen:

Voraussetzung für das Hervorheben der Fehlerstelle innerhalb des Blockdiagramms ist, dass die Debuginformationen erzeugt wurden (Option Export block diagram debug information in den Coder-Einstellungen unter Tc Advanced).
3. Aus dem Kontext-Menü des Blockschaltbildes ist der Eintrag Provide exception data zu wählen:
Debuggen 5:
4. In dem sich öffnenden Dialog sind die in der Fehlermeldung bereitgestellte Quellcode-Datei und Zeilennummer einzutragen:
Debuggen 6:
5. Der Name des Blockes, welchem die Zeilennummer zugeordnet ist, wird rot dargestellt und der Block selbst wird fett markiert:
Debuggen 7: