WinCC Flex, mehreer Variablen an einem Schalter anzeigen

Steve38

Level-1
Beiträge
486
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

ich möchte gerne mehrere Zustände an einem Schalter anzeigen lassen.

E0.0 = Schalter grün
E0.1 = Schalter rot
E0.2 = Schalter gelb

Hab den Schalter gesetzt und kann aber ja jetzt nur 1 Variable vorwählen. :-(

Quasi
0 = Anzeige aus (bzw. rot aus)
1 = Anzeige aus (bzw. rot ein)
 
Zuletzt bearbeitet:
Hallo,
du müßtest dir hierfür eine Variable (z.B. ein MB) in der SPS erschaffen, dass abhängig von deiner angelegten Bit-Matrix einen Zahlenwert beinhaltet. Diese MB nimmst du dann zur Animation deines Schalters. Aber auch hier beachten : es wird nur ein Zahlenwert ausgewertet ...!

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Steve,

dem Innenbereich kann man nur 2 Zustände (EIN und AUS) zuweisen. Die sind dann auch noch von der Variablen, die dem Schalter zugewiesen ist abhängig.
Man kann aber die Hinter- und Vordergrundfarbe (fast) beliebig anpassen.
Unter Animation -> Gestaltung als Variable EB0 angeben. Typ auf Binär setzen. Dann nur noch mit den Werten 1 (E0.0), 2 (E0.1) und 4 (E0.2) die gewünschten Farben auswählen.

Gruß
maweri
 
EB0 ist aber kein zulässiger Wert. :-(
Man muss Ihn auch deklarieren. ;-)

Besten Dank.
 
Zuletzt bearbeitet:
Entweder Du gibst zusätzlich zu E0.0, E0.1 usw. auch noch ein Symbol für EB0 ind der Symboltabelle an. Oder - wie Larry schon erwähnte - Du schreibst die Werte von EB0 z.B. in MB0 (Symbolischen Namen nicht vergessen!) und nutzt dieses.
 
Natürlich ist das bei mir so. :-(

Das 1. ist die Störmeldung und das 2. die Betriebsmeldung.

Hab es auch gerade gemerkt das dies nicht klappt. :-(
 
... dann lies dir noch einmal meinen Beitrag #2 durch. Das gibt dir die Möglichkeit, gleichzeitige Bits zu verriegeln bzw. zu bewirken, dass es trotzdem nur zu einem Zahlenwert kommt.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mh?
Das sind aber eine ganze Menge an Eingängen. :-( knappe 500 Stück. :-( Die ich so verabeiten müsste.

Hab schonmal überlegt, das ich die beiden Feld nicht gegeneinander arbeiten lassen kann, mit Sichbar/Unsichtbar. Das ich dann einfach 2 gleich große Felder übereinander lege.
 
... aber doch nicht 500 Eingänge für einen Schalter ...?

Das ist aber auch nicht das Thema ... du suchtest eine Lösung und das wäre eine ...

Gruß
LL
 
Ne, quasi für 250.

Immer Betriebs und Störmeldung.

Aber na gut, da werd ich wohl in den Apfel beissen müssen. ;-)

Besten Dank.

Gruss
Steve
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Steve überlass doch die Auswertung erstmal in der Steuerung.

Code:
    L 1
    U #Rot
    SPB SA
    L 2
    U #Gelb
    SPB SA
    L 3
    U #Gruen
    SPB SA
    L 0
SA: T #Status

Davon machst du dann einen schicken FC oder FB
und besschaltest den mit deinen Eingängen.
Mit der Variablen "Status" animierst du dann deine
Schaltfläche. So brauchst du auch nur eine Variable
in Flex, spart Arbeitszeit, Buslast und Powertags.
 
HI,

naja nicht ganz so einfach.

Ich müsste das ganze ja 250x machen.

Für jede Darstellung gibt es zwei Zuständ Rot / Grün.
Sprich 500 Eingänge.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
wenn du das in der Steuerung machst geht das relativ schnell,
so mußt du nur 250mal den Status in flex reinziehen. Wenn du
es ein wenig geschickt anstellst kannst du das sogar als Array
und mußt nur eine Variabel anbinden. Aus diesen Array heraus
kannst du dann deine Animation beschalten. Die FB's später in
Step 7 zu beschalten geht recht schnell wenn die Eingänge
Symbolisch sind. Eine andere möglichkeit wäre es sogar das mit
einer Quelle und Exel zu machen.

Möchtest du die Eingänge direkt in Flex auswerten ist das wesentlich
aufwendiger, du mußt alle Eingänge anbinden, das kostet sehr viel
Arbeitszeit und ist fehlerträchtig. Zusätzlich mußt du die Variablen
(Eingänge) an deiner Animation anbinden, also drei Einänge anstatt
ein Statusbyte. Das kostet auch Zeit und kann dich in den Wahnsinn
treiben.
 
Oh je Helmut, ich glaub soweit bin ich noch nicht. :-(
Denke nicht das ich das so hinbekommen würde, wie du es vorschlägst.
Trotzdem Besten Dank.

Werd mal Maweri´s Vorschlag test, denke das ich damit schon genug gefordert bin. ;-)
Denn so ganz verstanden hab ich die Lösung auch noch nicht. :-(
 
Oh je Helmut, ich glaub soweit bin ich noch nicht. :-(
Denke nicht das ich das so hinbekommen würde, wie du es vorschlägst.
Trotzdem Besten Dank.

Werd mal Maweri´s Vorschlag test, denke das ich damit schon genug gefordert bin. ;-)
Denn so ganz verstanden hab ich die Lösung auch noch nicht. :-(

Dann hätte ich da mal eine quelle für dich als orientierung.

Code:
FUNCTION_BLOCK "Status"
TITLE =
VERSION : 0.1


VAR_INPUT
  Rot : BOOL ;    
  Gelb : BOOL ;    
  Gruen : BOOL ;    
END_VAR
VAR_OUTPUT
  Status : BYTE ;    
END_VAR
BEGIN
NETWORK
TITLE =

      L     1; 
      U     #Rot; 
      SPB   SA; 
      L     2; 
      U     #Gelb; 
      SPB   SA; 
      L     3; 
      U     #Gruen; 
      SPB   SA; 
      L     0; 
SA:   T     #Status; 

END_FUNCTION_BLOCK

FUNCTION_BLOCK "Zuweisen"
TITLE =
VERSION : 0.1


VAR
  _1 : "Status";    
  _2 : "Status";    
  _3 : "Status";    
  Status : ARRAY  [1 .. 250 ] OF BYTE ;    
END_VAR
BEGIN
NETWORK
TITLE =Status 1

      CALL #_1 (
           Rot                      := E      1.0,
           Gelb                     := E      1.1,
           Gruen                    := E      1.2,
           Status                   := #Status[1]);


NETWORK
TITLE =Status 2

      CALL #_2 (
           Rot                      := E      2.0,
           Gelb                     := E      2.1,
           Gruen                    := E      2.2,
           Status                   := #Status[2]);


NETWORK
TITLE =Status 1

      CALL #_3 (
           Rot                      := E      3.0,
           Gelb                     := E      3.1,
           Gruen                    := E      3.2,
           Status                   := #Status[3]);


END_FUNCTION_BLOCK
 
Zurück
Oben