WinCC Unified Faceplate-Popup Größe zur Laufzeit ändern

Januar

Level-2
Beiträge
238
Reaktionspunkte
52
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Gemeinde,

ich möchte die Größe eines Faceplates zur Laufzeit ändern. Über ein Icon-Faceplate wird per Button ein zweites Faceplate aufgerufen, das zusätzliche Informationen zum ersten Faceplate enthält (Popups zu Messstellen, Bedienfunktionen für Aktoren, etc.). Jetzt ist das Ziel, hier noch eine Trendanzeige zu integrieren. Dafür soll über einen Button die Größe des Popups geändert werden, also ein "Aufklappen". Bei Bedarf soll das Fenster dann auch wieder verkleinert werden können.

Ich scheitere aktuell aber daran, die Werte an das Faceplate zu übergeben. Gearbeitet wird mit V18.

Edit: Ich habe bereits versucht, einen Button zu erstellen, der sämtliche Faceplates im Bild um 100 Pixel in beide Richtungen vergrößert.

Javascript:
export function Btn_Enlarge_All_OnTapped(item, x, y, modifiers, trigger) {
let ui = UI;
let count = ui.PopupScreenWindows.Count;


  for (let i = 0; i < count; i++) {
    ui.PopupScreenWindows(i).Width = ui.PopupScreenWindows(i).Width + 100;
    ui.PopupScreenWindows(i).Height = ui.PopupScreenWindows(i).Heigth + 100;
  }
}

Bei Betätigung zeigt sich an EINEM von vielen offenen Popup-Faceplates kurzzeitig ein zweiter Rand, der in der Horizontalen etwa die neue Größe haben sollte, aber der Rand verschwindet dann sofort wieder. Merkwürdigerweise ist es immer das Faceplate-Popup, das zuerst geöffnet wurde.

Gruß, Januar
 
Zuletzt bearbeitet:
Damit hier auch ein Haken drunter kann:
Es war eine Kombination aus einem Layer-8-Fehler und der fehlenden/fehlerhaften Syntax-Prüfung von TIA.

Zum einen fehlte dem Script noch die Info, wie die das Popup auf eine angepasste Größe reagieren soll ("ui.PopupScreenWindows(i).Adaption = 0").
Außerdem war bei der Zuweisung der Höhe ein Tippfehler ("Heigth" statt "Height"). Das fällt aber einem betriebsblinden Programmierer nicht auf und die Syntax-Prüfung des Scripts und die Übersetzung hat natürlich auch nicht darauf hingewiesen, dass da was falsch ist. Erst der HMITrace hat darauf hingewiesen, dass die Eigenschaft "Heigth" nicht zu finden sei...

JS-Code für einen Button, der bei Betätigung alle offenen Popups um 100 Pixel in beide Dimensionen vergrößert.
Code:
export function Btn_Enlarge_All_OnTapped(item, x, y, modifiers, trigger) {
let ui = UI;
let count = ui.PopupScreenWindows.Count;


  for (let i = 0; i < count; i++) {
      ui.PopupScreenWindows(i).Adaption = 0;
    ui.PopupScreenWindows(i).Width = ui.PopupScreenWindows(i).Width + 100;
    ui.PopupScreenWindows(i).Height = ui.PopupScreenWindows(i).Height + 100;
  }
}

Vielleicht hilft es wem :)
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo
Ich würde gerne die Größe des Faceplate Popups zur Laufzeit ändern. Aber das klappt leider nicht. (ähnlich aber nicht wie Januar)
Situation:
Faceplate Motor Symbol. Beim anklicken soll sich des Motor Symbols soll dich ein Faceplate zur Bedienung des Motors öffnen.
Abhängig vom typ (int ein int in PLC UDT Motor) ist es ein Motor mit FU oder ohne. Entsprechen sollte das Faceplate grösser oder kleiner sein um auch die Bedienung der Sollfrequenz zu erlauben.
Einfach nur ausblenden sieht halt etwas komisch aus.

Hab versucht mit Größe Dynamisieren, oder beim Aufruf vom Faceplate die Größe zu übergeben, sowie über die Eigenschaftenschnittstelle, oder beim Ereignis Aufgebaut die Größe per Faceplate.Parent.Width zu setzen.

In der Simulation schein es ein kurzes Auftauchen der gewünschten Größe (aufblitzen) zu geben aber dann erscheint es doch wieder in der projektierten Größe.

Hat da wer eine Lösung?

TIA V19.
 
Ich hatte genau die gleiche Herausforderung. Ich habe es umgangen, indem ich die Faceplates mit einer Eigenschaftsschnittstelle (Bool) ausgestattet habe. Bei Klick auf das Faceplate wird per JS dann ein Popup geöffnet. Abhängig von der Eigenschaft wird entweder ein einfaches Popup geöffnet, das nur die Bedienung EIN/AUS ermöglicht, oder ein komplexeres mit Eingabe einer Sollfrequenz.

Hat natürlich den Nachteil, dass du zwei Popup-Faceplates pflegen musst, aber ich fand das im Endergebnis für die Bedienung und auch die Projektierung angenehmer.
 
Hallo,
ich habe aktuell eine Trendanzeige im Bild und eine Trendanzeige in einem Popup (Popup wird über ein Faceplate aufgerufen).
Beide Trendanzeigen sind identisch konfiguriert und benutzen die selbe Variable als Datenquelle.

Nun simuliere ich mit einem EA-Feld verschiedene Werte für die Trendanzeigen.
Hierbei funktioniert die Trendanzeige im Bild ohne Probleme.
Aber die Trendanzeige im Popup zeigt nur einen einzigen Wert, wenn der Wert vor dem öffnen des Popups existiert. Ist das Popup geöffnet und ich simuliere weitere Werte, dann werden scheinbar keine weiteren Werte auf die Popup Trendanzeige geschrieben...


Wie hast du deine Trendanzeige im Popup realisiert?
Jetzt ist das Ziel, hier noch eine Trendanzeige zu integrieren.
Vielen Dank.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Weil ich auf das gleiche Problem gestoßen bin, zusätzlich zu der umständlichen Größenanpassung, habe ich die Idee verworfen. Meine Trendanzeigen sind jetzt in global erreichbaren Bildern, nicht in Popups.
 
Zurück
Oben