Mit Integerwert DB Bit setzen fortlaufend

Würde es vielleicht mit analogmeldungen funktionieren. Könnte doch die integer auf größer 0, großer 1, größer 2 usw abfragen und dann die entsprechende Meldung absetzen oder würde dies in wincc nicht funktionieren.
 
Es gibt viele Wege, doch warum liest du nicht deine Zahl und machst ein Bit daraus?
Das ist echt nicht schwer ;-)


bike
 
Also ich würde dir als Lösung die Summe von Larry und JoopB empfehlen:
NW 1 : SFC21
NW 2 : Bit setzen nach Index
Da brauchst du nichts 2000 mal aufrufen.
Dein Programm läuft durch und löscht alle Bits, anschließend wird im gleichen Zyklus das richtige Bit wieder gesetzt.
Alternativ kannst du auch den SFC21 nur aufrufen wenn sich die Index Variable geändert hat:
Dazu Index auf einen statische Variable speichern und im nächsten Zyklus abfragen ob Index <> Alter Index, wenn ja SFC21.
 
Dito,
Statt SFC20 würd ich ne kleine Schleife im 1. NW bauen zum nullen. So viel ich weiß muss man beim SFC20 als Quelle einen Speicherbereich mit gleicher Länge wie das Ziel angeben. Also braucht man 2 identische DBs.



Code:
//--- DB nullen vor dem setzen des Alarmbits...

AUF DBxxx     // DB aufschlagen
LAR1 P#0.0    // ar1 initialisieren

L x          // Anzahl Bytes im DB
M001: T #Counter

L 0
T DBB[ar1,p#0.0]

+AR1 P#1.0     // Adresse um 1 Byte erhöhen

L #counter      // Schleifenzähler laden. Wird von Loop decrementiert und bei M001 zurückgeschrieben...
LOOP M001     // und wieder von vorn

...                 // hier kannst du nun dein bit über den index setzen
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Dito,
Statt SFC20 würd ich ne kleine Schleife im 1. NW bauen zum nullen. So viel ich weiß muss man beim SFC20 als Quelle einen Speicherbereich mit gleicher Länge wie das Ziel angeben. Also braucht man 2 identische DBs.
Hallo EyeQ,
da hast du was überlesen.
JoopB und ich meinen den SFC21 (Fill), da wird nur das Ziel angegeben und als Eingangsparameter mit was das Ziel gefüllt werden soll.
Am einfachsten ein leeres Merkerbyte als Eingangsparameter und als Ziel den entsprechenden DB.
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Na klar ... dann mußt du nur ein wenig rechnen, denn die 1.Meldung (Bit 0) liegt im Byte 1.0, die 9.Meldung liegt im Byte 0.0, die 17. im Byte 3.0 usw.
Das geht also nur in dem du dir einen "Hilfszeiger" errechnest - oder die Meldungen in der Visu entsprechend umsortierst ...

Gruß
Larry
 
Zurück
Oben