Einen Livewert mit Farbe und Signalgüte anzeigen

Einsteiger · 8 Min. · Anzeige

Eine Zahl im Bild nützt nur, wenn man erkennen kann, ob man ihr glauben darf. Diese Anleitung zeigt drei Bindings, die aus einer Zeichnung eine Messwertkachel machen: den Wert, die Farbe, die er haben soll, und ein Abzeichen für den Fall, dass der Messwert nicht vertrauenswürdig ist.
  • Einen Livewert mit Farbe und Signalgüte anzeigen — ValueText = 4.82, Farbe = grün
    ValueText = 4.82 Farbe = grün
  • Einen Livewert mit Farbe und Signalgüte anzeigen — ValueText = 9.14, Farbe = rot
    ValueText = 9.14 Farbe = rot
  • Einen Livewert mit Farbe und Signalgüte anzeigen — BadQuality = true
    BadQuality = true

Das Problem

Wertfelder sind meist nur Felder — eine Zahl in einer festen Farbe. Fällt das Messgerät aus, steht der letzte gute Messwert dort und sieht genauso aus wie ein aktueller; man merkt es nur daran, dass er sich eine Weile nicht verändert hat.

Wo mit Farbe gearbeitet wird, geschieht das meist je Feld neu: ein in die Grafik geschriebener Grenzwertvergleich, der sich mit der Meldeliste in dem Moment widerspricht, in dem eines von beidem geändert wird. Zwei Stellen, die dasselbe entscheiden, sind eine zu viel.

Was Sie brauchen

Eine Messwertkachel mit dem Wert als eigenem Textelement und einem Abzeichen in einer Ecke — das Beispiel unten verwendet die Datenkachel aus dem Beispielsatz. Tag-Name und Einheit bleiben statischer Text: Sie gehören zur Messstelle, und ein Widget, das einmal je Messstelle platziert wird, kann sie in der Zeichnung tragen.

Aus der SPS brauchen Sie den Wert als Text, eine Farbe und das Gütebit, das Ihr Treiber ohnehin liefert.

ParameterTypWofür
ValueTextstringDer Messwert, bereits formatiert — Nachkommastellen, Ausblenden, alles.
ValueColorHmiColorDie Farbe, die der Wert haben soll, von der Meldelogik geliefert.
BadQualitybooleanWahr, wenn dem Messwert nicht zu trauen ist.

Schritt für Schritt

  1. 1. Den Wert binden

    Wählen Sie den Wert aus und fügen Sie ein Text Content-Binding mit dem Namen ValueText hinzu. Ein String, keine Zahl — wie viele Nachkommastellen, ob ein Messwert außerhalb des Bereichs ausgeblendet wird, was ein ausgefallenes Gerät anzeigt: alles Entscheidungen, die dorthin gehören, wo der Tag skaliert wird.

    Einen Livewert mit Farbe und Signalgüte anzeigen — Den Wert bindenEinen Livewert mit Farbe und Signalgüte anzeigen — Den Wert binden
  2. 2. Die Farbe von der Meldelogik holen

    Fügen Sie beim weiterhin ausgewählten Wert ein Fill Color-Binding mit dem Namen ValueColor hinzu. Es nimmt eine Farbe entgegen, die Entscheidung darüber, was als hoch, niedrig oder normal gilt, bleibt also dort, wo Ihre Grenzwerte ohnehin liegen.

    Es hier stattdessen mit Bedingungen zu lösen hieße, die Grenzwerte in jede Grafik zu schreiben, die einen Wert anzeigt — und sie danach alle mit der Meldeliste synchron zu halten.

    Einen Livewert mit Farbe und Signalgüte anzeigen — Die Farbe von der Meldelogik holenEinen Livewert mit Farbe und Signalgüte anzeigen — Die Farbe von der Meldelogik holen
  3. 3. Ein Abzeichen bei schlechter Güte zeigen

    Wählen Sie das Güteabzeichen aus und fügen Sie ein Visibility (Boolean)-Binding mit dem Namen BadQuality hinzu. Die meisten Treiber liefern das ohnehin — es ist üblicherweise das Stück, das niemand ins Bild bringt.

    Ein Abzeichen statt die Zahl auszublenden, denn „dieser Messwert ist veraltet“ und „es gibt keinen Messwert“ sind verschieden — und der letzte bekannte Wert ist oft genau das, was ein Bediener braucht, während er herausfindet, was ausgefallen ist.

    Einen Livewert mit Farbe und Signalgüte anzeigen — Ein Abzeichen bei schlechter Güte zeigenEinen Livewert mit Farbe und Signalgüte anzeigen — Ein Abzeichen bei schlechter Güte zeigen

Prüfen

Öffnen Sie Simulieren und setzen Sie BadQuality, während ein Wert stehen bleibt. Das Abzeichen muss über einer weiterhin lesbaren Zahl erscheinen — den letzten Wert zu zeigen und zu kennzeichnen, dass ihm nicht zu trauen ist, ist nützlicher, als beides zu verbergen.

Ändern Sie danach ValueColor. Farbe und Text sind getrennte Bindings auf demselben Element, jedes kann sich also ohne das andere ändern.

Für die Simulation ist ein kostenloses Konto nötig. Für alles davor nicht.

Varianten

  • Tag und Einheit ebenfalls binden. Wird eine Kachel für mehrere Messstellen wiederverwendet — eine Auswahl, ein Detailbereich —, fügen Sie jedem der beiden ein Text Content-Binding hinzu, und die Kachel folgt der Auswahl.
  • Farbe aus einem Zustand. Soll lieber die Grafik entscheiden, ersetzen Sie das Farb-Binding durch Cond. Fill (Number) und geben jedem Meldezustand eine Zeile.
  • Die ganze Kachel abdunkeln. Ein Fill Opacity-Binding auf dem Kachelhintergrund lässt einen veralteten Messwert zurücktreten, statt ihn in vollem Kontrast neben aktuellen stehen zu lassen.

Fragen

Warum ist der Wert ein String und keine Zahl?
Damit die Formatierung dort liegt, wo der Tag skaliert wird. Nachkommastellen, das Ausblenden eines Werts außerhalb des Bereichs, was ein ausgefallenes Gerät anzeigt — all das ist eine Entscheidung, die einmal getroffen wird, statt eine Eigenschaft der Grafik zu sein.
Warum die Farbe nicht hier aus dem Wert bestimmen?
Weil die Grenzwerte in der Meldelogik bereits existieren. Sie in die Grafik zu schreiben erzeugt zwei Stellen, die sich widersprechen können — und das tun sie, sobald eine von beiden geändert wird.
Warum den Tag-Namen nicht binden?
Er beschreibt die Messstelle, nicht den Messwert, und ändert sich nicht, solange das Bild offen ist. Ein einmal je Messstelle platziertes Widget kann ihn als statischen Text tragen; binden Sie ihn, wenn eine Kachel mehrere Messstellen bedient.
Warum ein Abzeichen statt einen schlechten Messwert auszublenden?
"Dieser Messwert ist veraltet" und "es gibt keinen Messwert" sind verschiedene Dinge. Der letzte bekannte Wert ist oft das, was ein Bediener braucht, während er herausfindet, was ausgefallen ist.
Dieses Beispiel im Editor öffnen.svghmi herunterladen

Verwandte Tutorials

Einen Livewert mit Farbe und Signalgüte anzeigen — WinCC Unified & WinCC V8+ | DynSVG