Visualisierungsbilder erzeugen
In Visualisierungsbildern des Application Composers können alle CODESYS V3-Visualisierungselemente sowie die eingebetteten Visualisierungsbilder verwendet werden. Weiterhin können Visualisierungselemente (beispielsweise Rechteck) als spezielle Platzhalter genutzt werden.
Platzhalterelemente in Visualisierungsbildern
Standardvisualisierungselemente (beispielsweise Rechteck, Bilder) können als Platzhalter verwendet werden. Beim Erzeugen der Visualisierung werden dann die zugeordneten eingebetteten Visualisierungen an der Position und in der Größe des Platzhalters dargestellt.
Die Zuordnung geschieht über den Instanznamen des Elements. Dieser muss die Form
PLACEHOLDER_<SUBPATH>
haben. Der<SUBPATH>
hat folgende Syntax:<SUBPATH> ::= <SLOTREF> | <SLOTREF>:<SUBPATH>
<SLOTREF> ::= <SLOTNAME> | <SLOTNAME>[<idx>]
<SLOTNAME>
ist der Targetname eines Slots (Groß- und Kleinschreibung spielt keine Rolle).<idx>
ist ein null-basierter Index, er kann nur bei Multi-Slots verwendet werden und gibt an, welche Submodulinstanz des Multislots dort verbunden werden soll.Beim Einlesen der Moduldefinitionen wird geprüft, ob die Platzhalternamen in den Visualisierungsbildern gültig sind. Genauer, wenn ein Element eines Visualisierungsbilds mit
PLACEHOLDER_
beginnt (Groß- und Kleinschreibung unerheblich), dann muss der<SUBPATH>
mit einer gültigen Slotreferenz beginnen. Bei Verwendung eines Index muss er zur Stelligkeit des Slots passen. Alle Slotnamen des Pfades müssen gültige IEC-Identifier sein. Gibt es mehrere Platzhalter, so müssen alle Pfade verschieden sein. Ferner müssen die Platzhalterelemente nichtleere Fläche haben.Existiert zu dem
<SUBPATH>
eines Platzhalterelements keine entsprechende Modulinstanz, dann wird dem Element keine Visualisierung zugeordnet. Es wird auch keine Fehler- oder Warnmeldung ausgegeben.Existiert zu dem
<SUBPATH>
eine entsprechende Modulinstanz, dann wird sie nur dann eingebettet, wenn sie eine Einbettung in das Visualisierungsbilds der aktuellen Bildes definiert.Die eingebetteten Visualisierungen werden unter Beibehaltung ihres Seitenverhältnisses so skaliert, dass sie einen möglichst großen Bereich der Platzhalterelemente ausfüllen, aber nicht darüber hinaus ragen.



Tipp
Nur Submodulinstanzen und deren Submodulinstanzen können über Platzhalter eingebettet werden. Es ist nicht möglich Visualisierungen aus anderen Zweigen des Modulbaums einzubetten.
Überprüfungen der Toplevelvorlage
Folgende Tests für das Toplevel-Bild werden durchgeführt:
Wenn die Vorlagevisualisierung nicht existiert, oder wenn sie Ein- oder Ausgänge in ihrer Schnittstelle hat, wird ein Fehler ausgegeben.
Wenn ein obligatorisches Element fehlt, wird ein Fehler ausgegeben.
Wenn eines der unterstützten Elemente vorhanden ist und entweder eine leere Fläche hat oder nicht den richtigen Elementtyp, wird ein Fehler ausgegeben.
Wenn sich die Vorlagen für die Reiter mit dem Frame-Element überschneiden, wird ein Fehler ausgegeben.
Wenn die Vorlage für den zweiten Reiter dieselbe Position hat oder ihre Position links von oder oberhalb von der Position der Vorlage des ersten Reiters liegt, wird ein Fehler ausgegeben.
Bei horizontaler Ausrichtung der Reiter wird ein Fehler ausgegeben, wenn die Reiter nicht komplett über oder unter dem Frame liegen.
Bei vertikaler Ausrichtung der Reiter wird ein Fehler ausgegeben, wenn die Reiter nicht komplett rechts oder links vom Frame liegen.
Erzeugen von Visualisierungsbildern
Alle Visualisierungsbilder werden mit dem Befehl Erzeugen initial neu erzeugt. Mit jedem weiteren Durchlauf werden nur noch die Parameter verändert, die sich im Modulbaum verändert haben.
Ein erzeugtes Visualisierungsbild besteht aus einem Frame, der die Größe der Visualisierung bestimmt und in den die entsprechende Visualisierung des Moduls eingeblendet wird. Darüber werden dann die eingebetteten Visualisierungen folgendermaßen platziert:
Alle eingebetteten Elemente werden mit der Element-ID persistent identifiziert. Wenn ein bestehendes Visualisierungsbild in einem erneuten Generierungslauf aktualisiert wird, wird nach der entsprechenden ID gesucht. Wenn dieses Element vorhanden ist, dann werden nur die Parameter verändert, die von der Modulkonfiguration geliefert werden. Beispielsweise bleibt die Position unverändert, der Visu/Framewechsel und das zur Anzeige verwendete Visualisierungsobjekt können sich ändern.
Die eingebetteten Visualisierungen werden kachelförmig von links nach rechts und von oben nach unten in die Seite eingefügt. Falls ein passendes Platzhalterelement da ist, hat die Platzierung per Platzhalter Vorrang. Schließlich kommen beide Mechanismen nicht zum Einsatz, wenn der Frame mit der entsprechenden ElementID
bei der Generierung bereits vorhanden ist. In diesem Fall bleibt die Position wie sie ist.
Visualisierungsbilder, die beim letzten Generierungslauf erzeugt wurden, aber nicht beim aktuellen Lauf erzeugt werden sollen, werden gelöscht.
Reihenfolge der Einbettungen
Zuerst werden alle Visualisierungen, die über next Ancestor
eingebettet sind, eingefügt. Diese werden in der Pre-Order der Modulinstanzen im Baum eingefügt. (Zuerst das erste Kind, dann alle dessen Nachfahren, dann das zweite Kind …)
Danach werden alle Visualisierungen, die über direkte Angabe der Instanz eingebettet sind, eingefügt. Auch diese werden in Pre-Order der Modulinstanzen eingefügt.
Navigation innerhalb der Visualisierung
Die Navigation innerhalb der Visualisierung kann über die Reiter oder die Navigationsschaltflächen Zurück, Hoch und Vor erfolgen. Ein Mausklick auf das Reiterelement öffnet direkt das dazugehörige Visualisierungsbild. Die Schaltflächen Zurück und Vor können zum Navigieren innerhalb der Historie des angezeigten Bildes verwendet werden (ähnlich dem Navigieren im Internetbrowser). Der Schalter Hoch schaltet in die nächsthöhere Ebene.