WinCC PopUp über PLC Variable aufrufen

Idrabac

Level-1
Beiträge
18
Reaktionspunkte
4
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Tag Kollegen,
Ich darf mich gerade durch die Welt der WinCC HMI programmierung tüfteln und bin mit meinem latein am ende.
ich versuche gerade ein Popup über eine PLC variable aufzurufen und scheitere sowohl über die Variablen eigenschaften als auch das Skript... was mache ich falsch ?
Ich Arbeite an einer Tia V17 mit WinCC Advanced HMI und einem TP700 Comfort panel.
Wenn der Bediener einen Taster am Schaltschrank drückt, soll eine PopUp meldung erscheinen, welches den Bediener fragt ob ein Rohr korrekt angeschlossen ist bevor ein Ventil öffnet ( Mobile maschine im ex-Bereich ein fixer sensor ist nicht umsetzbar).

Mein problem bei den Variablen Eigenschaften ist, dass das Pop Up bei jeder "Wertänderung" erscheint. nicht nur wenn die Bool variable = true ist, sondern auch beim umschalten true-> false ( was ich nicht will) ich könnte eine variable basteln die nur auf true umschalten reagiert, aber das scheint mir auf dauer zum umständlich zu sein. kann man das Umstellen ?

Beim Skript öffnet sich das Popup einfach nicht und ich weis nicht wieso. Die Variable kommt definitiv am HMI an, das habe ich mit einer Gestaltung überprüft. Das Skript habe ich auch schon ein paar mal umgebaut mit einer zusatz Variable oder ohne das " = True"
1702541056039.png
1702541043858.png
1702541065801.png
 
Zuletzt bearbeitet:
Mein problem bei den Variablen Eigenschaften ist, dass das Pop Up bei jeder "Wertänderung" erscheint. nicht nur wenn die Bool variable = true ist, sondern auch beim umschalten true-> false ( was ich nicht will) (...)

Beim Skript öffnet sich das Popup einfach nicht
Öffnet sich dein Popup nun bei jeder Wertänderung oder gar nicht?? :unsure:

Wenn es nur bei false -> true ("Kommen") öffnen soll, dann frage die Variable am Anfang des Skriptes ab, ob sie jetzt true ist.
Wenn das Popup gar nicht öffnet, wird der Trigger wohl gar nicht ausgelöst - vielleicht weil die Variable gar nicht aktualisiert wird? Wird die Variable in dem aktuellen Bild verwendet? Wenn nicht, dann muß die Erfassung/Aktualisierung der Variable auf "zyklisch fortlaufend" eingestellt werden, oder die Variable muß irgendwie im Bild verwendet werden. Beachte: "zyklisch fortlaufend" sollte nur bei wenigen Variablen eingestellt werden, wenn es nicht anders geht, weil das die Kommunikation zur SPS (unnötig) belastet.
 
Öffnet sich dein Popup nun bei jeder Wertänderung oder gar nicht?? :unsure:

Wenn es nur bei false -> true ("Kommen") öffnen soll, dann frage die Variable am Anfang des Skriptes ab, ob sie jetzt true ist.
Wenn das Popup gar nicht öffnet, wird der Trigger wohl gar nicht ausgelöst - vielleicht weil die Variable gar nicht aktualisiert wird? Wird die Variable in dem aktuellen Bild verwendet? Wenn nicht, dann muß die Erfassung/Aktualisierung der Variable auf "zyklisch fortlaufend" eingestellt werden, oder die Variable muß irgendwie im Bild verwendet werden. Beachte: "zyklisch fortlaufend" sollte nur bei wenigen Variablen eingestellt werden, wenn es nicht anders geht, weil das die Kommunikation zur SPS (unnötig) belastet.
Hallo PN/DP
danke für deine Rückmeldung!
Wenn ich versuche das PopUp über die SmartTag einstellungen zu öffnen. Funktioniert es! Aber es wird es bei jeder Wertänderung geöffnet ... also false -> true & true-> false.
ich will es aber nur bei false -> true öffnen.. in diesem beispiel verwende ich kein skript. sondern bearbeite das Ereignis der variable selbst, mich stört nur das 2te öffnen.

Die variable selbst wird definitiv aktualisiert. ich habe mir einen fablich wechselnden kreis mit link zur selben variable auf das Bild gemacht, welcher definitiv seinen zustand ändert.

Wie genau kann ich die variable am anfang anderst auf True denn abfragen ? in meinem Beispiel ist das meiner meinung nach die erste If abfrage die ich eingestellt habe ?
 
Hallo Idrabac,

rufe das PopUp doch direkt mit Ereignis des PushButton auf. Und dann im PopUp Tasten für Ventil auf oder abbrechen.
Hallo Peter! vielen dank für deine Rückmeldung.
da hab ich mich wohl dumm ausgedrückt. ich meine einen Realen Taster am Schaltschrank, nicht in der HMI.
ich könnte mir vorstellen einen unsichtbaren HMI button mit der selben variable zu schalten die der Physikalische Button in der PLC setzt. und dann über den rücken durchs knie das Popup über den HMI button >ereignis> öffnePopUp zu triggern.. aber muss das wirklich so kompliziert sein ?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wie genau kann ich die variable am anfang anderst auf True denn abfragen ? in meinem Beispiel ist das meiner meinung nach die erste If abfrage die ich eingestellt habe ?
Ist das auch die Variable, die den Trigger auslöst? Oder fragst du im Skript eine falsche Variable ab?
Zur Fehlervermeidung könntest du auch den Wert der Variable als Aufrufparameter dem Skript mitgeben.

Oder ist das vielleicht eine HMI-interne Variable? Die lösen bei Wertzuweisungen keine Wertänderung-Ereignisse aus.
 
Ist das auch die Variable, die den Trigger auslöst? Oder fragst du im Skript eine falsche Variable ab?
Zur Fehlervermeidung könntest du auch den Wert der Variable als Aufrufparameter dem Skript mitgeben.

Oder ist das vielleicht eine HMI-interne Variable? Die lösen bei Wertzuweisungen keine Wertänderung-Ereignisse aus.
das ist die Trigger variable ja.
in der PLC wird die DB variable: öffne PopUp gesetzt, die wird in die HMI auf eine HMI variable geschrieben, diese Variable wird im Skript zum aufruf des PopUps abgefragt.

Direkt auf die PLC DB variable konnte ich das Skript nicht verlinken
 
Ich verstehe das jetzt so:

PLC setzt Variable in DB -> Variable setzt bei Wertänderung im HMI eine internet Variable -> interne HMI-Variable ist als Trigger für das Script gesetzt -> Im Script wird die PLC-Variable abgefragt

@PN/DP meinte, Du solltest die HMI interne Variable außen vor lassen, was ich auch erst einmal denken würde.
Du sagst hingegen, Du kannst das Script nicht mit der PLC-Variable triggern. --> Warum nicht?

Wie lange steht denn das Signal der PLC-Variablen an?
Es könnte ja sein, daß die PLC-Variable bereits wieder false ist, während das Script auferufen wurde.

Also würde ich, wenn Du diesen langen Signalweg gehen mußt, auch die HMI-Variable abfragen, wenn ich das Script aufrufe, so arbeitest Du zumindest dahingehend datenkonsistent. Vielleicht auch hier kombiniert mit dem Vorschlag aus #6, den Variablenwert als Aufrufparameter zu übergeben. Dann können sich die Variablen bis zur Ausführung des Scripts wiederum ändern, ohne daß sich das auf Dein Script auswirkt.

Und ganz nebenbei: Was spricht gegen den Vorschlag aus #3?
 
Und ganz nebenbei: Was spricht gegen den Vorschlag aus #3?
Hat er doch im #5 geschrieben, es ist kein Softkey am Panel sondern ein Hardwaretaster

Was ist denn mit deiner Position für das PopUp-Fenster? Könnte es sein, dass das PopUp-Fenster zu groß ist und über den Rand des Bildes hinausgehen würde? Ich meine dann wird es auch nicht angezeigt. Hast du mal in den Systemmeldungen geschaut ob es da einen Eintrag gibt?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich verstehe das jetzt so:

PLC setzt Variable in DB -> Variable setzt bei Wertänderung im HMI eine internet Variable -> interne HMI-Variable ist als Trigger für das Script gesetzt -> Im Script wird die PLC-Variable abgefragt

@PN/DP meinte, Du solltest die HMI interne Variable außen vor lassen, was ich auch erst einmal denken würde.
Du sagst hingegen, Du kannst das Script nicht mit der PLC-Variable triggern. --> Warum nicht?

Wie lange steht denn das Signal der PLC-Variablen an?
Es könnte ja sein, daß die PLC-Variable bereits wieder false ist, während das Script auferufen wurde.

Also würde ich, wenn Du diesen langen Signalweg gehen mußt, auch die HMI-Variable abfragen, wenn ich das Script aufrufe, so arbeitest Du zumindest dahingehend datenkonsistent. Vielleicht auch hier kombiniert mit dem Vorschlag aus #6, den Variablenwert als Aufrufparameter zu übergeben. Dann können sich die Variablen bis zur Ausführung des Scripts wiederum ändern, ohne daß sich das auf Dein Script auswirkt.

Und ganz nebenbei: Was spricht gegen den Vorschlag aus #3?
Hallo JS! danke für deine rückmeldung.
Fast richtig! Ich habe 2 wege versucht ein Popup zu öffnen .
1. Die HMI interne variable mit Wert änderung die das Popup aber auch bei true-> false aufruft.
2. das skript als 2te unabhängige variante um das popup zu öffnen bei dem es aber garnicht geöffnet wird.
(in #9 hab ich nochmal den ganzen weg als Screen hinzugefügt.)

Beim Skript hab ich die Variable zum testen dauerhaft mit einem alwaysTrue signal aktiv gehabt und mehrfach ein/aus geschaltet und über einen simplen Kreis, der mit dem selben Signal seine Farbe ändert kontrolliert ob es auch in der HMI ankommt.
Eine änderung des Signals sollte also nicht ausschlaggebend gewesen sein wieso sich das PopUp garnicht öffnet.

Wenn ich im Skript versuche direkt die PLC variable auszulesen. ( also xxxAllgemein.Anfordxxx anstatt xxxAllgemein_Anfordxxx) eingebe erkennt mein skript diese variable nicht. nur die HMI variable... oder versteh ich hier grundsäzlich nicht was du versuchst mir zu sagen ? wie sollte das Skript deiner meinung nach aussehen ? ..
Bild
Bild
gegen #3 spricht nur, dass es sich nicht um einen HMI internen Button handelt sonst wäre das kein problem mir drücken und loslassen, sondern einen Physikalischen taster am Schaltschrank der auch über die PLC eingelesen wird.
 
Hat er doch im #5 geschrieben, es ist kein Softkey am Panel sondern ein Hardwaretaster

Was ist denn mit deiner Position für das PopUp-Fenster? Könnte es sein, dass das PopUp-Fenster zu groß ist und über den Rand des Bildes hinausgehen würde? Ich meine dann wird es auch nicht angezeigt. Hast du mal in den Systemmeldungen geschaut ob es da einen Eintrag gibt?
Hallo Schwimmer ! danke für deine Rückmeldung!
ich habe gerade zur Probe ein Popup mit 100x100 erstellt, jeweils x= 5/ y=5 als koordinaten eingegeben, aber geöffnet wird trotztdem nichts.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1. Die HMI interne variable mit Wert änderung die das Popup aber auch bei true-> false aufruft.
2. das skript als 2te unabhängige variante um das popup zu öffnen bei dem es aber garnicht geöffnet wird.
(in #9 hab ich nochmal den ganzen weg als Screen hinzugefügt.)

Also Du versuchst durch Wertämnderung der HMI-internen Variable entweder das Popup (Variante 1) oder das Script (Variante 2) aufzurufen?

Siehe:
Oder ist das vielleicht eine HMI-interne Variable? Die lösen bei Wertzuweisungen keine Wertänderung-Ereignisse aus.

Du kannst Aktionen nur an Wertänderung von PLC-Variablen hängen.
 
Mal klarstellen: das HMI kann nur mit HMI-Variablen arbeiten.
Manche HMI-Variablen sind nur HMI-interne Variablen, die lösen bei Wertzuweisung (Ausnahme: Änderung durch E/A-Feld) bei Wertänderung keine Ereignisse aus.
Manche HMI-Variablen sind mit Variablen in der PLC (den PLC-Variablen) verbunden. Direkt an PLC-Variablen können keine Ereignisse der HMI projektiert werden. Aber an der verbundenen HMI-Variable können die Ereignisse projektiert werden.

Übrigens: den Name von Variablen zusammenbasteln kann man nur von projektierten HMI-Variablen.
 
Mal klarstellen: das HMI kann nur mit HMI-Variablen arbeiten.
Manche HMI-Variablen sind nur HMI-interne Variablen, die lösen bei Wertzuweisung (Ausnahme: Änderung durch E/A-Feld) bei Wertänderung keine Ereignisse aus.
Manche HMI-Variablen sind mit Variablen in der PLC (den PLC-Variablen) verbunden. Direkt an PLC-Variablen können keine Ereignisse der HMI projektiert werden. Aber an der verbundenen HMI-Variable können die Ereignisse projektiert werden.

Übrigens: den Name von Variablen zusammenbasteln kann man nur von projektierten HMI-Variablen.
okay vielen dank für die klarstellung! ich fasse für mich zusammen. Es gibt stand jetzt, keine möglichkeit nur dann ein PopUp in der HMI zu öffnen, wenn ich in der PLC, eine Variable von false-> true schalte.

Ich muss wenn dann die PLC Variable so umbasteln, dass diese ihren wert nur ändert wenn eine neue Positive flanke zum Popup aufruf im programm erzeugt wird, oder muss den Aufruf über eine HMI interne Variable managen.
Sehr schade, ich dachte WinCC wäre da weiter aber dann Bastel ich mir mal eine Lösung!
Danke an dich! du warst sehr hilfreich und ich anscheinend etwas schwer von begriff :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Falsch.
Es ist ganz einfach:
Normal erstellt man eine HMI-Variable mit Verbindung zu einer PLC-Variable und bindet das Skript beim Ereignis Wertänderung der HMI-Variable an.
Und man muß dafür sorgen, dass die HMI-Variable auch aktualisiert wird. Also im Bild verwenden oder "zyklisch fortlaufend" aktualisieren.
 
Wenn ich möchte, das etwas nur bei einer positiven Flanke ausgeführt wird, erstelle ich mir ein Script mit den gewünschten Aktionen und füge dem Script eine Eingangsvariable hinzu. Diese Variable frage ich auf FALSE/0 ab, um die Ausführung des Scripts dann sofort zu beenden, z.B.:

1702569484986.png

Dem Scriptaufruf gebe ich dann die zu überwachende Variable mit:
1702569928475.png

Die Wertänderung ruft das Script nur bei einer Flanke auf und die Überwachung im Script prüft, ob es die gewollte Flanke ist.

Die Eingangsvariable beim Script hat den Vorteil, dass sie nicht an eine bestimmte HMI-Variable gebunden ist, sondern bei jedem Scriptaufruf auch eine andere Variable angegeben werden kann.
 
Wenn ich möchte, das etwas nur bei einer positiven Flanke ausgeführt wird, erstelle ich mir ein Script mit den gewünschten Aktionen und füge dem Script eine Eingangsvariable hinzu. Diese Variable frage ich auf FALSE/0 ab, um die Ausführung des Scripts dann sofort zu beenden, z.B.:

Anhang anzeigen 73722

Dem Scriptaufruf gebe ich dann die zu überwachende Variable mit:
Anhang anzeigen 73723

Die Wertänderung ruft das Script nur bei einer Flanke auf und die Überwachung im Script prüft, ob es die gewollte Flanke ist.

Die Eingangsvariable beim Script hat den Vorteil, dass sie nicht an eine bestimmte HMI-Variable gebunden ist, sondern bei jedem Scriptaufruf auch eine andere Variable angegeben werden kann.
Vielen dank hucki ! das ist genau das wonach ich gesucht habe !
das werde ich sofort versuchen umzusetzen
 
Zurück
Oben