Ich denke ich habe das mit der Anleitung soweit verstanden, jedoch sind das alles Beschreibungen für Bildfenster in Bildfenster.
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:
support.industry.siemens.com
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::
Javascript:
export function Screen_1_OnLoaded(item) {
try {
HMIRuntime.Trace("Hierarchie-Info: \n" +
"Bildfenstername: " + item.Parent.Name + "\n" +
"Pfad: " + item.Parent.Path, HMIRuntime.Trace.Enums.hmiSeverity.Info);
} catch (ex) {
HMIRuntime.Trace("Fehler beim Bildaufbau, Fehlerdetails " + ex, HMIRuntime.Trace.Enums.hmiSeverity.Error);
}
}