WinCC Unified Faceplate Variable aus Globalen Definitionsbereich bleibt leer

Epocs

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

ich habe efolgendes Problem. Ich möchte gerne die Farbgestaltung in einem DB als String speichern und in Faceplates über eine VAR Schnittstelle übergeben. Wenn ich die Variable direkt auslese und verknüpfe funktioniert das auch soweit aber wenn ich die Variable auf eine Globale Variable im Faceplate verknüpfe bleibt die Globale Variable leer. Was mache ich falsch ? Ich habe auch mal versucht die Globale Variable im Skript teil nochmal extra zu instanzieren mit strVariable.Read() aber leider ohne Erfolg.

Hier mal ein Ausschnitt aus meinem Code:

Javascript:
//Definitionen für Skript-Dynamisierungen hier einfügen
//Hinweis: Die Definitionen in diesem globalen Definitionsbereich werden zwischen allen Faceplate-Instanzen dieses Typs geteilt.
let clrAutomatikOn = Tags("udtOverlayConfig.sColors.strAutomatikOn").Read();
let clrAutomatikOff = Tags("udtOverlayConfig.sColors.strAutomatikOff").Read();
//Ende Globaler Definitionsbereich hier gibt es noch mehr Variablen


Javascript:
export function Kreis_1_BackColor_Trigger(item, triggerDataSet) {
    var value;
let uiState = Tags("uiState").Read().toString();
let bState = Tags("bCondition").Read();

switch (uiState) {
case "0":
  if (bCondition == true) {
  value = clrAutomatikOn;
  } else {
  value = clrAutomatikOff;
  }
  break;
case "1":
   value = clrSimulationOn;
  break;
case "2":
  value = clrSimulationOff;
  break;
case "3":
  value = clrDisabledOn;
  break;
case "4":
  value = clrDisabledOff;
  break;

default:
  value = 0xff333333;
  break;
}

    return value;
}

Vielen Dank schonmal im Vorraus !
 
Hi,
über ein ähnliches Problem bin ich auch schon gestolpert.
Ich kenne zwar die genaue Erklärung nicht, warum es dabei Probleme gibt. Aber ich habe mir angewöhnt im globalen Definitionsbereich niemals Variablen zu lesen/schreiben, maximal tue ich dort Skriptvariablen anlegen. Aber gerade in Hinsicht auf Dokumentation von Faceplates wird der globale Definitionsbereich gerne übersehen (muss ja zusätzlich aufgeklappt werden), weshalb ich kein Freund davon bin.

Ich würde dir empfehlen die "Lokalen Variablen" in Faceplates zu nutzen. Diese werden schließlich auch zwischen allen Instanzen geteilt und können in jedem Objekt des Faceplates verwendet werden.
Gruß ;)
 
Zurück
Oben