Skip to main content

Toplevelvorlagen

Eine Toplevelvorlage ist eine Vorlage für das Startbild der erzeugten Visualisierung. Sie besteht aus einem Platzhalter (Frame) für das anwenderspezifische Bild, und aus Reitern, um direkt auf die einzelnen Bilder zu gelangen. Optional können Schaltflächen zur Navigation sowie eine Status- und Adresszeile eingefügt werden. Die Toplevelvorlage kann in den Einstellungen des Visualisierungsgenerators ausgewählt werden.

Die Bibliothek AC_ModuleBase, die Teil der Standardinstallation von CODESYS Application Composer ist, enthält drei Toplevelvorlagen: AC.GenVisu_Toplevel_Template, AC.Toplevel_Vertical_Template und AC.Toplevel_3S_Vertical_Template.

Abbildung 20. Standard-Toplevelvorlagen
Standard-Toplevelvorlagen


Abbildung 21. Toplevelvorlage AC_Toplevel_3S_Vertical_Template
Toplevelvorlage AC_Toplevel_3S_Vertical_Template


Neben den vorgefertigten Vorlagen können auch benutzerspezifische Toplevelvorlagen erzeugt werden.

Abbildung 22. Elemente einer Toplevelvorlage
Elemente einer Toplevelvorlage


  • (1): Navigation: hoch / zurück / vor

  • (2): Frame zur Anzeige der Bilder

  • (3): Reiter für die direkte Navigation zum Toplevelbild

  • (4): Statuszeile

  • (5): Adresszeile: Instanzpfad der angezeigten Modulinstanz

Die in der Vorlagenvisualisierung enthaltenen Elemente werden über die Elementnamen identifiziert.

. Obligatorische Elemente der Vorlage
  • [Frame]: Hauptframe, in dem die Visualisierungsbilder angezeigt werden. Anmerkung: Für optisch gute Ergebnisse sollte der Frame den Skalierungsmodus „Isotropisch“ gesetzt haben.

  • [Tab_Template_1],[Tab_Template_2]: Zwei Elemente, die als Vorlage für die Reiter verwendet werden. Das erste wird als Vorlage verwendet, aus der Position des zweiten ergibt sich die Ausrichtung der Anordnung (von links nach rechts oder von oben nach unten) sowie die Größe des Zwischenraums zwischen zwei Reitern. Die Alarmfüllfarbe wird verwendet, wenn die angezeigten Bilder in der Hierarchie unterhalb der durch den Reiter repräsentierten Instanz liegt. Ist das Element eine Schaltfläche, wird in diesem Fall auch die Schaltflächenzustandsvariable gesetzt. Ist das Element ein Frame wird die Alarmfüllfarbe nicht verwendet. Stattdessen wird die Frame-Umschaltvariable belegt, so dass sie den Wert 1 hat, wenn der Reiter selektiert ist, und sonst 0.

. Optionale Elemente der Vorlage
  • [Up], [Back], [Forward]: Schaltflächen für die Navigation. Der Elementtyp kann Schaltfläche oder Frame sein. Im letzteren Fall muss der Frame drei Visualisierungen, in dieser Reihenfolge, haben: Neutral, Gedrückt, Deaktiviert.

  • [Address]: Texteingabefeld, in dem der Instanzpfad der dargestellten Modulinstanz angezeigt wird.

  • [Status]: Texteingabefeld in dem der Inhalt der globalen Stringvariablen ac.g_stVisuStatusBar aus der Bibliothek AC_ModuleBase dargestellt wird. Diese Variable kann in der Implementierung eigener Module genutzt werden um den Status von Variablen anzuzeigen.

Alle sonstigen Elemente werden vom Visualisierungsgenerator nicht gesondert behandelt. Bei der Generierung wird die Vorlagenvisualisierung kopiert und die Kopie modifiziert. Das Original wird nicht verändert.

Mit Ausnahme der oben erwähnten Visualisierungselemente versucht der Visualisierungsgenerator von Hand gemachte Änderungen an diesen Elementen nicht zu verändern. Bei der ersten Visualisierungsgenerierung wird die beschriebene Visualisierungsvorlage kopiert. Diese Kopie wird, solange sie nicht vom Anwender gelöscht wird, bei den weiteren Generierungsläufen nur noch verändert und nicht mehr kopiert. Dazu wird eine Toplevel-Visualisierung von vorherigen Generierungsläufen wie eine neue Visualisierungsvorlage (die Originalvorlage wird nie verändert) behandelt, obwohl sie nicht kopiert ist. So werden weitere Reiter zu den bereits bestehenden Reitern hinzugefügt. Alle anderen Eigenschaften und Elemente werden, wenn möglich, nicht verändert, so dass vom Anwender manuell hinzugefügte Schaltflächen, Reiter etc. ihre Positionen beibehalten.

Tipp

Ein Löchen der Navigationsschaltflächen führt zu deren Verlust. Um sie zu erzeugen, muss die Toplevel-Visualisierung gelöscht und neu generiert werden.

Anordnung der Reiter

Die Reiter werden entweder horizontal von links nach rechts oder vertikal von oben nach unten platziert. Die Anordnung der beiden Vorlagenelemente Tab_Template_1 und Tab_Template_2 entscheidet darüber, wie angeordnet wird: Ist der vertikale Abstand der Elemente größer als der horizontale wird horizontal angeordnet, sonst vertikal.

Bei vertikaler Anordnung werden alle Reiter auf dieselbe Breite gebracht, die minimale Breite bei der alle Reiternamen angezeigt werden können. Bei horizontaler Anordnung erhält jeder Reiter die minimale Breite, bei der sein Name angezeigt werden kann. In beiden Fällen entspricht die Höhe der Reiter der Höhe der ersten Vorlage (Tab_Template_1).

Zur Platzierung wird für jeden Reiter die erste Vorlage kopiert und angepasst.

Die Platzierung beginnt an der Position der ersten Vorlage, der Abstand zweier Reiter ergibt sich aus dem horizontalen oder vertikalen Abstand der beiden Vorlagen. Dieser Abstand kann auch negativ sein, in diesem Fall überlappt der folgende Reiter den vorhergehenden und übermalt ihn, da er weiter vorne liegt). Bei vertikaler Anordnung wird die Generierung mit Fehler abgebrochen, wenn der Platz nach unten nicht ausreicht, um alle Reiter aufzunehmen. Es wird keine zweite Spalte mit Reitern angelegt. Bei horizontaler Anordnung wird eine neue Zeile angefangen, wenn der nächste Reiter horizontal nicht mehr vollständig in die Visualisierung passt. Wenn das beim ersten Reiter einer Zeile geschieht, wird die Generierung mit Fehler abgebrochen.

Es kann vorkommen, dass der Platz für die Reiter nicht ausreicht. Bei horizontaler Anordnung passiert das dann, wenn in eine neue Zeile umgebrochen wird. Bei vertikaler Anordnung passiert es, wenn die Breite der Reiter größer ist als der für sie vorgesehene Platz in der Vorlage. In diesen Fällen wird versucht, mehr Platz zu schaffen. Aufgrund der automatischen Ausrichtung der Elemente gibt es vier Möglichkeiten, die Reiter zu platzieren:

  • Horizontale Anordnung der Reiter: Alle Reiter müssen sich vollständig oberhalb des Frames befinden

  • Horizontale Anordnung der Reiter: Alle Reiter müssen sich vollständig unterhalb des Frames befinden

  • Vertikale Anordnung der Reiter: Alle Reiter müssen sich vollständig links vom Frame befinden

  • Vertikale Anordnung der Reiter: Alle Reiter müssen sich vollständig rechts vom Frame befinden

Wenn die Vorlage nicht einem dieser Fälle entspricht, wird vor der Generierung ein Fehler ausgegeben.

Wenn der Platz für die Reiter nicht ausreicht, dann wird der Frame entsprechend verkleinert. Alle Elemente zwischen Reitern und Frame werden verschoben. Ein Element gilt als „zwischen Reiter und Frame“, wenn es nicht vollständig außerhalb der Grenzen des ersten Reiters liegt (siehe dazu das Beispiel unten für horizontale Anordnung).

In jedem Fall wird die Generierung mit Fehler abgebrochen, wenn durch die Änderung des Frames seine Fläche leer oder negativ wird.

Abbildung 23. Beispiel für Elemente zwischen Reiter und Frame
Beispiel für Elemente zwischen Reiter und Frame


Abbildung 24. Beispiel für Elemente „außerhalb“ Reiter und Frame
Beispiel für Elemente „außerhalb“ Reiter und Frame