WinCC Unified Eigenschaft an Bildelement in einem Faceplate dynamisieren V20 Upd.1

Onkel Dagobert

Level-3
Beiträge
6.204
Reaktionspunkte
1.710
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich habe in letzter Zeit unter TIA V20 und V20 Update 1 einiges zur Einarbeitung probiert. An einer Stelle, die eigentlich einfach erscheint, komme ich seit geraumer Zeit nicht weiter. Auch zusammen mit ChatGPT habe ich es nicht hin bekommen. Allerdings bekam ich von ihr erstaunlich viele gute Ratschläge. Ich soll ihr übrigens später berichten, ob ich hier im SPS-Forum Hilfe bekommen konnte.

Und zwar möchte ich in einem Faceplate die Hintergrundfarbe einer Schaltfläche durch ein Skript dynamisieren. Letzten Endes soll ein stetiger Farbwechsel, abhängig von einem Realwert, erfolgen. Aber selbst eine einfache statische Wertvorgabe klappt schon nicht. Es sieht so aus, als würde das Skript gar nicht ausgeführt. Zum Triggern habe ich es mit dem zur Auswahl stehenden Takt von 1s versucht, wie auch mit einem Bit, welches über eine Schaltfläche gesetzt werden kann. Das Skript, um testweise einen statischen Wert zu setzen, sollte eigentlich recht einfach sein. JavaSkript ist für mich allerdings Neuland.

Code:
export function Taste_als_Anzeigefeld_BackColor_Trigger(item) {
return "#00FF00"; // Sollte die Schaltfläche grün machen
}

Über "AUSDRÜCKE" funktiert die Dynamisierung. Nur bekomme ich es dort nur unstetig bzw. stufig hin. Zudem ist es auch sehr mühselig zu editieren, wenn man viele Farben haben will.

Warum funktioniert das mit dem Skript nicht?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Gibts von Siemens nicht irgendwo ein schönes und ordentliches Demoprojekt, wo man abschaun kann, wie die so Dinge machen?

Bei WinCC7 ists ja so, wenn man ne Dynamisierung im DynamicDialog anlegt, kann man das zu dem eh im Hintergrund laufenden C-Script anzeigen lassen und erhält schönen Vorlagecode. Scheint bei Unified keine Lösung zu sein?

Gibts kein ordentliches Handbuch zu Scripten in Unified?

🤔
 
Es gibt schon Handbücher in denen auch beschrieben ist, wie man so etwas macht, nur funktioniert es bei mir nicht. Ich weiß nicht, was ich falsch mache. Vielleicht muss man irgend wo erst ein Häkchen setzen? Ein konkretes Code-Beispiel habe ich bis jetzt noch nicht gefunden.
 
Bei WinCC7 ists ja so, wenn man ne Dynamisierung im DynamicDialog anlegt, kann man das zu dem eh im Hintergrund laufenden C-Script anzeigen lassen und erhält schönen Vorlagecode. Scheint bei Unified keine Lösung zu sein?
Laangweilig 🥳
Gibts kein ordentliches Handbuch zu Scripten in Unified?
Es gibt mehrere Handbuch-Schnipsel.
Ein Gesamtwerk wie man alles aus Confort gewohnte in Unified umsetzen kann? Laangweilig 🥳
An ein Handbuch kommt dies hier noch am ehesten ran:
https://support.industry.siemens.com/cs/document/109758536/
Und zwar möchte ich in einem Faceplate die Hintergrundfarbe einer Schaltfläche durch ein Skript dynamisieren. Letzten Endes soll ein stetiger Farbwechsel, abhängig von einem Realwert, erfolgen.
Als globales Script oder an dem Bildobjekt?

Am Bildobjekt kannst du das Script einfach an den Parameter hängen.
1740722288984.png
dann...
Javascript:
export function Rechteck_3_BackColor_Trigger(item, triggerDataSet) {
    let value = Tags("Prozesswert").Read();
    let color;

    switch (value) {
    case (value < 10) :
      color = 0xFFFFFF00;
    case (value < 20) :
      //statements
      break;
    default:
      //statements
      break;
    }

    return color;
}

Du kannst das "Swich" auch gehen eine Berechnung austauschen.
Siehe Math-Objekt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
... Als globales Script oder an dem Bildobjekt? ...
Am Bildobjekt, denke ich. Ich teste das im Laufe des Tages.

Jetzt habe ich doch noch einen kurzen Test schnell geschafft, bevor ich los muss.
Ein einfaches
Code:
return 0xFFFFFF00;
funktioniert schon mal.

Ein erster Blick ins Handbuch war auch schon sehr aufschlussreich. Ich habe im Netz zahlreiche andere Formate zur Farbdefinition gefunden. JavaScript ist wohl auch nicht JavaScript? Das Kapitel "4.3 Math-Objekt" ist mir auch schon ins Auge gefallen. Das muss jetzt aber warten.

1740726306509.png
 
Zuletzt bearbeitet:
JavaScript ist wohl auch nicht JavaScript?
Javascript ist ECMAscript.
Je nach Versionsstand können Funktionen in älteren Ständen fehlen, aber generell ist JS an sich schon recht konsistent.
Aber Siemens wäre nicht Siemens wenn die als erste Amtshandlung den Funktionsumfang nicht kastriert hätten ¯\_(ツ)_/¯
"console.log()" gibt es beispielsweise nicht, dafür "HMIRuntime.Trace()".
Wissen wohl nur die dunklen Götter was man sich bei manchen Sachen gedacht hat...

Das mit den 6 und 8 Stellen der Farbe ist einfach eine Sache der Notation und nich JS-exklusiv.
Deswegen einfach im Bezug auf den Prozesswert die drei Farbwerte ausrechnen & dann per Math.RGB() in Hex umrechnen.
Spart Kopfschmerzen & ist für die meisten altgedienten HMI-Schubser gewohnter zu lesen.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielleicht sollte man einfach nen neuen Studiengang "HMI Bilderstellung" aufmachen und den Automatisierungsingenieuren den EA-Test übrig lassen 😉🥳
Die Tatsache, dass die Stimmen in meinem Kopf inzwischen jeweils ein eigenes Berufsbild haben, bedeutet nicht, dass die Arbeit nicht an mir hängen bleibt (°ー°〃)
 
Zurück
Oben