HMI - Verwendung Datagrid - Problem Ellipse bei Statuswechsel einfärben

STEP7_NEWBEE

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

Ich verwende in TwinCAT HMI gerade ein Datagrid mit dem ich auf ein Array of Struct zugreife.

1754992624165.png1754993466747.png
- Der Zugriff funktioniert auch soweit und die Daten werden eingetragen.

Ziel: Ich wollte abhängig von der "Auswahl" - Den Proben die der Benutzer konfiguriert hat, LED-Anzeigen einfärben.

Das einfärben funktioniert jedoch nicht so, wie ich das gerne hätte:

Ein Teil der Anzeigen aktualisiert erst seinen Wert (ändert seine Farbe), wenn ich im Datagrid bei Auswahl "1" einen Zustandswechsel habe. - Wie wenn dieser Button die restlichen Anzeigen aktualisieren würde.
1754994068735.png1754994153467.png

Konfiguration: (Probe 1: ausgeschaltet, Probe 2 bis 5 sollten grün leuchten) - Tun sie aber leider nicht.
1754993019505.png1754993074497.png
Das geschieht erst, sobald ich den ersten Eintrag im Datagrid verändere.

1754993160544.png1754993178121.png

Ich möchte jedoch erreichen, dass sich die Farbe des Buttons sofort ändert, sobald dieser über die Auswahl vom Benutzer konfiguriert wird.

Kann mir jemand helfen / erklären, welche Einstellung ich hier vl falsch verwende? / Wo mein Problem liegen kann?

Komisch finde ich nämlich vor allem, das die "Anzeige 3" auch den Wert sofort übernimmt, die anderen Anzeigen benötigen wie oben beschrieben den Zustandswechsel.

Vielen Dank im Voraus!

LG
 

Anhänge

  • 1754992744140.png
    1754992744140.png
    14,6 KB · Aufrufe: 3
Zuletzt bearbeitet:
Prüfe mal ob bei deinem Custom-Event die Variable richtig drin steht bzw. das richtige Array-Element.

Das ist auf dem Bild nicht richtig ersichtlich.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo mgl! Vielen Dank für deine Rückmeldung!

Also die Variable und das Array - Element sollten vom Zugriff her passen. Es scheint ja so, wie wenn die Farbänderung nur durch einen Zustandswechsel des 1. Eintrags aktiviert wird. Oder hab ich hier vl. etwas falsch konfiguriert?
1755016731288.png
1755016782405.png


Vielen Dank!

LG
 
Wenn ich das richtig sehe, dann hast du hier ein event erstellt, das getriggert wird, sobald sich die "FillColor" der "LED_Probe_2" ändert.
1755062153673.png
Dass das ganze überhaupt funktioniert ist daher recht erstaunlich.

Was du ja aber eigentlich machen wolltest, ist ein Event, das getriggert wird, wenn sich "bAuswahl" des entsprechenden Arrayindexes ändert, oder?

Zum grundsätzlichen Verständnis zu diesen Custom Events:
Man trägt hier im Reiter mit dem Blitz-Icon immer den Trigger ein. So wird es ja auch bei den anderen Events (z.B. "onAttached") gemacht.
Das was dann passieren soll, und welche Werte gelesen oder geschrieben werden, das wird dann im Event selbst konfiguriert.

in deinem Fall müsstest du also das event mit "bAuswahl" verknüpfen.

Alternativ kann man solche sachen auch mit if-else-Abfragen direkt in dem Menü mit den normalen Einstellungen machen. Finde ich deutlich übersichtlicher, weil man auf den ersten Blick sieht, dass die Farbe sich ändern kann.

Bei meinen Menübuttons mache ich es z.B. so:
1755062558526.png

Wenn also die beiden Parameter des Usercontrols übereinstimmen, dann ist der Button aktiv, dann wird er Dunkelblau, sonst ist er Dunkelgrau.
Achtung mit Groß- und Kleinschreibung.

So als allgemeinen Tipp würde ich dir empfehlen, bei allem was mit Farben zu tun hat dir zuerst mal Variablen anzulegen, die den Farbwert bestimmen. Alleine schon bei deinen 10 LEDs wird das sonst ein Wahnsinnsaufwand, wenn jemand später doch lieber ein etwas dunkleres Grün haben möchte.
Hier gibts natürlich noch die Möglichkeit das ganze über die verschiedenen Themes zu machen, ob der Aufwand notwendig ist kann ich nicht sagen.
 
Hallo,

Danke für die Erläuterung, da lag mein Fehler! - das Umschalten der Farben funktioniert nun so wie es soll :)

Ich hab meine Schnittstelle zwischen Visualisierung & PLC so aufgebaut, dass es eine Struktur gibt über die ich alle Informationen austausche, welche dann für die Interaktion mit dem Bediener benötigt werden.

Hab ich deine Herangehensweise mit der Variable so richtig verstanden:

Du legst dir auf der PLC z.B. in einer Struktur eine Variable an ("ButtonGedrückt") , in der dann die Farbe des Buttons abgespeichert wird?
und verknüpfst diese dann mit den Farbeigenschaften deiner Button? - also wenn du die Farbzusammensetzung in der PLC änderst, ändern sich alle verknüpften Button automatisch mit?

Bzw wäre die Alternative das ganze über Themens zu machen, wo eine Typdefinition hinterlegt ist - wenn du dein Theme "Button" änderst, ändern sich eben alle Button in der Visualisierung gleich mit (Farbe, Größe usw.) ?

LG
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Nein, nicht ganz. Die Codes für die Farbwerte, die stehen in den Variablen "ColorDarkBlue" und "ColorDarkGrey". Das sind aber keine SPS-Variablen, sondern interne Variablen der HMI:
1755073975697.png

Daher sind die Variablen auch rot (siehe screenshot von meinem vorherigen Beitrag) und mit einem "I" gekennzeichnet.

Wenn ich jetzt das Grün grüner oder das Blau blauer haben will, dann kann ich das an einer zentralen Stelle tun.

Die Verknüpfung zur SPS geht über die ToggleIndex-Variablen. Die sind hier gelb, da ich mich in einem Usercontrol bewege und Parameter an das Usercontrol übergebe (daher das "P"). Aber genausogut kannst du hier eine Boolsche Variable nehmen (Ich vergleiche ja zwei Integer mit "==", das Ergebnis ist auch ein Bool.
Bei mir sind es halt Menübuttons, da darf nur exakt einer aktiv sein, daher ist es besser, wenn man das über einen Integer als zig Bools macht.
 
ok vielen Dank für die Erklärung! du hast mir schon weiter geholfen.

Hab nun das Custom "Trigger Event" auf den Struktur Eintrag "bAuswahl" in der PLC verknüpft und die Farben der Button über HMI interne Variablen angesteuert.

1755079052152.png

Themes für die LED Anzeigen verwende ich hier noch nicht, weil es nur 18 Leds sind - aber ich verstehe soweit deinen Ansatz, das bei größeren HMI Mutter-Kind Beziehungen notwendig sind, da ansonsten der manuelle Aufwand zu groß wird um alle Eigenschaften händisch zu ändern.

1755078666291.png1755078698924.png
Aber die Farben gleich direkt als Funktion im Reiter "FillColor" zu hintelegen, wäre whs ein wenig übersichtlicher.

Vielen Dank für deinen Input!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Genau das hab ich gemeint, finde deine Version soweit auch übersichtlicher! wenn man das Einfärben direkt unter "FillColor" hinterlegt und nicht wie ich in einer Aktion... vl ändere ich das auch noch um. :´-)
 
Zurück
Oben