# CoDeSys 3 - Schnittstellen Visualisierung



## krxpfgqil (24 September 2019)

Hallo zusammen,

bislang habe ich mir Visualisierungen in CoDeSys immer "irgendwie" zurecht gefriemelt und häufig gesamte Elemente kopiert - das lag aber daran, dass ich hauptsächlich mit Version 2 arbeiten musste.
Jetzt habe ich gesehen, dass CoDeSys V3.5 mir die Möglichkeit bietet, häufig verwendete Elemente auch als Frame einzubinden, was natürlich ein enormer Fortschritt ist. Hierbei lassen sich ja auch Variablen als Schnittstellen definieren, mit denen man bei jeder Instanz/Referenz des Frames beispielsweise die Farbe umschalten kann.

Bezüglich der Schnittstelle stelle ich mir aber gerade auch noch die Frage, ob man diese nicht auch einfach direkt aus den POUs heraus verwenden kann? So, dass ich beispielsweise auf einer "Hauptseite" die gesamte Bedienoberfläche darstelle und dabei alle Variablen die ich für die aktive Visualisierung benötige bereits in der Schnittstelle definiere, die ich dann nur noch im Quellcode entsprechend adressieren und beschreiben kann. Quasi die Visu als "gekapseltes" Objekt mit Verbindung "nach außen".

Ich habe schon ein wenig rumprobiert und konnte noch keine wirklich schöne Lösung finden, außer indirekt über einen kleinen Umweg, bei dem ich einfach die "Hauptseite" als Frame in eine zusätzlich leere Visu einfüge und dort alle Variablen als Datenstruktur übergebe. Deswegen die Frage: Gibt es eine Möglichkeit, dass man die Schnittstelle eine Visu-Seite aus dem Quellcode (quasi "VisuName.Schnittstellenvariable") heraus anspricht?

Hoffe Ihr konntet meiner Beschreibung etwas folgen.

Viele Grüße
Tobias


----------



## wollvieh (24 September 2019)

Frames und Platzhalter gab es schon bei Codesys2.


----------



## krxpfgqil (25 September 2019)

Möglich, dann aber scheinbar nicht bei jeder Hardware.
Bei den BasicDisplays der Firma ifm - mit denen ich gearbeitet habe - gab es diese definitiv nicht. Außer Linien, Polygonen und Bitmaps kann man dort nichts verwenden. Aber darum geht es in diesem Thread auch nicht. Sondern darum, ob man die Visualisierungs-Schnittstelle irgendwie in den POUs direkt ansprechen kann.


----------



## holgermaik (25 September 2019)

Suche mal in der Codesys Hilfe nach

```
{attribute 'VAR_IN_OUT_AS_POINTER'}
oder
<Visuname>_VISU_STRUCT
```

das könnte es sein was du suchst.

Allerdings vertstehe ich nicht genau was du machen möchtest.
Frame's sind eigentlich dafür gedacht ein Visu Element mehrfach zu verwenden. z.B. eine Eingabe mit Tasten, Lampen usw. 
Diesem Template gibst du eine Datenstrucktur mit der du dann bei Mehrfachverwendung eine konkrete Datenstrucktur zuweist.
Holger

PS: Wenn du ein Template mehrfach zur gleichen Zeit anzeigen möchtest musst du auch mehrere Instanzen des Template auf die Steuerung laden.


----------



## krxpfgqil (25 September 2019)

Danke, ich werde das nachher mal nachschauen.

Eigentlich geht es mir eher weniger um Frames, die ich irgendwo einbinden kann. Wofür diese sind und wie ich diese verwende, ist mir schon klar. 

Ich versuch's nochmal etwas anders zu erläutern:
Angenommen ich habe jetzt ein HMI mit einer einzigen Visualisierungsseite (VISU_P1) auf der Variablenwerte dargestellt werden, beispielsweise als Text in irgendwelchen Rechtecken. Dann muss ich ja in die Visu gehen und unter den Eigenschaften des Elements im Feld "Textvariable" die Variable aus meinem Programm (ausm POU, globale, oder sonst was) eintragen, welche angezeigt werden soll. Wenn ich diese Visualisierungsseite jetzt beispielsweise in einem anderen Projekt nutzen will, muss ich wieder hergehen und in den Eigenschaften aller Elemente die Variablen anpassen.

Praktischer fände ich es, wenn ich jetzt im Schnittstelleneditor zugehörige Input-Variablen festlegen könnte, meinet wegen "WertTextfeld1", "WertTextfeld", [....], die ich anschließend direkt aus einer POU heraus über "VISU_P1.WertTextfeld1 := 500" (VisuName.Variablenname) oder ähnlich beschreiben könnte. Damit wäre diese eine Visualisierungsseite im Grunde ein eigenes, gekapseltes Objekt mit einer Schnittstelle zum eigentlichen Programm und ich spare mir das nervtötende rumgeklicke, um in jedem Element die Variablennamen anzupassen.

Keine Ahnung wie ich es anders erklären soll.  Kurzgefasst: Ich will den Schnittstelleneditor nicht für Frames nutzen, sondern um die Anzeigewerte auf der Visualisierungsseite in einem PRG zu ändern, ohne dass ich großartig in der Visu rumklickern muss.


----------



## holgermaik (25 September 2019)

Das was du möchtest geht meiner Meinung nach nicht, da du die Startseite einer Visu nicht mit Variablen instanziieren kannst.
Hier bliebe nur der Weg über ein Frame mit einer definierten Datenstruktur oder ein FB / PRG die an die Visuseite gekoppelt sind oder eine Variablenliste.
Die beiden oben vorgeschlagenen Wege sind leider nur für Dialoge anwendbar. (habe nochmal getestet). Einen Dialog kann man aber leider nicht als Startseite festlegen.


----------



## krxpfgqil (25 September 2019)

Das habe ich mir schon fast gedacht. Hätte ja sein können, dass es da doch noch einen Kniff gibt.
Sehr schade, aber trotzdem vielen Dank! 

Viele Grüße


----------

