WinCC Unified Zoomen auf Bereiche "Weltbild"

AutoGen_63364

Level-2
Beiträge
11
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

hat jemand von euch schon ein sogenanntes Weltbild programmiert in dem man auf bestimme Bereiche zoomen kann?

Hintergrund ist den Engineering Aufwand zu minimieren in dem man ein hochauflösendes Übersichtsbild (Fördertechnik) benutzt und mit Schaltflächen auf einen bestimmten Bereich "zoomt" inkl. Positionierung des Bildes. Der Siemens Support konnte mir leider auch nicht weiterhelfen.

Screen.Items("Bildfenster").CurrentZoomFactor = 1.5; // zooms 50%

Screen.Items("Bildfenster").VerticalScrollbarPosition = 300;

Screen.Items("Bildfenster").HorizontalScrollbarPosition = 300;

// Scrolls to 300x300 pixels from top left in the screenwindow

haben keine Wirkung bzw. geben mir einen Fehler zurück. (sowohl mit Systembefehlen als auch mit Skript)

Auch habe ich diverse Pfade/BIldfenster/Systemfunktionen ausprobiert.

Ist hier im Forum jemand anwesend der hierfür schon eine brauchbare Lösung gefunden hat die auch funktioniert?

Grüße
 
Zuviel Werbung?
-> Hier kostenlos registrieren
hat jemand von euch schon ein sogenanntes Weltbild programmiert in dem man auf bestimme Bereiche zoomen kann?

Hintergrund ist den Engineering Aufwand zu minimieren in dem man ein hochauflösendes Übersichtsbild (Fördertechnik) benutzt und mit Schaltflächen auf einen bestimmten Bereich "zoomt"
Kollegen haben sowas mal für einen Kunden gemacht, aber nicht mit Siemens.
Ich finds für den Bediener und die Übersicht grausig.
Wenn man halbwegs damit arbeiten können will, ist der Engineeringaufwand sogar höher. Du brauchst je nach "Zoomstufe" ein anderes "Bild" mit höherem/kleinerem Detailgrad.
Wenn Du sozusagen das komplette HMI einer Anlage (oder sogar den ganzen Standort mit 100000 Feldgeräten) in ein einziges Bild zeichnen würdest und dann das Gesamtbild auf einem Monitor darstellen willst, kannst garnichts erkennen.
Ausserdem leidet die Performance extrem, da immer "die ganze Welt" dargestellt/geladen wird.

Der Kunde von uns damals war noch schlimmer, der wollte aus seiner weltweiten Standortansicht über die einzelnen Anlagen bis zum Sensor nahtlos "durchzoomen" können... und das ganze nicht nur im Leitsystem sondern dann auch auf jedem HMI an der einzelnen Anlage. Da ja die HMI eh im Netz hängen 🤮 Einfach völlig grausig.

Mal von Sicherheitsthemen/Benutzerrechten ganz abgesehn. Da ist auch mal schnell in die falsche aber ähnliche Anlage gezoomt...

Ich kenn mich jetzt mit Fördertechnik nicht aus, aber für verfahrenstechnische Anlagen zeiche ich das HMI immer so reduziert wie möglich und "vereinfache" das R&I Schema soweit es geht, und teile es in Teilanlagen mit zusammengehöriger Funktion pro Bild auf. Damit kommen die Bediener seit Jahrzehnten super klar und ich hab noch nie den Wunsch nach EINEM Weltbild vom Bediener/Anlagenfahrer gehört.
Dagegen von Theoretikern aus dem Büro kommt auch schonmal der Wunsch nach echter 3D-Visualisierung, d.h. generiert aus dem 3D-Rohrnetzplan kann der Typ im HMI wie im Videospiel virtuell durch die Anlage zu seinem Sensor "laufen" 🤮 völligst irrsinnig für die Bedienung der Anlage, aber der Typ hats echt ernst gemeint mit diesem Wunsch...
 
Zuletzt bearbeitet:
Servus,
Panel oder PC-Runtime? Welcher Update-Stand und welche Image-Version ist auf dem Panel geladen?
alles V20 und neueste Versionen /Image.

Kollegen haben sowas mal für einen Kunden gemacht, aber nicht mit Siemens.
Ich finds für den Bediener und die Übersicht grausig.
Wenn man halbwegs damit arbeiten können will, ist der Engineeringaufwand sogar höher. Du brauchst je nach "Zoomstufe" ein anderes "Bild" mit höherem/kleinerem Detailgrad.
Wenn Du sozusagen das komplette HMI einer Anlage (oder sogar den ganzen Standort mit 100000 Feldgeräten) in ein einziges Bild zeichnen würdest und dann das Gesamtbild auf einem Monitor darstellen willst, kannst garnichts erkennen.
Ausserdem leidet die Performance extrem, da immer "die ganze Welt" dargestellt/geladen wird.

Der Kunde von uns damals war noch schlimmer, der wollte aus seiner weltweiten Standortansicht über die einzelnen Anlagen bis zum Sensor nahtlos "durchzoomen" können... und das ganze nicht nur im Leitsystem sondern dann auch auf jedem HMI an der einzelnen Anlage. Da ja die HMI eh im Netz hängen 🤮 Einfach völlig grausig.

Mal von Sicherheitsthemen/Benutzerrechten ganz abgesehn. Da ist auch mal schnell in die falsche aber ähnliche Anlage gezoomt...

Ich kenn mich jetzt mit Fördertechnik nicht aus, aber für verfahrenstechnische Anlagen zeiche ich das HMI immer so reduziert wie möglich und "vereinfache" das R&I Schema soweit es geht, und teile es in Teilanlagen mit zusammengehöriger Funktion pro Bild auf. Damit kommen die Bediener seit Jahrzehnten super klar und ich hab noch nie den Wunsch nach EINEM Weltbild vom Bediener/Anlagenfahrer gehört.
Dagegen von Theoretikern aus dem Büro kommt auch schonmal der Wunsch nach echter 3D-Visualisierung, d.h. generiert aus dem 3D-Rohrnetzplan kann der Typ im HMI wie im Videospiel virtuell durch die Anlage zu seinem Sensor "laufen" 🤮 völligst irrsinnig für die Bedienung der Anlage, aber der Typ hats echt ernst gemeint mit diesem Wunsch...

Ziel wäre es gewesen ein 2D-Übersichtsbild einer Fördertechnik zu nehmen und dort dann per Schaltfläche auf einzelne Bereiche zu "zoomen".

Habe mir schon fast gedacht das der Aufwand noch höher/umständlicher ist :ROFLMAO:

Man muss aber hierfür mit so hohen Auflösungen arbeiten um die Details hinzukriegen das alleine das Aufrufen des Bildes am Panel schon gefühlte 20s dauert. Mit der Hand zoomen ist dann die absolute Katastrophe.

Frage mich wofür diese Funktion dann überhaupt drin ist wenn Sie im normalen Betrieb nur stört und dann rausprogrammiert wird.
 
Hallo,

ein 2D-Übersichtsbild einer Fördertechnik zu nehmen und dort dann per Schaltfläche auf einzelne Bereiche zu "zoomen"
Wieso dann nicht einfach ein Übersichtsbild (als Startbild) und dann mit einer klassischen Button-Navigation (per Fußleiste oder Header) die detaillierten Bereiche aufschalten, welche extra Bilder sind?

Ist doch viel einfacher um zu setzen ohne sich mit Zoomstufen und Performance rum zu ärgern.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,


Wieso dann nicht einfach ein Übersichtsbild (als Startbild) und dann mit einer klassischen Button-Navigation (per Fußleiste oder Header) die detaillierten Bereiche aufschalten, welche extra Bilder sind?

Ist doch viel einfacher um zu setzen ohne sich mit Zoomstufen und Performance rum zu ärgern.

Hallo,

so machen wir es ja im Moment. Es kam nur die Überlegung auf sich den Mehraufwand von extra Bildern (Konstruktion/Programmierer) zu sparen und alles über ein Bild zu realisieren.
 
Der "Wunsch" nach diesen zoombaren Weltbildern kommt halt von theoretischen Marketingfuzzis die nur Google Maps oder Google Earth kennen...

Das nächste Problem dabei ist die Kommunikationslast zur SPS, normalerweise werden ja nur Variablen aktualisiert, die im aktuell geöffneten Bild vorhanden sind. Bei nem Monster Weltbild wird immer alles aus der SPS zyklisch gelesen...
Nächster Punkt Schriftgrössen, die müssen irgendwie variabel sein bzw. Texte je nach Zoomstufe ein/ausgeblendet werden.

Das ganze ist einfach nur Käse. Aber manch einer will das halt nicht hören oder nicht wahr haben...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Meiner Meinung nach ist das stärkste Argument dagegen:
Da immer alles im Bild vorhanden ist und angezeigt wird, müßtest Du dauerhaft alle Variablen aktualisieren.
Oder Du mußt einen ganz schlauen Algorithmus schreiben, der genau erkennt, welche Variablen sich im Viewport befinden und nur diese aktualisieren. Auch brauche ich Variablen nicht zu aktualisieren, deren Element nicht oder nur einige Pixel groß dargestellt ist, weil der Zoom zu klein ist.
Bei Siemens mag das auch (lizenztechnisch) noch funktionieren, aber auch technisch wirst Du hier an Grenzen kommen, denn es wird sicherlich eine Maximalzahl an Variablen pro Bild geben.
Bei anderen Visualisierungen, wo nach "gleichzeitig angezeigten Tags" lizensiert wird, blähst Du schnell unnötig die Lizenzkosten auf.
Da muß schon die Visualisierungssoftware an sich drauf ausgelegt sein, daß der Algorithmus, welche Variablen gerade aktualisiert werden müssen, bereits implementiert ist.
 
Mir fallen da hundert Argumente ein, warum das Käse ist. Auf ein Hauptargument kann ich mich garnicht festlegen.
Wenn Du nur ein Bild hast, können auch nicht mal eben 2 Leute parallel Bilder zeichnen...

Dann brauchst irgendwie ne Multiuserserverengineeringumgebung, die damit gut klarkommt...

Da lob ich mir WinCC7 wo jedes Bild ne einzelne Datei im Projekt ist, die ich auch mal per Mail jemandem schicken kann...
 
aber auch technisch wirst Du hier an Grenzen kommen, denn es wird sicherlich eine Maximalzahl an Variablen pro Bild geben.
Nicht nur die Anzahl der Variablen pro Bild sind begrenzt.
Auch ( bei Adv. / Unified ):
-Anzahl der Objekte pro Bild ( dazu gehört auch z.B. eine einfache Linie )
-Anzahl komplexer Objekte
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich gebe euch Recht. Manchmal hat man halt seine Vorgaben an die man sich halten muss. Der Vater des Gedanken hört sich ja immer schön an die Anlage wie ein IPhone 15 zu bedienen aber in der Praxis ist das halt immer eine andere Geschichte.

Vielen Dank für eure Meinungen und das Einschätzen der Machbarkeit.
 
Screen.Items("Bildfenster").CurrentZoomFactor = 1.5; // zooms 50%

Screen.Items("Bildfenster").VerticalScrollbarPosition = 300;

Screen.Items("Bildfenster").HorizontalScrollbarPosition = 300;

// Scrolls to 300x300 pixels from top left in the screenwindow

haben keine Wirkung bzw. geben mir einen Fehler zurück. (sowohl mit Systembefehlen als auch mit Skript)
Das sollte eigentlich funktionieren...
Ist die Property InteractiveZooming des Biuldfensters auf TRUE gesetzt?
Welchen Fehler bekommst du genau?

hat jemand von euch schon ein sogenanntes Weltbild programmiert in dem man auf bestimme Bereiche zoomen kann?
Nur mal testweise, wurde aufgrund des Projektierungs-Aufwands für brauchbares decluttering/responsive Desing & schwieriger Performance bei so vielen gleichzeitig sichtbaren Bildobjekten als "nett, aber zu wenig Mehrwert" bei uns nicht produktiv umgesetzt.
Speziell die Performance ist sehr schnell ein Kill-Kriterium für zuviele Objekte gleichzeitig auf einem Bild.

Wir haben uns, wie hier im Tread mehrfach Erwähnt, ebenfalls für eine klassische Bildstruktur entschieden.
Im großen Übersichtsbild gibt es dann kleinere Icons/Faceplates, die dann auf das betreffende Detailbild im Menü springen oder ein Faceplate-Popup mit mehr Details öffnen.
 
@Botimperator :

session: 0002, trace: FUNCTION_CALL Invoke failed(id=4, function='Screen->Items', error=0x8000001c)



| Screen.Items("//swContent").CurrentZoomFactor = 1.5; // zooms 50%

session: 0002, trace: Engine ExecuteScript Result is empty and error is

TypeError: Cannot set properties of undefined (setting 'CurrentZoomFactor')

session: 0002, trace: Executing command failed (ResultCode: 0x802010cc Error: Description: (File: D:\agent\_work\6\s\source\CCScriptComp\ScriptCommands.h, Func: CCScriptFW::CGenericCommand<struct CCScriptFW::ExecuteCommandData>::Execute))

//

Problem ist auch wenn ich zoome und ein PopUp öffne ist es standardmäßig oben links und wenn ich weit reinzoome sieht man dieses teilweise garnicht.
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
TypeError: Cannot set properties of undefined (setting 'CurrentZoomFactor')
Das heißt die Property oder das zugehörige ScreenItem existieren nicht bzw. werden nicht gefunden.
| Screen.Items("//swContent").CurrentZoomFactor = 1.5; // zooms 50%
Der Pfad ist ungültig.
Siehe https://support.industry.siemens.com/cs/document/109758536/ Kapitel 5.4 für Infos wie dieser anzugeben ist.

Problem ist auch wenn ich zoome und ein PopUp öffne ist es standardmäßig oben links und wenn ich weit reinzoome sieht man dieses teilweise garnicht.
Die Popup-Position musst du natürlich angeben, Startwert ist 0/0 => also oben links.
Wo/Wie willst du es denn haben?
 
Ich habe alle Punkt Punkt Komma Strich Varianten ausprobiert ohne Erfolg. Zoom erlauben ist aktiv.

Das Popup soll schon oben links bleiben aber wenn ich zoome per Geste dann sollte auch in dem Bereich das Popup aufgehen sodass ich es während dem Zoom bedienen kann. Das händisch anzupassen bei X Bildbausteinen ist meiner Meinung nach nicht zielführend zumal sich bei Auflösungsänderung des Panels ja wieder alles verschiebt.
 
Ich habe alle Punkt Punkt Komma Strich Varianten ausprobiert ohne Erfolg. Zoom erlauben ist aktiv.
Könnte daran liegen, dass "Screen.Items()" ein Objekt erwartet, keinen Pfad.
Drück nach der ersten Klammer "strg+J", dann poppt die Objektauswahl auf (Funktioniert übrigens auch mit HMI-Variablen usw).
1747133745521.png
Eine gültige Referenz würd durch eine Grüne Markierung dargestellt:
1747134238877.png

Aufruf über einen Pfad, so wie du es versuchst, würde über "Screen.FindItem()" funktionieren.
Und dann wäre "Screen.FindItem(./swContent)" korrekt.
"//" referenziert den Root-Screen, indem du dich anscheinend nicht befindest.
Über die Path-Property des ScreenWindows bekommst du den aktuellen Absolutpfad, falls du dir mal unsicher sein solltest wo du grade steckst.

Das Popup soll schon oben links bleiben aber wenn ich zoome per Geste dann sollte auch in dem Bereich das Popup aufgehen sodass ich es während dem Zoom bedienen kann. Das händisch anzupassen bei X Bildbausteinen ist meiner Meinung nach nicht zielführend zumal sich bei Auflösungsänderung des Panels ja wieder alles verschiebt.
Wenn du die Position der Popups entsprechend des Zoom-Faktors nachführen willst, kannst du die Position der offenen Popups ändern indem du ein entsprechendes Script schreibst & dieses per Change-Event der beiden ScrollBarPosition-Properties triggerst.

1747133949664.png
Falls benötigt:
die tatsächliche Ist-Auflösung des Clients bekommst du über "UI.GetClientInfo()".
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Könnte daran liegen, dass "Screen.Items()" ein Objekt erwartet, keinen Pfad.
Drück nach der ersten Klammer "strg+J", dann poppt die Objektauswahl auf (Funktioniert übrigens auch mit HMI-Variablen usw).
Anhang anzeigen 87465
Eine gültige Referenz würd durch eine Grüne Markierung dargestellt:
Anhang anzeigen 87467

Danke für den Tip!

Aufruf über einen Pfad, so wie du es versuchst, würde über "Screen.FindItem()" funktionieren.
Und dann wäre "Screen.FindItem(./swContent)" korrekt.
"//" referenziert den Root-Screen, indem du dich anscheinend nicht befindest.
Über die Path-Property des ScreenWindows bekommst du den aktuellen Absolutpfad, falls du dir mal unsicher sein solltest wo du grade steckst.

Das Bildfenster swContent ist das Bildfenster im ScreenLayout welcher der Root-Screen ist.

Ich habe jegliche Konstellation ausprobiert es funktioniert so bei meinem Projekt(en) nicht.

Wo sehe ich die Path-Property?

Danke vorab!
 
Das Bildfenster swContent ist das Bildfenster im ScreenLayout welcher der Root-Screen ist.
Der RootScreen ist das Bild welches du mit ScreenManagement als MainScreenWindow anlegst.
1747137275884.png
Das darin liegende ScreenWindow ist schonwieder die nächste Ebene.

Wo sehe ich die Path-Property?
Das ist eine ReadOnly-Property, die wird nicht im Eigenschafteneditor angezeigt.
Solche Eigenschaften findest du in der F1-Hilfe des jeweiligen Objekts & kannst per Script darauf zugreifen.
Du könntest beispielsweise an das Aufgebaut-Ereignis des Bildes, welches im betreffenden Bildfenster geladen wird, folgendes Script eingeben:
1747137657304.png
Zugriff wäre beispielsweise auch per "Screen.Finditem().Path" oder "Screen.Items().Path" möglich, je nach Perspektive des Aufrufs.
 
Zurück
Oben