(Ich antworte mal in diesem ersten Thread)
Bei der Farbsteuerung Animation>Gestaltung kann man nur 1 Variable angeben. Um die Animation von 2 Variablen abhängig zu machen, kann man die 2 (oder mehr) externen Variablen zunächst zu 1 interne Variable zusammenfassen und dann die interne Variable für die Animation benutzen.
Da bekommt man allerdings das Problem, daß beide externen Variablen bei Wertänderung die interne Variable ändern müssen und man dafür sorgen muß, daß die Runtime die beiden Variablen auch liest um die Wertänderungen mitzukriegen. Man muß die beiden Variablen irgendwie im Bild verwenden oder "zyklisch fortlaufend" lesen lassen.
Wenn das Panel Skripte kann, dann kann man auch direkt die Objekt-Eigenschaften manipulieren. Da bekommt man zusätzlich zu dem Wertänderungsproblem noch das Problem, daß man die Farbzuweisungen an das Objekt bei Wertänderungen und bei jedem "Bild aufgebaut" erneut vornehmen muß.
Code:
Set objekt = HmiRuntime.Screens("Bild_1").ScreenItems("MeinObjekt_1")
If SmartTags("xColor_1") Then
objekt.BackColor = RGB (102, 255, 153) 'hellgrün
Else
...
Es ist also grundsätzlich möglich, aber umständlich.
Einfacher ist es, mit 2 übereinanderliegenden Objekten zu arbeiten, wobei die eine Variable die Farbe und die andere Variable die Sichtbarkeit steuert.
Noch besser ist es, schon in der Steuerung ein "Statusbyte" aus allen relevanten Einflüssen zusammenstellen und dieses eine Statusbyte direkt für die Farbanimation zu nutzen.
Das umständliche und undurchsichtige Verknüpfen von zwei Variablen in der HMI-Runtime sollte man nur machen, wenn es nicht anders geht, z.B. wenn die Variablen in verschiedenen Steuerungen liegen.
Hier nun ein Beispiel, wie man 2 boolsche Variablen zur Farbsteuerung in der HMI-Runtime kombiniert:
-
xColor_1 und
xColor_2 sind die beiden externen boolschen Variablen
-
iColor_1 und
iColor_2 sind zwei interne Variablen Typ Int
-
iColor_control ist eine interne Variable Typ Int
- an beide externen Variablen
xColor_1 und
xColor_2 wird bei "Wertänderung" diese Funktionsliste projektiert:
Code:
1 SetzeWert
Variable(Ausgabe) iColor_1
Wert xColor_1
2 SetzeWert
Variable(Ausgabe) iColor_2
Wert xColor_2
3 LineareSkalierung
Y(Ausgabe) iColor_control
a 2
X iColor_1
b iColor_2
- beim zu animierenden Objekt Animation>Gestaltung
Code:
Variable: iColor_control
Typ (x) Integer
Wert 0 schwarz grau
-1 schwarz grün
-2 schwarz gelb
-3 schwarz rot
- nun muß man noch
xColor_1 und
xColor_2 irgendwie im Bild verwenden (oder die Erfassungsart auf "zyklisch fortlaufend" stellen), z.B.
-- in Animation>Gestaltung von beliebigen Objekten, wobei die Animation die Objektfarbe nicht ändert
-- in Animation>Gestaltung von verdeckten/unsichtbaren Dummy-Objekten
-- in verdeckten/unsichtbaren Ausgabefeldern
-- für eine wirkungslose Animation>Sichtbarkeit: von 0 bis 1 sichtbar (dabei muß man wegen einer WinCCflex-"Macke" auf "von 0 bis 1 (x) Ausgeblendet" stellen)
Harald