TIA Rechteck Farbwechsel

s.t.a.r.s

Level-1
Beiträge
21
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Servus,
ich möchte zwei Bänder(Rechtecke) in unterschiedlichen Farben anzeigen lassen, je nach Bitzustand.
Die Daten kommen aus einem DB, in einem WORD sind zwei Bänder.

zb. DB1.DBW2, Band2 15-8 und Band1 7-0
Bei BIT 6 soll Band1 grün werden.
Bei BIT 1 soll Band1 rot werden.

Band zwei
Bei BIT 14 grün
Bei BIT 9 rot

Hier habe ich die Einstellungen gemacht. (TIA WINCC 15 Prof)
Rechteck Band 1 > Animation > Eigenschaftsanimation > Prozess Bit 1 rot, 2 orange, 6 grün, Einstellungen > Typ BINÄR
Rechteck Band 2 > Animation > Eigenschaftsanimation > Prozess Bit 9 rot, 10 orange, 14 grün, Einstellungen > Typ BINÄR

Ich bekomme den Farbwechsel immer nur bei Band 1 angezeigt, beim zweiten ändert sich nichts.
Muss ich für jedes Band ein eigenes BYTE bzw WORD haben?!

Grüße
 
Kannst Du uns vielleicht mal ein Bild von diesem Einstelldialog mit dem "Typ BINÄR" machen?
Ich habe kein WinCC V15 Prof. Ich meine aber, man kann die Animier-Bits für mehrere Objekte in der selben Variable haben. Wegen der HMI braucht man das Word nicht in 2 Byte splitten.
Wie werden die Bits im Word gesteuert? Werden dabei vielleicht die Bits 8 bis 15 auf 0 gelöscht? Oder sind von 8 bis 15 mehrere Bits gleichzeitig 1?

Setze testweise neben die beiden Rechtecke ein EA-Feld für die Animations-Variable. Beim Wert 514 müssten beide Rechtecke rot werden, bei 1028 beide orange und bei 16448 beide grün.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Guten Morgen,

ja die Bits sind unterschiedlich und je nach Zustand der Anlage, sind auch mehrere gleichzeitig 1.
Hab die Animation mal mit "Eigenschaft animieren " und über Gestaltung gemacht.
Hier jeweils die BITS mit den verschiedenen Farben eingetragen.
Hab das ganze auch mal als Wert DEZ probiert, hier bekomme ich dann auch nicht die richtigen Farben.

Bei VAt1 sieht man z.b. einen Zustand für das linke Byte > grün auf rot, das rechte > grün
 

Anhänge

  • VAt1.JPG
    VAt1.JPG
    111,9 KB · Aufrufe: 50
  • 2B.JPG
    2B.JPG
    112,8 KB · Aufrufe: 59
  • 2.JPG
    2.JPG
    67,8 KB · Aufrufe: 57
  • 1B.JPG
    1B.JPG
    106,5 KB · Aufrufe: 53
  • 1.JPG
    1.JPG
    68,2 KB · Aufrufe: 49
Moin,
wie gesagt, ich habe und kenne WinCC Prof V15 nicht. Ich kann Dein Problem deshalb nicht nachstellen und testen. WinCC Prof kenne ich nur die "klassische" Linie bis V7.x

Über Animation > Gestaltung, Typ "Mehrere Bits" sollte das aber funktionieren, daß die Bits für zwei Objekte im selben Word sind. So funktioniert es auch in WinCC Comfort/Advanced. Außer wenn mehrere der bei einem Objekt verwendeten Bits gleichzeitig 1 sind - dann wird keine Animation ausgeführt! Der Zustand von nicht verwendeten Bits ist aber egal.
Was das "Eigenschaft animieren" Typ "Binär" betrifft - das kann ich nicht testen, es sollte aber ebenfalls funktionieren. (Wird da bei Wert ebenfalls die Bitnummer angegeben wie bei Animation > Gestaltung, Typ "Mehrere Bits"?)

Muß man bei dem WinCC Prof V15 die Visu "übersetzen"? Dann mache mal ein "Alles übersetzen".

Du müsstest aber auf jeden Fall im SPS-Programm dafür sorgen, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist ---> extra Status-Byte oder Status-Word für HMI zusammenstellen und nicht irgendein zufällig passend aussehendes internes Datenword abgreifen ---> Trennung HMI-Schnittstelle von Arbeits-Datenstrukturen. In dem Byte/Word/DWord für das HMI dürfen Bits mehrerer Objekte zusammen sein.

Theoretisch kannst Du auch das Word so nehmen wie es ist, müsstest dann aber in der Animation die 3 Bits anders auswerten (z.B. als Bereich), so daß gleichzeitig mehrere 1-Bits nicht stören. Das wird dann aber aufwendiger. Wann kann man in dem "Eigenschaft animieren"-Dialog anstatt "(x) Variable" das "(x) Ausdruck" aktivieren?

Harald
 
(Wird da bei Wert ebenfalls die Bitnummer angegeben wie bei Animation > Gestaltung, Typ "Mehrere Bits"?)

Ja bei Typ wird Binär eingestellt, dann kann man bis 15 eingeben.

Muß man bei dem WinCC Prof V15 die Visu "übersetzen"? Dann mache mal ein "Alles übersetzen".
Das wird Automatisch beim laden gemacht.

Du müsstest aber auf jeden Fall im SPS-Programm dafür sorgen, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist ---> extra Status-Byte oder Status-Word für HMI zusammenstellen und nicht irgendein zufällig passend aussehendes internes Datenword abgreifen ---> Trennung HMI-Schnittstelle von Arbeits-Datenstrukturen. In dem Byte/Word/DWord für das HMI dürfen Bits mehrerer Objekte zusammen sein.
Muss ich mir mal genauer anschauen, wir holen uns die Daten von einer S5 in die S7.

Theoretisch kannst Du auch das Word so nehmen wie es ist, müsstest dann aber in der Animation die 3 Bits anders auswerten (z.B. als Bereich), so daß gleichzeitig mehrere 1-Bits nicht stören. Das wird dann aber aufwendiger.

Mit Bereich ging es auch nicht wirklich, negativ Werte konnte ich zwar eintragen, aber auch hier gab´s keinen Farbwechsel.
zb. HEX W#16#C240 = DEZ -15808
Es wird immer nur das rechte Byte ausgewertet, links passiert nichts.

Wann kann man in dem "Eigenschaft animieren"-Dialog anstatt "(x) Variable" das "(x) Ausdruck" aktivieren?
Das geht mit allen Typen außer BINÄR und BIT
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich habe das gerade mal simuliert. Es funktioniert, wenn der Wert eindeutig ist.
Du musst, wie Harald das schon geschrieben hat, den Wert für die Anzeige in ein getrenntes Wort rangieren.

Du müsstest aber auf jeden Fall im SPS-Programm dafür sorgen, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist ---> extra Status-Byte oder Status-Word für HMI zusammenstellen und nicht irgendein zufällig passend aussehendes internes Datenword abgreifen ---> Trennung HMI-Schnittstelle von Arbeits-Datenstrukturen. In dem Byte/Word/DWord für das HMI dürfen Bits mehrerer Objekte zusammen sein.
Balken.PNGWert.PNG
 
Ich weiß nicht wie der WinCC-Dialog bei "Bereich" aussieht, bei WinCC Prof bis V7.x kann man projektieren:
Code:
Ausdruck: 'MyAnimationWord' & 0x46

Wertebereich1  bis   1  grau (oder blau)
Wertebereich2  bis   3  rot
Wertebereich3  bis  63  orange
Wertebereich4  bis 127  grün
sonst                   grau (oder blau)

oder:

 2 - 3    rot
 4 - 63   orange
64 - 127  grün
Sind mehrere Bits=1 dann bestimmt das höherwertigere 1-Bit die Farbe.

Beim Band was die Bits 9,10,14 verwendet, sind die gleichen Bereiche (2 bis 127), nur der Ausdruck lautet dann:
Code:
    : 'MyAnimationWord' / 256 & 0x46
oder: ('MyAnimationWord' / 256) & 0x46
oder: 'MyAnimationWord' & 0x4600 / 256
Möglicherweise muß man in dem TIA V15 Prof beim Ausdruck die Operatoren anders schreiben:
/ --> DIV
& --> AND

Harald
 
Du musst, wie Harald das schon geschrieben hat, den Wert für die Anzeige in ein getrenntes Wort rangieren.
Es kommt weniger auf das getrennte Word an, sonderen darauf, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist. Werden einfach nur die Bits in ein getrenntes Word fürs HMI kopiert, dann funktioniert die Animation trotzdem nicht, wenn jeweils mehr als 1 Bit gesetzt ist.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Es kommt weniger auf das getrennte Word an, sonderen darauf, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist. Werden einfach nur die Bits in ein getrenntes Word fürs HMI kopiert, dann funktioniert die Animation trotzdem nicht, wenn jeweils mehr als 1 Bit gesetzt ist.

Harald

Ja, Entschuldigung, ich habe mich nicht klar genug ausgedrückt, das hab ich doch gemeint.
 
Servus,

bekomme leider nur ungültiger Ausdruck :confused:
hab ich was falsch eingetragen?

Hab´s jetzt noch mal mit den Bereichen probiert.
Hier muss ich alle Bit Kombination eintragen, funktioniert, ist aber viel Arbeit.

Grüße
 

Anhänge

  • Ausdruck ungültig.JPG
    Ausdruck ungültig.JPG
    29,7 KB · Aufrufe: 18
Gibt das WinCC eine detaillierte Meldung was an dem Ausdruck nicht passt?
Gibt es in der WinCC Hilfe keine Beispiele für Ausdrücke?
Das meiste von dem Ausdruck kannst Du ja zusammenklicken: die Variable und das AND. Was macht das 2. Icon mit dem "VB"?
Möglicherweise gefällt ihm nicht die hexadezimal-Konstante. Vielleicht muß die Variable auch in doppelte Hochkomma oder ohne Hochkomma geschrieben werden?

Versuche mal
'TEST1' AND 0x46
'TEST1' AND 16#46
'TEST1' AND &H46
'TEST1' AND 70

PS: siehe Bild im Anhang - so sieht das in WinCC Prof classic (V7.x) aus

Harald
 

Anhänge

  • Animation_Bereich.png
    Animation_Bereich.png
    18,4 KB · Aufrufe: 19
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
'TEST1' AND &H46
'TEST1' AND 70

Die beiden gehen, nur ändert sich keine der Farben.
Es wird immer die Standard Farbe angezeigt

Bei dem VB Icon, kann man ein Script einfügen
 

Anhänge

  • Ausdruck okJPG.JPG
    Ausdruck okJPG.JPG
    37,2 KB · Aufrufe: 15
Es kommt weniger auf das getrennte Word an, sonderen darauf, daß von den Bits 1,2,6 und 9,10,14 jeweils immer nur höchstens 1 Bit = 1 ist. Werden einfach nur die Bits in ein getrenntes Word fürs HMI kopiert, dann funktioniert die Animation trotzdem nicht, wenn jeweils mehr als 1 Bit gesetzt ist.
Das verstehe ich nicht, Harald.
Ich habe es so verstanden, dass mit dem höherwertigen Byte des Wortes das Band2 gesteuert werden soll und mit dem niederwertigen das Band1.
Wenn aber das HMI für die Darstellung von Band1 und Band2 gleichermassen immer auf dasselbe komplette Wort schaut,
- dann müssten die BereichsZahlen bei Band2 256-mal so gross sein, wie bei Band1
- dann dürfte jegliche 1 im höherwertigen Byte dafür sorgen, dass der Wert für Band1 "hoffnungslos übersteuert" wäre, wohingegen sich die Anzeige von Band2 nicht durch Einsen im niederwertigen Byte beeindrucken lassen sollte.
Mehr als jeweils ein einziges Bit auf 1 kann doch eigentlich nicht das Problem sein. Solange die Bytes nicht getrennt ausgewertet werden, können die beiden Bänder nicht unabhängig voneinander beeinflusst werden!?
In den ScreenShots in #3 sehe ich Test1 mit DB74.DW80 und Test2 - oh Wunder - auch wieder mit DB74.DBW80. Könnte man hier nicht alternativ die Bytes DB74.DBB80 (für Band2) und DB74.DBB81 (für Band1) adressieren?
 
Die Idee hatte ich auch schon , das ich aus einem WORD zwei BYTE mache, nur muss ich dazu alle Excel Tabellen nochmal bearbeiten.
Die HMI Meldungen sind schon fertig, mit WORD, wenn ich jetzt noch zusätzlich Variablen mit Byte mache, bekomme ich wieder Probleme mit der Tags Anzahl??
Hätte aber den Vorteil, mit den Farben, und das ich dann nicht mehr unterschiedliche Animations Eigenschaften für BYTE rechts / links habe.

Ich habe jetzt mal die Bit Kombination für unsere Bänder als Bereich eingetragen, das wird eine lange Liste und dann noch zwei verschiedene.

Ich hänge ein paar Beispiel Screenshots an, hier sind man dann die diversen Bits, DEZ und HEX
 

Anhänge

  • 14.JPG
    14.JPG
    20,9 KB · Aufrufe: 12
  • 13.JPG
    13.JPG
    21,8 KB · Aufrufe: 9
  • 12.JPG
    12.JPG
    21,4 KB · Aufrufe: 12
  • 11.JPG
    11.JPG
    20,3 KB · Aufrufe: 9
  • 10.JPG
    10.JPG
    22,1 KB · Aufrufe: 11
Zuviel Werbung?
-> Hier kostenlos registrieren
In den ScreenShots in #3 sehe ich Test1 mit DB74.DW80 und Test2 - oh Wunder - auch wieder mit DB74.DBW80. Könnte man hier nicht alternativ die Bytes DB74.DBB80 (für Band2) und DB74.DBB81 (für Band1) adressieren?
Hallo Heinrich,
kann man machen, doch dann braucht man doppelt so viele "PowerTags". Der Preis für die WinCC Prof Runtime Lizenz richtet sich nach der Anzahl verwendeter PowerTags. Üblicherweise ist PowerTag-Sparen angesagt.
Die Bänder werden nicht gesteuert, es wird nur ihr Zustand angezeigt.
Die für ein Band nicht relevanten Bits werden durch den "Ausdruck" ausgeblendet. Für das Band, was die Bits aus dem höherwertigen Byte benutzt, hatte ich in #7 geschrieben:
Beim Band was die Bits 9,10,14 verwendet, sind die gleichen Bereiche (2 bis 127), nur der Ausdruck lautet dann:
Code:
    : 'MyAnimationWord' / 256 & 0x46
oder: ('MyAnimationWord' / 256) & 0x46
oder: 'MyAnimationWord' & 0x4600 / 256

Harald
 
Mehr als jeweils ein einziges Bit auf 1 kann doch eigentlich nicht das Problem sein.
Das ist ein Problem in WinCC, wenn die Bits nicht im Modus "Bereich" sondern im Modus "Mehrere Bits" bzw. "Binär" ausgewertet werden. Da darf jeweils nur max 1 der verwendeten Bits 1 sein. Wenn mehrere Bits 1 sind, dann will WinCC nicht entscheiden, welche Animation ausgeführt wird und führt gar keine aus (Farbe Grundzustand ohne Animation).

Harald
 
'TEST1' AND &H46
'TEST1' AND 70

Die beiden gehen, nur ändert sich keine der Farben.
Es wird immer die Standard Farbe angezeigt
Die Formel in Deinem Ausdruck ist falsch: 'TEST2' AND &H46/256
muß lauten
'TEST2'/256 AND &H46
oder
('TEST2'/256) AND &H46
Außerdem musst Du die Bereiche so angeben wie ich in #7 schrieb
Code:
[COLOR="#0000FF"] 2 - 3    rot
 4 - 63   orange
64 - 127  grün[/COLOR]
Sind mehrere Bits=1 dann bestimmt das höherwertigere 1-Bit die Farbe.

Beim Band was die Bits 9,10,14 verwendet, sind die gleichen Bereiche (2 bis 127), nur der Ausdruck lautet dann:
Code:
    : 'MyAnimationWord' / 256 & 0x46
oder: ('MyAnimationWord' / 256) & 0x46
oder: 'MyAnimationWord' & 0x4600 / 256
Dann brauchst Du auch nur 3 Bereiche.

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
1. kann man machen, doch dann braucht man doppelt so viele "PowerTags". Der Preis für die WinCC Prof Runtime Lizenz richtet sich nach der Anzahl verwendeter PowerTags. Üblicherweise ist PowerTag-Sparen angesagt.
2. Die Bänder werden nicht gesteuert, es wird nur ihr Zustand angezeigt.
3. Die für ein Band nicht relevanten Bits werden durch den "Ausdruck" ausgeblendet.
4. Für das Band, was die Bits aus dem höherwertigen Byte benutzt, hatte ich in #7 geschrieben:
1. Verstanden, ein durchaus übliches Problem ;)
2. Für mein Verständnis waren/sind die Bänder Rechtecke in der Visu, deren Farbe gesteuert werden soll.
Pro Band 1 Byte und in dem Byte Bit1 für rot, Bit2 für orange und Bit 6 für grün (und vermutlich blau bei "weder/noch"). Die Zuordnung der Farben in den Bildern in #14 scheint etwas anders zu sein.
3. Die übrigen Bits der Bytes können für andere Zwecke belegt sein und müssen deshalb ausgeblendet, d.h. mit der Maske &H46 verUNDet werden.
4. Zusätzlich muss das höherwertige Byte eines Wortes z.B. vor der Maskierung durch 256 dividiert bzw. um 8 BitPositionen nach rechts geschoben werden.
Aber wo passiert das? Das habe ich nicht verstanden. Kann man die Projektierung des HMI denn so überlisten, dass es für 2 unabhängig voneinander in der Farbe zu beeinflussende Bänder dasselbe Wort/Tag liest und in dem einen Fall nur maskiert und mit den "BereichsGrenzen" 2, 4 und 64 vergleicht und im anderen Fall zuerst noch schiebt und dann erst maskiert und mit den BereichsGrenzen 2, 4 und 64 vergleicht? Wo baue ich denn die "Dekodierung" und die Weiche ein, die diese Informationen an die 2 Bänder weiterleitet? Für mein Verständnis müsste eine Routine dies tun und die Ergebnisse in 2 HilfsVariablen ablegen und das HMI müsste "wissen", dass es statt auf das projektierte Wort auf zwei ganz andere, nämlich diese HilfsVariablen gucken muss. Da hakt mein Verständnis aus, da ich leider keine Ahnung von diesen WinCCs in den verschiedensten Varianten habe. :confused:

Gruss, Heinileini
 
Kann man die Projektierung des HMI denn so überlisten, dass es für 2 unabhängig voneinander in der Farbe zu beeinflussende Bänder dasselbe Wort/Tag liest und in dem einen Fall nur maskiert und mit den "BereichsGrenzen" 2, 4 und 64 vergleicht und im anderen Fall zuerst noch schiebt und dann erst maskiert und mit den BereichsGrenzen 2, 4 und 64 vergleicht?
Ja! Das ist in WinCC Prof ohne weiteres möglich, weil man bei der Animations-Projektierung nicht nur eine Variable sondern einen Ausdruck angeben kann. Siehe das Bild in #12, da ist die Formel des Ausdrucks allerdings falsch - da kommt immer 0 raus ;), deswegen funktioniert die Animation da nicht.

Man kann die Variable mit verschiedenen Ausdrücken auswerten.
Für das eine Band projektiert man die Animation mit dem Ausdruck: 'Steuervariable' AND &H46
Für das andere Band projektiert man die Animation mit dem Ausdruck: 'Steuervariable' / 256 AND &H46
Dadurch kann man beide Male die selben Bereiche verwenden - Copy&Paste und danach den Ausdruck anpassen.

In dem Ausdruck können auch mehrere Variablen verwendet werden, so daß man sogar noch eine Oder-Funktion hat, um das selbe Objekt abhängig von mehreren Quellen zu animieren (WinCC flexible/Comfort/Advanced können das nicht).

Harald
 
Zurück
Oben