Darstellung im Realtime Monitor
Vereinfacht erklärt, ermöglicht der TwinCAT 3 Realtime Monitor die Darstellung von gruppierten Events. Zur Vermeidung von Bedeutungsüberschneidungen mit dem TwinCAT Eventlogger und den darin geloggten Nachrichten bzw. Alarmen, wird im Kontext des TwinCAT 3 Realtime Monitors von (Zeit-)Marken gesprochen.
Diese Marken können verwendet werden, um das zeitliche Verhalten von Tasks oder Nutzerprozessen/ -Abläufen darzustellen. Dazu werden den Marken eine ID, ein Markentyp, ein Kontext und ein Zeitstempel mitgegeben. Zusätzlich kann bei Bedarf noch ein als UINT formatiertes benutzerdefiniertes Datum mitgegeben werden, um ggf. zusätzliche Informationen in die Darstellung im Realtime Monitor einzubringen (z. B. Fehlernummer, Zustand einer State Machine etc.).
Marken-ID:
Die Marken-ID dient zur Identifizierung der dargestellten Task/ des dargestellten Prozesses. Mit anderen Worten sollten alle Marken, welche dieselbe Task/ denselben Prozess betreffen, dieselbe Marken-ID verwenden.
Markentyp:
Der TwinCAT 3 Realtime Monitor ermöglicht die Darstellung von Ereignissen oder Prozessen/ Abläufen aufgetragen über die Zeit. Für die Darstellung von Prozessen/ Abläufen werden diese als Sequenz markiert. Eine Sequenz wiederum kann in ein oder mehrere Intervalle unterteilt werden. Marken können entsprechend typisiert werden, um den Start bzw. das Ende von Sequenzen oder Intervallen zu definieren. Zusätzlich können diese auch Ereignisse innerhalb einer Anwendung über die Zeit darstellen. Es wird daher zwischen den folgenden Markentypen unterschieden:
- Marke:
Die Marke kann verwendet werden, um ein Ereignis festzuhalten, z. B. den Zeitpunkt eines Alarms, den Wechsel eines Zustandes etc. - Sequenz-Start:
Ein Sequenz-Start gibt den Zeitpunkt an, ab dem einer Task/ einem Prozess erlaubt ist loszulaufen (durch höher priore Tasks/ Prozesse geschieht dies u. U. erst verzögert). - Intervall-Start:
Ein Intervall-Start gibt den Zeitpunkt an, ab dem eine Task/ ein Prozess tatsächlich startet. Aufgrund von Unterbrechungen etc. kann es innerhalb einer Sequenz mehrere Intervall-Starts geben. - Intervall-Stopp:
Ein Intervall-Stopp gibt den Zeitpunkt an, ab dem eine Task/ ein Prozess nicht mehr ausgeführt wird. Dies kann z. B. aufgrund von Unterbrechungen durch höher priore Tasks oder durch noch nicht erfüllte Abhängigkeiten geschehen. - Sequenz-Stopp:
Ein Sequenz-Stopp gibt den Zeitpunkt an, ab welchem eine Task nicht mehr laufen darf, bzw. ein Prozess beendet ist.
Kontext:
Ein Kontext beschreibt eine Zusammenfassung von Marken bzw. Markengruppen.
Für die System-Tasks werden alle Tasks, die auf einem Kern abgearbeitet werden, zu einem Kontext zusammengefasst (z. B. Kern 0). Ein solcher (Echtzeit)-Kontext bildet somit das Scheduling innerhalb eines Echtzeitkerns ab. Für diese Echtzeitkontexte gilt, dass zu jeder Zeit immer nur genau eine der einem Kontext zugeordneten Tasks aktiv ist. Für nutzerspezifische Markengruppen gilt diese Einschränkung nicht.
Bei der Verwendung der erweiterten Marken (durch Verwendung des FB_RTMon_LogMark), werden die nutzerspezifischen Markengruppen automatisch anhand ihrer Anwendungs-Ports gruppiert. So werden z. B. alle Marken, die aus einem SPS-Projekt mit dem Port 851 heraus abgelegt werden, einem Kontext mit der Context-Id 851 (hexadezimal 0x353) zugeordnet.
Bei der Verwendung der generischen Marken (durch Verwendung des Bausteins FB_RTMon_LogMarkBase) können eigene Kontexte (also Zusammenhänge) definiert werden. Dies könnte beispielhaft eine Gruppierung nach Prozessart oder nach Maschinenmodulen (Funktionseinheiten) sein.
Darstellung in der Baumansicht:
Wie bereits beschrieben, verwenden alle Marken, die dieselbe Task oder denselben Prozess beschreiben, dieselbe Marken-ID. Diese Marken werden zu einer Markengruppe zusammengefasst und erhalten einen Eintrag in der Baumansicht des TwinCAT 3 Realtime Monitors.
Für die System-Tasks wird automatisch ein Eintrag mit dem entsprechenden Namen der Task im Baum angelegt.
Für nutzerbezogene Markengruppen, welche z. B. Prozesse beschreiben, muss dies manuell erfolgen. Im Baum erscheint automatisch für jede erkannte nutzerspezifische Markengruppe ein Eintrag NewGroup, der anhand der Marken-ID (entspricht der Group-ID im Eigenschaftenfenster der Gruppe) identifiziert werden kann. Diese Gruppe kann entsprechend umbenannt werden (siehe Kontextknoten).
Wie unter Kontext beschrieben, werden die einzelnen Markengruppen zu Kontexten zusammengefasst. Dies geschieht für die System-Tasks, sowie bei der Verwendung der einfachen Marken automatisch. Bei der Verwendung der erweiterten Marken geschieht dies anhand der im Anwendungs-Code übergebenen Context-ID.
![]() | Die Benennung der Marken-IDs (Gruppen-IDs) sowie der Kontexte kann für die spätere Wiederverwendung exportiert, bzw. importiert werden. |
In der Chart-Darstellung, wird eine Markengruppe (also alle Marken einer Task eines Prozesses) innerhalb einer Zeile dargestellt. Näheres hierzu unter Darstellung im Chart.
Darstellung im Chart:
Symbole in der chart-Darstellung:
Sequenz-Start | |
Sequenz Stopp | |
Zeigt einen Intervall-Start oder einen Intervall-Stopp an. | |
Marke |
Beispielhafte Darstellung:
Die folgende Darstellung zeigt bespielhaft ein mögliches zeitliches Verhalten einer Task. Diese erhält zu einem Zeitpunkt (1) anhand der eingestellten Zykluszeit die „Erlaubnis“ zu laufen. Aufgrund von fehlenden Abhängigkeiten oder aufgrund von noch aktiven höher prioren Tasks läuft diese tatsächlich aber erst zum Zeitpunkt (2) los. Zum Zeitpunkt (3) wurde eine Marke übermittelt. Dies kann sowohl ein „System-Event“ als auch eine nutzerdefinierte Marke sein. Genauere Informationen erfahren Sie per Tooltip auf der Marke. Die Marke selbst hat keinen Einfluss auf das zeitliche Verhalten der Task oder des Prozesses. Zum Zeitpunkt (4) wird die Task unterbrochen (wieder zum Beispiel durch eine Verriegelung oder eine höher priore Task). Zum Zeitpunkt (5) läuft die Task weiter. Zum Zeitpunkt (6) ist die Task beendet.
Abbildung der Abarbeitung eines SPS-Laufzeitmoduls:
Wie im Absatz Echtzeit Scheduling beschrieben, ruft jedes SPS-Laufzeitmodul das Update der Ein- und Ausgänge selbst auf. Die komplette Abarbeitung der SPS findet im Cyclic-Update der sie aufrufenden Task statt. Aus diesem Grund wird die Abarbeitung der SPS, sofern das detaillierte Logging aktiviert ist, überlagert im Cyclic-Update einer Task abgebildet. In der folgenden Abbildung wird dies beispielhaft gezeigt. Der Zeitpunkt (1) zeigt die Ausführung des Eingangsupdates des SPS-Laufzeitmodules. Im Bereich (2) findet die zyklische Abarbeitung des SPS-Codes statt, welche in dem hier gezeigten Beispiel von einer anderen Task unterbrochen wird. Nach der fertigen Abarbeitung findet zum Zeitpunkt (3) das Ausgangsupdate des SPS-Laufzeitmoduls statt. Die Task selbst führt im hier gezeigten Beispiel kein Ein- oder Ausgangsupdate durch.
Detailliertes Logging:
Die Option „detailedLogging“ (siehe Projektknoten bzw. Kontextknoten) erlaubt es, für Echtzeittasks eine detaillierte Darstellung der Ausführung auch innerhalb einer Task zu erhalten. Die folgenden beiden Abbildungen machen den Unterschied sichtbar.
Standard Logging aktiviert:

Detailed Logging aktivert:

Darstellung der Task-Referenzen:
Anhand von Task-Referenzen kann die Zuordnung von Marken zu den einzelnen Echtzeittasks im TwinCAT 3 Realtime Monitor sichtbar gemacht werden. Dies ermöglicht sowohl der Zuordnung des Absendens der einzelnen EtherCAT Frames als auch die Zuordnung von Nutzer-Kontexten zu Echtzeittasks. Dargestellt werden Task-Referenzen durch gestrichelte Linien.
Die Option Show Task Reference (siehe Markengruppen-Element) schaltet diese Option für Nutzer-Kontexte (z.B. Anwenderprozesse) an. In der folgenden Abbildung sehen Sie die Zuordnung des orange dargestellten Anwenderprozesses zu einer SPS-Task.

Für EtherCAT Frames ist diese Option automatisch aktiviert. Die folgende Abbildung zeigt dies an einem Beispiel. Die farbliche Darstellung der Frames ist dabei dieselbe wie in TwinCAT.

Reihenfolge der Kontexte im Anzeigefenster
Je nach TwinCAT-Projekt, das auf dem zu untersuchenden Zielsystem aktiviert wurde, können sehr viele Kontexte, verteilt auf verschiedenen Kernen, dargestellt werden. Dies kann dazu führen, dass einzelne Zusammenhänge nur schwer sichtbar gemacht werden können. Aus diesem Grund ist es möglich, die Kontexte im Darstellungsfenster beliebig anzuordnen.
- 1. Deaktivieren Sie die Option KeepGraphOrder in den Projekteinstellungen (siehe Projektknoten).
- 2. Wählen Sie alle Kontexte im Baum des Projekt-Eintrags ab.
- 3. Selektieren Sie die Kontexte in der Reihenfolge, in der Sie diese im Darstellungsfenster anzeigen möchten.
Beispiel: In der vorangegangenen Abbildung wurden alle Kontexte ausgeblendet und in der Reihenfolge wieder angewählt, sodass ohne Überscheidungen leicht ersichtlich ist, welche Task welchen EtherCAT Frame abschickt.