Integrierte Visualisierung
Zu Diagnosezwecken kann es gewünscht sein, eine Visualisierung nur innerhalb des Programmiersystems laufen zu lassen, ohne Visualisierungscode auf die Steuerung laden zu müssen. Diese integrierte Visualisierung wird automatisch verwendet, wenn kein "TargetVisualization" oder "WebVisualization" Client-Objekt unterhalb des Visualisierungsmanagers hinzugefügt worden ist. Dann wird kein Visualisierungscode erzeugt und auf die Steuerung geladen. Dies bedeutet allerdings einige Einschränkungen, die im Folgenden aufgelistet sind.
Einschränkungen für Ausdrücke, Monitoring
Die Diagnose-Visualisierung unterstützt nur Ausdrücke, die vom Monitoring-Mechanismus des Programmiersystems gehandhabt werden können. Diese sind:
- normale Variablenzugriffe wie MAIN.fbTest.nCounter
- komplexe Zugriffe wie im Folgenden aufgelistet:
- Zugriff auf ein Array von skalaren Datentypen, wobei eine Variable als Index verwendet wird (a[i])
- Zugriff auf ein Array von komplexen Datentypen (Strukturen, Funktionsbausteinen, Arrays) wobei eine Variable als Index verwendet wird (a[i].x)
- Zugriff auf ein mehrdimensionales Array von allen Arten von Datentypen, mit einer oder mehreren Variablen-Indizes (a[i, 1, j].x)
- Zugriff auf ein Array mit konstantem Index (a[3])
- Zugriffe wie die oben beschriebenen, in denen einfache Operatoren für die Berechnungen innerhalb der Indexklammer verwendet werden (a[i + 3])
- verschachtelte Kombinationen der oben gelisteten komplexen Ausdrücke (a[i + 4 * j].aInner[j * 3].x)
- in Index-Berechnungen unterstützte Operatoren: +, -, *, /, MOD
- Pointer-Monitoring wie p^.x
- nicht unterstützt werden Methoden oder Funktionsaufrufe außer den folgenden:
- alle Standard-Stringfunktionen
- alle Typkonvertierungsfunktionen wie INT_TO_DWORD
- alle Operatoren wie SEL, MIN, ...
Einschränkungen für Eingaben
Innerhalb der Eingabeaktion "ST-Code ausführen" wird nur eine Liste von Zuweisungen unterstützt.
Beispiel:
PLC_PRG.n := 20 * PLC_PRG.m;
// nicht erlaubt
IF PLC_PRG.n < MAX_COUNT THEN
PLC_PRG.n := PLC_PRG.n + 1;
END_IF
//statt dessen folgendes verwenden:
PLC_PRG.n := MIN(MAX_COUNT, PLC_PRG.n + 1);
Wenn eine Liste von Zuweisungen verwendet wird, wird der Wert auf der linken Seite erst im nächsten Zyklus zugewiesen. Eine unmittelbar folgende Verarbeitung in der nächsten Zeile ist nicht möglich. |
Visualisierungsschnittstelle
Innerhalb der Schnittstellendefinition einer Visualisierung darf der Typ "Schnittstelle" ("INTERFACE") nicht verwendet werden.