WinCC Unified Tipps&Tricks

Aus wiki.vistera.de
Version vom 8. Dezember 2025, 09:38 Uhr von Simon (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Einleitung[Bearbeiten]

Auf dieser Seite werden diverse Funktionen und Kniffe aufgeführt, die in WinCC Unified nicht so einfach ohne Hilfe zu finden und umzusetzen sind.

Runtime[Bearbeiten]

Zoom[Bearbeiten]

In Unified ist es jetzt möglich, in der Runtime zu zoomen. Dies bringt einige praktische Möglichkeiten mit sich, die nachfolgend aufgelistet werden. Bitte vorher auf den HINWEIS achten!

Zoomstufen[Bearbeiten]

Es gibt jetzt auch Zoomstufen. Jede Ebene im Reiter Layout, auch auffindbar unter den Eigenschaften des Bildes, hat einen eigenen definierbaren Zoombereich, in dem die Objekte der Ebene eingeblendet werden. Verknüpft man das Ganze mit entsprechenden Schaltflächen, können auf Knopfdruck gewünschte Zoomstufen aktiviert werden. Hierbei können dann auch Elemente in entsprechenden Ebenen bei bestimmten Zoomstufen erst eingeblendet werden.

Hier ein Beispiel für Buttons zur Stufenwahl:

  1. Schaltfläche anlegen
  2. Interne HMI-Variable "Zoomfaktor" mit Datentyp REAL anlegen
  3. Bei der Schaltfläche unter "Ereignisse" bei "Drücken" die Funktion "SetzeVariablenWert" auswählen
  4. Die Variable "Zoomfaktor" verknüpfen
  5. Als Wert hier für jede weitere Zoomstufen-Schaltfläche einen anderen Wert (aufsteigend) eingeben, z.B. 1.Stufe=0, 2.Stufe=1, 3.Stufe=2...
  6. Bei zu zoomendem Faceplate oder Bildfenster unter Eigenschaften->Format->Zoom-Faktor unter Dynamisierung die Variable "Zoomfaktor" verknüpfen
  7. Darunter die Option "Bereich" auswählen und die Stufennummern (0, 1, 2,...) angeben und für jede Nummer einen Zoom-Faktor zwischen 0,1 und 8 eintragen (10%...800% Zoom)

Zoomen mit +/-[Bearbeiten]

Das Zoomen kann auch im klassischen Stil mit drei Schaltflächen gelöst werden: "1:1", "+" und "-". Hierbei kann der Projektierer selber entscheiden, in welchen Schritten gezoomt wird (z.B. 1mal "+" drücken -> Zoom+10%).

Generell:

  1. Interne HMI-Variable "Zoomfaktor" mit Datentyp REAL anlegen
  2. Bei der internen Variable in der Tabelle unter Eigenschaften->Werte->Startwert den Startwert 1 (entspricht 100% Zoom) eingeben


Schaltfläche "1:1" für Rücksetzen auf 100% Zoom:

  1. Schaltfläche anlegen
  2. Als Text "1:1" eingeben
  3. Bei der Schaltfläche unter "Ereignisse" bei "Drücken" die Funktion "SetzeVariablenWert" auswählen
  4. Die Variable "Zoomfaktor" verknüpfen
  5. Den Wert "1" für Faktor x1,0, sprich Zoom 100% eingeben


Schaltfläche "+" für Reinzoomen:

  1. Schaltfläche anlegen
  2. Als Text "+" eingeben oder passende Grafik (z.B. Lupe mit Plus) auswählen
  3. Unter Security->Bedienung-zulassen->Haken entfernen und die Variable "Zoomfaktor" verknüpfen
  4. Unter der Variable den Reiter "Formel" öffnen und folgende Formel eingeben: IF ('Zoomfaktor'<=[dein_max_faktor_MINUS_[1x_deine_schrittweite]]) (TRUE); ELSE (FALSE);
  5. Beispiel: Maximaler Zoom = 800%, Schrittweite = 10% ENTSPRICHT "IF ('Zoomfaktor'<=7.9) (TRUE); ELSE (FALSE);"
  6. Bei der Schaltfläche unter "Ereignisse" bei "Drücken" die Funktion "ErhöheVariable" auswählen
  7. Die Variable "Zoomfaktor" verknüpfen
  8. Den Wert "0,1" für Schrittweite Faktor x1,0, sprich Zoom+10% eingeben


Schaltfläche "-" für Rauszoomen:

  1. Schaltfläche anlegen
  2. Als Text "-" eingeben oder passende Grafik (z.B. Lupe mit Minus) auswählen
  3. Unter Security->Bedienung-zulassen->Haken entfernen und die Variable "Zoomfaktor" verknüpfen
  4. Unter der Variable den Reiter "Formel" öffnen und folgende Formel eingeben: IF ('Zoomfaktor'>=[dein_min_faktor_PLUS_[1x_deine_schrittweite]]) (TRUE); ELSE (FALSE);
  5. Beispiel: Minimaler Zoom = 10%, Schrittweite = 10% ENTSPRICHT "IF ('Zoomfaktor'>=0.2) (TRUE); ELSE (FALSE);"
  6. Bei der Schaltfläche unter "Ereignisse" bei "Drücken" die Funktion "VerringereVariable" auswählen
  7. Die Variable "Zoomfaktor" verknüpfen
  8. Den Wert "0,1" für Schrittweite Faktor x1,0, sprich Zoom-10% eingeben

! HINWEIS ![Bearbeiten]

In WinCC Unified ist minimal ein Zoom von 10% und maximal ein Zoom von 800% möglich!

Bildwechsel[Bearbeiten]

Um in WinCC ein Bild zu ändern, wird in Unified die Funktion "WechsleBild" verwendet. Der Umgang mit dieser Funktion ist aber nicht gerade selbsterklärend.

Unter der Funktion kann man zwei Punkte auswählen/eingeben: Bildname und Pfad Bildfenster. Beim Bildnamen kann einfach über die Auswahlliste das Bild ausgewählt werden, auf das gewechselt werden soll. Über Pfad Bildfenster wird auf das Bildfenster verwiesen, in dem auf das definierte Bild gewechselt werden soll. Die Optionen in der Auswahlliste beziehen sich aber nur auf einen Gesamtbildwechsel des Bildes, was in unserem Fall eher unbrauchbar ist.

Um jetzt also gezielt auf ein bestimmtes Bildfenster zugreifen zu können, kann man ganz rechts im Feld "Wert" die Eingabemethode ändern. Wenn man jetzt die Methode auf String stellt, kann man aus einer Kombination von . und / und Name_Bildfenster zuverlässig auf ein Bildfenster, direkt oder auch über mehrere Bilder hinweg, zugreifen.
1.Beispiel: ./Bildfenster_1 greift auf das Bildfenster mit dem Namen "Bildfenster_1" im selben Bild zu.
2.Beispiel: ../Bildfenster_1 greift auf das Bildfenster mit dem Namen "Bildfenster_1" auf einem anderen Bild zu.

Buttons[Bearbeiten]

Farbe Bildanwahl[Bearbeiten]

Es gehört zu unserem Standard, dass die Buttons zur Bildanwahl grün werden, wenn das entsprechende Bild geöffnet ist. Die hier genannte Methode ist weniger aufwendig und ermöglicht einen Farbumschlag ohne Verwendung der in den altem HMIs verwendeten Variable Bildnummer. Hierzu muss man folgendes Skript an die Eigenschaft "Vordergrund - Farbe" der entsprechenden Schaltfläche hängen:

Bei nur einem Bild:

 var value;
 let title = Tags("Überschrift").Read();
 
 if (title == "your_screen_title") {
 value = HMIRuntime.Math.RGB(0,255,0);
 } else {
 value = HMIRuntime.Math.RGB(0,255,255);
 }
 
 return value;
 }

Bei mehreren Bildern:

 ...
 if (title == "your_screen_title_1" || title == "your_screen_title_2" || ...) {
 ...

Die Angabe "||" steht hier für ODER.

EA-Felder[Bearbeiten]

Datum/Uhrzeit richtig anzeigen[Bearbeiten]

Die standartmäßigen Formate, die man in EA-Felder in Unified auswählen kann, entsprechen leider alle nicht wirklich unserem Anzeigestandard. So wird z.B. "1.12.25" anstatt "01.12.25" angezeigt. Um das Datum und die Uhrzeit entsprechend richtig anzuzeigen, gibt es hier folgendes Skript (anwendbar für EA-Felder und für Textfelder an entsprechender Eigenschaft):

 var value;
 let myDate = new Date();
 
 let optionsTime = {
 hour: "2-digit",
 minute: "2-digit",
 second: "2-digit",
 timeZone: 'Europe/Berlin'
 };
 
 let optionsDate = {
 day: "2-digit",
 month: "2-digit",
 year: "2-digit",
 timeZone: 'Europe/Berlin'
 };
 
 value = myDate.toLocaleDateString('de-DE', optionsDate) + "  " + myDate.toLocaleTimeString('de-DE', optionsTime);
 
 return value;
 }

Daraus ergibt sich dann folgendes Anzeigeformat: "01.12.25 13:59:59"

Werteübernahme bei Enter drücken[Bearbeiten]

Die EA-Felder in Unified sind standardmäßig so eingestellt, dass der eingegebene Wert sofort beim heraustippen aus dem Feld, also ohne Bestätigung durch Eingabe, übernommen wird. Damit der Wert erst bei Bestätigung durch Enter übernommen wird, muss folgende Einstellung pro EA-Feld vorgenommen werden:
Verschiedenes->Verhalten bei Eingabe->Nach Verlassen Wert übernehmen->Haken entfernen

Meldungen[Bearbeiten]

Zugriff auf mehrere Meldeklassen[Bearbeiten]

In Kombination mit Meldefenstern ist es manchmal nötig, mit einem Befehl über eine Schaltfläche mehrere Meldeklassen im Filter gleichzeitig auszuwählen. Dies kann am besten über ein Skript beim Ereignis Drücken erfolgen. Hier ein Beispiel mit Betriebsmeldung+Handmeldung:

 HMIRuntime.UI.SysFct.SetPropertyValue("Meldeanzeige_1", "Filter", "AlarmClassName IN ('Betriebsmeldung_SPS','Hand_SPS')");

Über weitere Kommas in den Klammern von "AlarmClassName IN" können beliebig viele Meldeklassen für den Filter des Meldefensters definiert werden.