WinCC Flex, mehreer Variablen an einem Schalter anzeigen

Ich versuch's mal zu erklären...

Wir nehmen jetzt mal nur den FB 1020 (Rolltor). Da wir immer wieder mal Rolltore als Schutztüren für Maschinen einsetzen, habe ich mir diesen FB "gebastelt" ,um nicht immer wieder dieselbe Programmierung durchzuführen zu müssen. Bei Dir wären das die 250 FUs.

In dem FB 1020 arbeite ich ausschließlich mit lokalen Variablen. IN, OUT, STAT usw. Es gibt keine einzige Variable, die direkt adressiert ist. Somit bin ich unabhängig von den äußeren Gegebenheiten und kann den FB in allen Projekten, die ein Rolltor haben einsetzen (Faulheit siegt!). Alles was ich brauche hole, ich mir über die IN-Variablen rein. (Ich programmiere symbolisch, habe das aber hier ausgeblendet, damit oben bei der Variablendeklaration ersichtlich wird, daß der Datentyp ein FB ist).

Im FB 1020 wird jetzt "nachgeschaut", ob das Rolltor geöffnet oder geschlossen werden soll und die entsprechenden Ausgänge angesteuert. Außerdem wird über OUT "Status" der Zustand gemeldet (geöffnet, geschlossen, fährt auf, fährt zu, gestört). Dieses Byte nutze ich für die Visualisierung.

Wenn Dein FB für die FUs fertig ist (z.B. FB 1), nimmst Du einen neuen FB (z.B. FB 2). In der Schnittstellendeklaration von FB 2 definierst Du jetzt unter STAT die Variablen FU_001, FU_002 usw. vom Datentyp FB 1.
Anschließend erscheinen die FU_x unter Multiinstanzen (gilt nur für diesen FB, andere Multiinstanzen für andere Bausteine sind nicht sichtbar!).
Mittels Drag & Drop ziehst man die Instanzen jetzt in einzelne Netzwerke. INs und OUTs beschalten und fertig.

Wenn jetzt der FU 2 mit DB 2 aufgerufen wird, sind alle Daten der Multiinstanzen im DB 2 enthalten. Man braucht also nicht mehr für jeden FU_x den zugehörigen DB_x generieren.

Ob du allerdings alle 250 FUs in einem FB unterkriegst hängt von der Größe des FB 1 ab. Evtl. mußt Du mehrere FBs mit Multiinstanzen anlegen.

Gruß
maweri
 
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
Ich mach das auch so, aber ich nehme da nur eine FC, reicht ja vollkommen aus.
Wenn etwas dazu kommt einfach erneut aufrufen ohne jedes mal den Instanz-DB neu zu generieren.
 
Moin,

Maweri, das ist ja mal geil. Klappt perfekt nach deiner Anleitung.

Leider hat das Ganze einen kleinen Nachteil, wenn ich einen Zustand hab, wird dieser gespeichert. Wenn quasi beide Eingänge gleichzeitig anstehen, wird nur der angezeigt der als erstes aktiv war/ist.

Soweit wie ich das jetzt gerade zumindest in meinem Halb-Müden-Zustand beurteilen kann. Hab das gerade mal hier zuhause ausprobiert, werd es morgen im Büro noch ausführlich test.

Besten Dank
 
wenn du mein beispiel genommen hast kann immer nur ein Zustand
angezeigt, dieses wird dann auch noch nach pirorität sotiert.
D.h. erst immer die Störmeldung, dann Gelb die Warnung und dann
Grün Ein. Willst du eine anderes verhalten kannst du durch tauschen
der Reihenfolge in der Sprungauswahl oder durch Binäre Verknüpfungen
der Eingänge ändern.
 
Moin Steve,

sach ma' bist Du gerade in unsere Zeitzone oder auf Nachtschicht???

Wie dem auch sei, Helmut FB "Status" entspricht in meinen Beispiel FB 1. Der FB "Zuweisen" wäre dann mein FB 2.

Bekanntlich führen viele Wege zum Ziel, welchen man wählt hängt auch ein bischen von den eigenen Vorlieben ab.

Jedenfalls hab ich hier auch was gelernt.:idea: Helmuts Version der Statusermittlung ist doch um einiges eleganter als meine bisherige Version.
Werde die für zukünftige Aufgaben mal abkupfern:D.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Abend,

ne du ich liegt schon in der gleichen Zeitzone wie du, aber ich leider z.Z. soviel zutun das ich quasi immer arbeiten. Außerdem schlagen mir solche "Problemchen" immer auf den schlaf. Da lieg ich dann im Bett und denk sowieso nur noch an mein Programm, da kann ich mich auch direkt wieder davor stezten.

So genug von meinen Nächten. ;-)

Ich find die Lösung auch extrem professionel. Von daher besten Dank nochmal.

Gruss
Steve
 
Ich nochmal.

Hab jetzt wie besprochen alle zugewiesen. Doch leider muss ich dann in Flex feststellen das ich dort gar nicht den Wert zuwesien kann.

z.B. DB16.DBB97
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Möchte meinem Schalter jetzt gerne unter Gestaltung dieses Byte zuweisen damit dieser die entsprechende Farbe annimmt.

1 = Rot
2 = Grün
3 = Gelb



Schaltfl%e4che.JPG
 
... ich kann es jetzt gerade nicht gegenchecken ... es kann aber sein, dass dein Problen daher rührt, dass ein DBB ein Byte und kein Integer ist.
Wenn das so ist, dann folgende Alternative :
Du machst die Gestaltung binär und weißt in deinem FB nicht die Zahlemwerte 1,2,3 sondern 1,2,4 zu. Dann könntest du als Bit dann 0,1,2 für die farben nehmen ...

Gruß
LL
 
Hallo Steve,
an der stelle kannst du nicht, so wie du es gemacht hast die Variable
eintragen. Schau doch mal im Menü unter Komunikation, da kannst
du erst mal die Steuerung anlegen mit der du Komunizieren möchtest.
Und dann weiter im gleichen Menü kannst du die Variablen anlegen,
sinnvollerweise in eigenen Ordern der Funktion entsprechent.
Hast du die Variable kannst du die dann später in deiner Animation
auswählen.

@LL
Übrigens Byte geht wenn du Integer ausgewählt hat, ich nehme
dafür auch immer nur Byte weil 256 zustände sind eine ganze
menge.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ne, mein Fehler. Das kommt wenn man 3h wie ein Doofer nur Zahlen ändert. :-(

Ich hab den falschen DB ausgewählt. Muss den Status-Stein einfach nehmen.

Mensch, mensch.
 
Zurück
Oben