WinCC Unified DynamicSVG - BasicColor mit Skript ändern

Zonder

Level-2
Beiträge
63
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Tut mir Leid wenn ich so blöd frage, aber:
Wie kann ich die Farbe eines SVG Objekts mittels Skript ändern?
Ich habe leider kein Beispiel weder in der Hilfe noch in irgendeinem Beispielprojekt dazu gefunden.

Mein anliegen:
Ich habe aus den Dynamischen Widgets einen Motor in das Bild gezogen.
- wenn der Motor angesteuert ist, soll der Motor "grün" leuchten
- wenn der Motorschutschalter auslöst, soll der Motor "rot" leuchten

Dazu wollte ich die Eigenschaft "Verschiedenes.Schnittstelle.BasicColor" ändern.
Leider kann man bei WinCC Unified nicht wie beim "großen WinCC V7.xx" einfach mehrere Variablen mit Trennzeichen | verodern.
Oder? Ich glaube das kann man nur mit einem Skript (oder in der SPS) lösen.


Mein Code funktioniert so leider nicht:

export function DynSVG_SK0302_SCH_Properties_BasicColor_Trigger(item) {
var value;
var gruen = Tags("iTestBool_1").Read();
var rot = Tags("iTestBool_2").Read();

if (gruen = TRUE) {value = 0x00FF0000;} //0xRRGGBB%%
if (rot = TRUE) {value = 0xFF000000;} //0xRRGGBB%%

return value;
}
 
Zuletzt bearbeitet:
Bei einem externen Skript das nicht am HMI SVG ist sonder an z.B einem Button sollte es so gehen:
Code:
    if(Tags("iTestBool_1").Read()){
      Screen.FindItem('DynamicSVG_1').Properties.BasicColor = 0x00FF0000;
    }
    else if (Tags("iTestBool_2").Read()){
      Screen.FindItem('DynamicSVG_1').Properties.BasicColor = 0xFF000000;
    }

Und wenn du die BasicColor direkt Dynamisierst mit einem Skript sollte es so gehen
Code:
    var value;

    let gruen = Tags("iTestBool_1").Read();
    let rot = Tags("iTestBool_2").Read();
    if(gruen){
      value = HMIRuntime.Math.RGB(0,255,0);
    }
    else if(rot){
      value = HMIRuntime.Math.RGB(255,0,0);
    }
    return value;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke!

Vielleicht noch ein Tipp für Einsteiger:
Es hat zwar auch nicht gleich geklappt, es kam bei mir immer folgende Fehlermeldung:
Die projektierte Variable ist ungültig.

Diese Meldung kommt auch wenn man nur die Dynamisierung "Skript" auswählt und im Skript selbst noch gar nichts ändert.
Das liegt daran, dass man den Trigger noch auswählen muss (Wäckersymbol).
Den Trigger habe ich einfach auf 1s eingestellt und schon hat alles funktioniert.
 
Nur noch als kleine Info.
Wenn es geht würde ich zyklische skripte soweit wie möglich vermeiden und wenn es geht Triggerbits nutzen.
Die Performance leidet doch merkbar. ( Bei kleinen Skripten und in maßen natürlich noch nicht)
 
Es funktioniert auch ohne Script. Dazu musst du für die DynamicSVG in der Schnittstelle auf Variable gehen und eine DWord-Variable auswählen. Ausgabeformat = Hexa.
Anschließend kann dann z.B. über ein EA-Feld im Hexadezimal mit dem Format "aaRRGGBB" die Farbe ausgewählt werden.
Damit es evtl. für einen Kunden einfacher ist, habe ich eine Farbpalette mit unterschiedlichen Standardfarben erstellt und mit der Variable für z.B. einen Antrieb verknüpft. Die Hinterlegung der Farbe kann auch ohne Script gemacht werden. Dazu kann eine Schaltfläche erstellt und unter Ereignisse->...-> "SetzeVariablenWert" eine entsprechende Farbe, oder eben auch Variable die z.B. aus der SPS gelesen wird, hinterlegt werden.

aa = Deckkraft => FF=100%
RR = rot
GG = grün
BB = blau

Getestet habe ich es mit TIA V18. Ob es mit den vorherigen Versionen auch funktioniert kann ich erstmal nicht sagen.
 

Anhänge

  • 1673607037871.png
    1673607037871.png
    34,8 KB · Aufrufe: 33
  • 1673607389268.png
    1673607389268.png
    5,8 KB · Aufrufe: 31
  • 1673607512279.png
    1673607512279.png
    19,8 KB · Aufrufe: 30
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Dazu wollte ich die Eigenschaft "Verschiedenes.Schnittstelle.BasicColor" ändern.
Leider kann man bei WinCC Unified nicht wie beim "großen WinCC V7.xx" einfach mehrere Variablen mit Trennzeichen | verodern.

Das kannte ich noch gar nicht und hätte es schon öfter mal gebraucht. Gibt es auch ein Zeichen für "UND Verknüpfung"?
 
Das kannte ich noch gar nicht und hätte es schon öfter mal gebraucht. Gibt es auch ein Zeichen für "UND Verknüpfung"?
Wie gesagt, das bezieht sich auf das WinCC V7.

Da kannst du natürlich auch ein und mit '&' einfügen.
siehe Beispiel im Bild.
 

Anhänge

  • WinCC_V7_UndOder_inEigenschaftsdialog.png
    WinCC_V7_UndOder_inEigenschaftsdialog.png
    49,4 KB · Aufrufe: 21
Zurück
Oben