WinCC Unified WinCC Unified Hintergrundfarbe in Abhängigkeit von Variable

apfelsaft

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

ich möchte in WinCC Unified die Hintergrundfarbe eines E/A-Feldes in Abhängigkeit einer Variable ändern.
Der Wert, welcher als Prozessvariable im E/A-Feld angezeigt wird, soll mit einer anderen Variable verglichen werden.

Javascript:
export function EA_Feld_1_BackColor_Trigger(item) {
var color;
let tag1 = Tags("MoveMovingRegister_DB_wagonErrorSumCounter");
let tagValue1 = tag1.Read();
if (item.ProcessValue > tagValue1) {
  color = 0xff0000;
  item.BackColor = 0xff0000;
} else {
  color = 0xffffff;
  item.BackColor = 0xffffff;
}
return color;
}

bgColor.png


Danke schon mal!
 
Mit einem Tipp aus dem Siemens Support Forum hats geklappt:

Javascript:
var color;
let average = Tags("MoveMovingRegister_DB_wagonErrorSumCounter");
let averageValue = average.Read();
if (item.ProcessValue > averageValue) {
  color = HMIRuntime.Math.RGB(255,0,0);
  //item.BackColor = HMIRuntime.Math.RGB(255,0,0);
} else {
  color = HMIRuntime.Math.RGB(255,255,255);
  //item.BackColor = HMIRuntime.Math.RGB(255,255,255);
}
return color;
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit einem Tipp aus dem Siemens Support Forum hats geklappt:

Javascript:
var color;
let average = Tags("MoveMovingRegister_DB_wagonErrorSumCounter");
let averageValue = average.Read();
if (item.ProcessValue > averageValue) {
  color = HMIRuntime.Math.RGB(255,0,0);
  //item.BackColor = HMIRuntime.Math.RGB(255,0,0);
} else {
  color = HMIRuntime.Math.RGB(255,255,255);
  //item.BackColor = HMIRuntime.Math.RGB(255,255,255);
}
return color;
Mein Gott war das früher noch einfach zum umsetzen ( Protool, WinCC flex und bei TIA mit nicht Unified Geräten ).
 
Hier mal ein Beispiel mit einem Rechteck, das eingefärbt werden soll:
Javascript:
export function Rechteck_1_BackColor_Trigger(item, triggerDataSet) {
  const r = Tags("K8").Read() ? 255 : 0; // Rot
  const g = Tags("K6").Read() ? 255 : 0; // Grün
  const b = Tags("K7").Read() ? 255 : 0; // Blau
  const a = (r | g | b) ? 127 : 0;       // 0 = durchsichtig wenn keine Farbe
  const color = HMIRuntime.Math.RGB(r, g, b, a);
  HMIRuntime.Trace("Farbe: 0x" + (color >>> 0).toString(16));
  return color;
}

Vorher hatte ich den Code selbst geschrieben und die Werte hexadezimal notiert (0xFF000000) und dann verodert, aber das funktionierte nicht. Bis jetzt weiß ich immer noch nicht, welche Reihenfolge die Bytes haben müssen. Ist das jetzt ARGB oder vielleicht doch RGBA.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Bis jetzt weiß ich immer noch nicht, welche Reihenfolge die Bytes haben müssen. Ist das jetzt ARGB oder vielleicht doch RGBA.
Naja, es ist technisch gesehen ein Browser auf Chromium-Basis, der da im Panel läuft + der WebClient ist auch nur ein normaler Browser.
Also müsste es RGBA sein.
Hast du dran gedacht Bitweise-OR zu nehmen? Also nur ein "|".
 
Zurück
Oben