WinCC Variable Textliste mit Text aus DB automatisch befüllen

Eduard Schleich

Level-2
Beiträge
66
Reaktionspunkte
1
Hallo zusammen,

ich versuche gerade Text der in einem DB gespeichert wird in eine Textliste zur Auswahl zu integrieren.
Hintergrund ist, dass wir ein Dropdownmenü zur Programmanwahl haben. Die Benennung der Programme soll der Kunde selbst am Panel ändern können.
Der Text der Programme wird in einem DB gespeichert.

Panel ist das TP700 Comfort (6AV2 124-0GC01-0AX0 Version 17.0.0.6)

Also ich habe einen DB in dem die Programmnamen gespeichert werden.
DB.png
Darin wird für 10 Programme der Text gespeichert.
Beschrieben wird der Baustein über eine Seite am HMI.
Bearbeitung.png
Das funktioniert soweit Problemlos.
Die Dropdownliste über die das Programm ausgewählt werden soll ist wie folgt angelegt.
Textliste.png

Wenn das Panel nun aber neustartet und ich das Dropdownmenü öffne, wird nur der Text des aktiven Programmes angezeigt.
Dropdown.png

Wenn ich hier Programm 1: auswähle wird dann auch der Text richtig angezeigt. (Sind gerade nur 2 Programme bezeichnet)
Dropdown2.png
Auch in Dropdown. Ebenso wird alles richtig angezeigt, wenn ich nach dem Neustart mein Menü für die Texteingabe aus dem 2. Bild oben öffne.
Hier werden dann alle Namen wohl aus dem DB geladen.
Wenn ich nun zurück gehe und das Dropdown öffne werden beide Namen angezeigt, selbst wenn ich den zweiten Eintrag noch nicht angewählt hatte.

Daher komme ich zu dem Entschluss, dass beim öffnen des Dropdown nicht alle Einträge vom DB gelesen werden beim "direkten Zugriff" auf den DB
über die Eingabemaske werden aber alle Einträge aus dem DB gelesen.

Kann ich irgendwie bei Hochlauf des HMI oder öffnen der Seite über "Aufgebaut" z.B. die 10 Variablen aktualisieren? Es gibt ja die Möglichkeit eine Variable nicht zyklisch zu aktualisieren sondern auf "Zurufen". Weiß aber nicht so ganz wie ich das einrichten muss.
Könnt Ihr mir da vielleicht helfen?

Schöne Grüße
Edi
 
Moin,

die Textvariablen in den Einstellungen auf "Zyklisch fortlaufend" und NICHT auf Zyklisch im Betrieb stellen - dann funktionierts auch mit dem Nachbarn :)

Gruss,
michael
 
Morgen Eduard Schleich,

das Problem habe ich auch schon mal gehabt. Das liegt daran, weil die Variablen der Textliste nur gelesen werden, wenn sie angezeigt werden. Ich habe das mit Hilfe eines Skriptes gelöst. Dieses Skript wird bei Ereignis Bildaufbau des Bildes mit der Textliste ausgeführt.
1730702170697.png
Das Skript liest mit Hilfe einer Dummy-Variablen (intern im HMI) alle Variablen für die Textliste.

1730702834481.png1730702847147.png

Lass dich bitte nicht von den geschweiften Mengenklammern verwirren, ich hatte für die Namen in der SPS keine einzelnen Variablen sondern ein Array angelegt. Das Bild ist ein Screenshot aus meinem Projekt.

Nachtrag:
Evtl. im Skript bei Array-Variablen eine Schleife anlegen, frag mich nicht, warum ich das da nicht gemacht habe.
 
Zuletzt bearbeitet:
Kann ich irgendwie bei Hochlauf des HMI oder öffnen der Seite über "Aufgebaut" z.B. die 10 Variablen aktualisieren? Es gibt ja die Möglichkeit eine Variable nicht zyklisch zu aktualisieren sondern auf "Zurufen". Weiß aber nicht so ganz wie ich das einrichten muss.
Ja, kann man. Entweder per Skript oder direkt am Bild per Systemfunktion "AktualisiereVariable" z.B. beim Bildaufbau.
die Textvariablen in den Einstellungen auf "Zyklisch fortlaufend" und NICHT auf Zyklisch im Betrieb stellen - dann funktionierts auch mit dem Nachbarn
Ich würde nicht anfangen, zig Strings auf Zyklisch fortlaufend zu stellen. Es mag zwar funktionieren aber warum sollen Variablen rund um die Uhr aktualisiert werden, wenn ich sie vielleicht nur 1x am Tag aktualisiert benötige?
 
Also geht die Funktion wohl nicht beim Bildaufbau
auch in TIA V16 nicht...

1730706370363.png

bei einer Schaltfläche gibt es die Funktion dann - also vermutlich auch in einem Script -> Skript beim Bildaufbau und dann die Variablen aktualisieren ?

Gruss,
michael
 
Danke für die Anregungen.
Die Dauerhafte Aktualisierung finde ich auch nicht so gut.

Ich werds mal über ein Script beim Bildaufbau probieren.
Danke für die Anregungen.

Grüße
Edi
 
Muss ich da was besonderes einstellen? In der Hilfe finde ich was zu AktualisiereVariable für die Panels, aber nicht bei der Projektierung bei TP700comfort / TP1200comfort mit TIA15.1.
Ja, AktualisiereVariable gibt es nicht bei Bildaufbau.

Die Funktion AktualisiereVariable hat auch noch einen Nachteil, man bekommt kein Feedback ob aktualisiert wurde. In Skripten gibt es diese Funktion auch nicht. Siemens schreibt zwar:
Die Aktualisierung erfolgt nur auf Anforderung, z. B. durch die Systemfunktion "Aktualisiere Variable" oder durch ein Skript.
gibt aber kein Beispiel, wie man es mit einem Skript machen soll.

Eine sichere Variante wäre GetDataRecordTagsFromPLC zu nutzen. Da gibt es dann auch ein Feedback.
 
Einfach jede einzelne Variable beim Bildaufbau in einem Skript einmal lesen. Das Skript wartet zwar nicht auf die aktuellen Werte, die Aktualisierung wird aber angestoßen und sollte innerhalb weniger Sekunden alle Variablen aktualisieren. Notfalls das Bild nochmal aufrufen oder einmal das Bild aufrufen, wo alle Variablen eingegeben und verwendet werden.
 
Zurück
Oben