WinCC Unified Kurvendiagramm Kurve unterschiedlich färben

tt21

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

weiss jemand eine möglichkeit wie ich ein Kurve unterschiedlich einfärben kann?

Konkret geht es um ein Klimagerät das via 0-10V kühlen, entfeuchten oder heizen kann. Über Relais inputs kann ich dem Klimagerät sagen in welchem Modus es sich befindet. Jetzt möchte ich gerne das die Kurve im Kurvendiagramm eine andere farbe bekommt wenn das Klimagerät am kühlen, entfeuchten oder heizen ist.
Wenn ich es über den Parameter Linienfarbe mache, ist die Farbe der Linie leider im so gefärbt wie der aktuelle Betriebsmodus. Gerne hätte ich die Möglichkeit das wenn z.B. von 10-12.00 Uhr war die Anlage am Kühlen und von 12.00 - 14.00 Uhr am Heizen. Dann hätte ich gerne das von 10.00 - 12.00 Uhr die Linie blau ist und von 12.00 - 14.00 rot.
Weiss da jemand eine möglichkeit?

Hoffe es ist verständlich erklärt.

Hard- Software:
Tia 19.2
S7-1214
HMI MTP-700 Basic
 
Bin zwar jetzt nicht der Unified Experte aber ich würde sagen was du vorhast, eine Linie im Kurvendiagramm zeitabhängig unterschiedlich einfärben wird nicht gehen, schon gar nicht mit einem basic Panel.
Du könntest höchstens 3 unterschiedliche eingefärbte Kurven machen und diese dann je nach Betriebsart anzeigen lassen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du könntest höchstens 3 unterschiedliche eingefärbte Kurven machen und diese dann je nach Betriebsart anzeigen lassen
Dies habe ich auch überlegt, jedoch gibt es dann nur jeweils die Kurve an die zur Zeit aktiv ist. Dies würde meiner Meinung nach leider eher verwirren.
 
Weiss da jemand eine möglichkeit?
Mit der Standard-Kurvenanzeige?
Soweit ich weiß nein, wobei ich bei den unified-Panels noch nicht ganz so tief drin stecke.

Wie genau brauchst du die Kurvenanzeige?
Wenn dein Zeitbereich und die Auflösung fest ist, könntest du dir eine Art "Kurvenanzeige" als Säulendiagramm aus einzelnen Rechtecken zusammenbasteln.
Ich hab das mal für die letzten 24h in 15min Auflösung gebastelt.
Bestand dann aus einem Array mit 96 Elementen (24*4), die jeweils den Y-Wert & einen Zahlenwert für die Farbe beinhalteten.
Und dann per Script bei jedem sps-seitigen Update der Werte die Höhe und Y-Position der 96 zugehörigen Rechtecke manipuliert.

Folgender Beitrag bezieht sich auf Comfort-Panels.
Gibt aber bestimmt auch eine Entsprechung bei Unified.
https://support.industry.siemens.com/cs/document/53752382/
 
Mein Vorschlag wäre auch, mit 3 unterschiedlichen Kurven zu arbeiten - allerdings alle aktiv lassen und die Versorgung (in der SPS) umschalten - also unterschiedliche Kurvenvariablen haben. die gerade inaktiven sind dann 0 ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mit der Standard-Kurvenanzeige?
Soweit ich weiß nein, wobei ich bei den unified-Panels noch nicht ganz so tief drin stecke.

Wie genau brauchst du die Kurvenanzeige?
Wenn dein Zeitbereich und die Auflösung fest ist, könntest du dir eine Art "Kurvenanzeige" als Säulendiagramm aus einzelnen Rechtecken zusammenbasteln.
Ich hab das mal für die letzten 24h in 15min Auflösung gebastelt.
Bestand dann aus einem Array mit 96 Elementen (24*4), die jeweils den Y-Wert & einen Zahlenwert für die Farbe beinhalteten.
Und dann per Script bei jedem sps-seitigen Update der Werte die Höhe und Y-Position der 96 zugehörigen Rechtecke manipuliert.

Folgender Beitrag bezieht sich auf Comfort-Panels.
Gibt aber bestimmt auch eine Entsprechung bei Unified.
https://support.industry.siemens.com/cs/document/53752382/
Dies ist eine gute Idee, aber leider müsste es mit anderen Kurven in ein Kurvendiagramm. Werde, so glaube ich, Balken im Kurvendiagramm verwenden die den Zustand angeben und die Kurve so lassen wie sie ist. Ist nur für eine Testanlage.
 
Ich arbeite gerade an einem ähnlichen Fall, allerdings mit einem MTP Comfort. In meinem Beispiel soll der Nutzer vor Ort die Farben manuell ändern können. Vielleicht hilft meine Vorgehensweise jemandem weiter.
Man könnte evtl über den Aufgabenplaner die geforderten Farbwerte einer Variable per Skript einfach zuweisen, damit zu bestimmten Zeiten bestimmte Werte angenommen werden.

Dies habe ich über eine selbst erstellte Farbpalette sowie einer HMI-Variablentabelle mit Startwerten und Persistenz, sowie etlichen Skripten realisiert. Das Problem ist derzeit noch, dass beim Wechsel auf das Bild bzw. beim Bildaufbau nicht die Startwerte der Variablen als Farbwerte geladen werden -> Alle Kurven sind schwarz und müssen manuell gefärbt werden. Danach bleiben aber die Farbwerte durch die Persistenz für die jeweiligen Kurven und Kurvenanzeigen erhalten.

(In dem Skript scheint wohl noch ein Fehler zu sein, da die Startwerte der Variablen nicht geladen werden (Zeile 11+12))
1733301491099.png


Die Farbpalette selbst wird über den oben rot markierten Button als popup geöffnet. Die Skripte für die Farbvergabe sind lokal und somit in jedem Button, da das Skript dadurch viel simpler ist. Um eine neue Farbpallete zu erstellen müssen ledeglich die farben der Buttons geändert werden.

1733301719666.png


Zu guter letzt wurden für jede Farbe einer Kurve Variablen erstellt.
Aggr_X_Kurvenfarbe_Y X & Y sind hierbei in den Skripten die Laufzeitvariablen.
Die Startwerte bauen sich aus einem umformatierten HEX-Wert auf -> jeweils 2 Stellen für R,G,B,Transparenz
Beispiel:
Aus RGBA (150, 255, 0, 255 für Transparenz 0%) -> 96 FF 00 FF in HEX -> 2.533.294.335 als Ganzzahl

1733302090146.png
 
Hallo,
(In dem Skript scheint wohl noch ein Fehler zu sein, da die Startwerte der Variablen nicht geladen werden (Zeile 11+12))
Versuch mal in Zeile 11 die Funktion for .. of zu verwenden. Damit könnte deine Einfärbung bei Bildaufbau funktionieren.


for .. of geht alle Objekte auf dem aktuellen Screen durch und dann kannst du darüber den Objekt-Namen abfragen und weiterverarbeiten.
Beispielsweise so:

Javascript:
for (let screenItem of Screen.Items) {
 if (screenItem.Name == "Kurvenanzeige_1") {
    screenItem.Backcolor = HMIRuntime.Math.RGB(255, 255, 255);
     }
}
 
Ich habe keine Ahnung von unified (nur TIA V15.1), aber bei nicht unified Panels ist das möglich.
Aber nur für fixe Bereiche in Y-Richtung.

Er wollte ja flexibel Zeitbereiche im Bezug auf den Betriebsmodus färben:
Wenn ich es über den Parameter Linienfarbe mache, ist die Farbe der Linie leider im so gefärbt wie der aktuelle Betriebsmodus. Gerne hätte ich die Möglichkeit das wenn z.B. von 10-12.00 Uhr war die Anlage am Kühlen und von 12.00 - 14.00 Uhr am Heizen. Dann hätte ich gerne das von 10.00 - 12.00 Uhr die Linie blau ist und von 12.00 - 14.00 rot.
 
Aber nur für fixe Bereiche in Y-Richtung.

Er wollte ja flexibel Zeitbereiche im Bezug auf den Betriebsmodus färben:
Ich gebe die recht, das ist nicht ideal, aber man könnte ja bei einem anderen Betriebsmodus die Grenzwerte der Kurvenvariable ändern und somit eine Farbänderung erzwingen, ich weiß allerdings nicht, was dann mit der Farbe der älteren Kurvenwerte passiert, müsste man mal probieren.
 
Zurück
Oben