Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder einen alternativen Browser verwenden.
WinCC UnifiedWinCC Unified V20 - aus einem Popup mit einem Button ein Bildfenster steuern
ich möchte aus einem Popup mit einem Button ein Bildfenster in dem Bild darunter steuern. Leider bekomme ich das nicht hin.
Egal was ich als Bildpfad eintrage, wird das Bild im Bildfenster nicht umgesteuert.
Vielleicht könnt ihr mir sagen was ich falsch mache.
Vielen Dank vorab.
Man hat normalerweise im Popup keinen direkten Skriptzugriff auf das "normale" Bildmodell. Man kann per Skript aber tricksen und sich das Objektmodell in eine Variable kopieren und über diese Variable darauf zugreifen.
Javascript:
//Variable zum Zugriff auf das eigentliche UI-Objekt
let ui = UI;
//Jetzt erst Zugriff auf UI möglich. Im Popup-Kontext hat man sonst keinen Kontext dazu
ui.SysFct.ChangeScreen(screenName, screenWindowPath);
Den Pfad zum Button im Bildfenster dann via absolute oder relative Pfade zusammenbauen.
Wie hier an den Beispielen zum Pfadaufbau in der Doku zu finditem:
Danke dir.
Jedoch funktioniert dies bei mir leider nicht. Er öffnet einfach nicht das Bild im Bildfenster.
Irgendwie vertsehe ich noch nicht richtig wie das mit den Bildpfaden funktioniert.
1:
Pack deinen Code in ein try..Catch & gibt per Trace die Fehlermeldung aus.
Damit bekommst du schon mal ne Ansage was das Problem ist.
Die Fehlerbeschreibung ist teilweise etwas kryptisch, aber wenn man ne Weile damit arbeitet versteht man das Ding... irgendwie...
2:
Gib dir per Trace mal die Path-Property der beiden Bildfenster aus.
Evtl einfach nen Tippfehler, wie von @centipede vorgeschlagen?
Ich danke euch für eure Tipps.
Die Tilde hat leider auch nicht geholfen.
Ebenso verstehe ich von dem anderen nur Bahnhof. Ich bin in dem Thema Unified noch kompletter Neuling und hatte bisher noch keine Schulung.
Vielleicht kannst du dies noch mal für mich genauer erklären (Für Geschäftsführer und Hausfrauen) ;-)
Ich danke euch für eure Tipps.
Die Tilde hat leider auch nicht geholfen.
Ebenso verstehe ich von dem anderen nur Bahnhof. Ich bin in dem Thema Unified noch kompletter Neuling und hatte bisher noch keine Schulung.
Vielleicht kannst du dies noch mal für mich genauer erklären (Für Geschäftsführer und Hausfrauen) ;-)
Ich denke ich habe das mit der Anleitung soweit verstanden, jedoch sind das alles Beschreibungen für Bildfenster in Bildfenster.
Ich habe aber das Thema das ich aus einem Popup heraus im Grundbild ein Bildfenster ändern möchte und bekomme dort die Adressierung des Bildpfades nicht hin.
Das ist der springende Punkt an der Ganzen Sache: alles besteht aus Bildfenstern.
Es handelt sich nicht mehr um ein rein bildbasiertes HMI-Konzept.
Bei Comfort hast du dein jeweiliges Bild mit mehreren anderen Bildern überlagert (Globales Bild, Vorlage) & dann immer komplette Bilder angezeigt, die jeweils die komplette Anzeigefläche eingenommen haben.
Bei Unified hingegen baust du dir mit einzelnen Bildfenstern bzw. Teil-Bildern deine Anzeigefläche zusammen und wechselst bei "Bildwechseln" auch nur die dafür notwendigen Teilbereiche/Bildfenster.
Das erfordert zwar am Anfang eine etwas andere Denkweise im Bezug darauf wie du deine Bildbereiche einteilst,
ich persönlich finde es, sobald man den Dreh raus hat, aber tatsächlich etwas effizienter als diese monolithischen Bilder in Comfort.
In der Template Suite findest du in Kapitel 4 ein Beispiel wie man seine Bildbereiche aufteilen kann/könnte.
Ich hab beispielsweise für meine Zwecke die Titel- und Statusbar zusammengefasst, den Rest mit main- sub & third-Nav aber konzeptionell, so wie in der Template Suite dargestellt, übernommen.
Schau es dir an, versuche es zu verstehen & entscheide anschließend was für deine HMIs passt und was nicht.
Zum konzeptionellen Entwurf von Layouts kann ich noch die HMI Desing Masterclass empfehlen.
SIMATIC HMI Design Masterclass / Die Video-Lektionen, die Ihr HMI Design einfach besser machen. Jetzt kostenfrei registrieren!
www.siemens.com
Das ist zwar eine ganze Menge theoretisches Künstler-Gesabbel, im Kern jedoch durchaus nutzbar, da es sich wirklich lohnt beim Umstieg auf Unified mal einen Schritt nach hinten zu gehen und dir ein paar Gedanken zu deinem gewohnten Layout zu machen.
Wenn du in Teams arbeitest sind speziell die Entwurfs-Zettel, die dort vorgestellt werden, ganz nützlich.
Zur Umsetzung beachte unbedingt die Tipps&Tricks-Beiträge, die @LucasMucas oben gepostet hat.
Zumindest wenn du nicht willst, dass dein HMI am Ende läuft wie ein Sack Kartoffeln läuft ¯\_(ツ)_/¯
Zurück zum eigentlichen Thema:
Nutze für irgendwelche Scripting-Geschichten GRUNDSÄTZLICH >>>IMMER<<< die Dreiheiligkeit aus Try, catch & Trace.
Damit bekommst du, sobald es zu einem Fehler in deinem Script kommt, zumindest eine konkrete Aussage was genau das Problem war.
Grundlegende Beschreibung zu diesem Sprachelement siehe hier:
The try...catch statement is comprised of a try block and either a catch block, a finally block, or both. The code in the try block is executed first, and if it throws an exception, the code in the catch block will be executed. The code in the finally block will always be executed before control...
developer.mozilla.org
Im Prinzip ist es eine "versuche das, wenn es zu einem Fehler kommt mach dies"-Verzweigung.
Befindet sich auch in den Rechtsklick-Snippets im TIA-Scripteditor, genauso wie Beispiele zum Trace-Befehl.
Verwendung des Trace-Viewers (das wohin die ganzen Debugging-Nachrichten ausgegeben werden) siehe:
Zu der Batch-Datei zum Verbinden deines PCs mit einem Panel hab ich auch mal hier (ganz unten im Beitrag) eine Alternative gepostet.
In dem Post findest du auch ein Beispiels zu Verwendung von Trace, das sich dort allerdings auf die Verwendung innerhalb von Faceplates bezieht. Funktioniert in normalen Bildern aber identisch, musst dich lediglich auf ein Item oder den Screen selbst beziehen, nicht auf das Faceplate.
Ich habe aber das Thema das ich aus einem Popup heraus im Grundbild ein Bildfenster ändern möchte und bekomme dort die Adressierung des Bildpfades nicht hin.
Du kannst dir z.B. beim Bildaufbau oder bei Fehlern den aktuellen Bildfenster-Pfad per Trace ausgeben lassen.
Beispiel, dass ich hier an das "Aufgebaut"-Ereignis des Bildes gehängt habe::