WinCC flex Problem Bitverarbeitung im Skript innerhalb Bildbaustein

MRose

Level-1
Beiträge
120
Reaktionspunkte
19
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Zusammen,

habe folgendes Problem:

Im Bildbaustein habe ich eine Eigenschaft "Fehler" als Bool definiert. Daran hängt außerhalb des BB eine Variable, die aus einem Variablenarray über 8 Bits mit Anbindung an eine S7 stammt. Innerhalb des BB habe ich "Fehler" an ein E/A-Feld gehangen und lasse mir den Wert anzeigen. Das passt soweit.

Jetzt muss ich den Inhalt von "Fehler" noch weiter verarbeiten. Also ein bestehendes Script innerhalb des BB erweitert. Nach vielen Versuchen sieht es jetzt noch so aus:
Code:
Dim bytMeldung, [COLOR=#ff0000]bytFehler
[/COLOR]bytMeldung = SmartTags("Properties\Grenzwert") And SmartTags("Properties\Meldemaske")
[COLOR=#ff0000]bytFehler = SmartTags("Properties\Fehler")
[/COLOR]SmartTags("Anz_Alarm")=(bytMeldung And 9) And SmartTags("Properties\Sichtbarkeit")
SmartTags("Anz_Warnung")=bytMeldung And 6
[COLOR=#ff0000]SmartTags("Anz_Fehler")=bytFehler[/COLOR]

Lass ich mir jetzt die Variable "Anz_Fehler" (Byte) in einen E/A-Feld im BB anzeigen, erhalte ich mit Start der Visu den Wert 0 oder 255. Und der bleibt unabhängig von Änderungen in "Fehler" stur stehen. Der schwarze Rest vom Script (Altbestand) funktioniert problemlos.

Was hab ich versucht:
- temporäre Dateien löschen
- "Anz_Fehler" als Bool definiert
- "Fehler" direkt auf "Anz_Fehler" geschrieben
- "Fehler" mit =True, >0, <>0 ausgewertet

Langsam gehen mir die Ideen aus. Hat jemand noch einen Tipp für mich?

System:
WinCC flex 2008 SP2 Upd 12
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Mir ging auch schon der Gedanke durch den Kopf. Allerdings handelt es sich ja um das Script im BB. Ich wüsste nicht, wie ich da die Scriptbearbeitung definiert anstoßen kann.


Ok, ich hab's. Die Eigenschaften des BB haben natürlich Ereignisse und da muss ich das Script aufrufen. :oops:
 
Zuletzt bearbeitet:
Du brauchst ne Wertaenderung! Z.B. Taktmerker aus der Steuerung...
Hatte auch schon mal das Problem... Wenn dir 2x100ms fuer ne Wertaenderung reichen...
 
Danke für den Hinweis. Allerdings ändert sich das Bit vermutlich selten bis nie. Da wäre ein regelmäßiger Trigger übertrieben.
Ich hatte es ja schon mal richtig gemacht, nur leider war das Wissen in den letzten 2 Jahren seit die Anlage läuft wohl abhanden gekommen. ;)


Ich hab jetzt aber ein anderes Problem.
Ich kann zwar über das Ereignis innerhalb des BB das Script aufrufen, allerdings kann ich dann an den BB mein Bit aus dem Array nicht mehr dranhängen.
Erstell ich im flex selbst eine interne Variable und kopiere über ein Script das Array-Bit da rüber, kann ich die Variable zwar an den BB hängen, das Ereignis innerhalb des BB tritt aber nicht mehr ein. Grund ist, dass die Variablenänderung nicht durch Bediener/Steuerung erfolgt.
Ich muss die Bits scheinbar wirklich einzeln aus der Steuerung hochfuddeln, damit ich die im flex so verarbeiten kann, wie ich es brauche.

Manchmal wünsche ich mir, ich hätte einen der verantwortlichen SW-Entwickler von S in Schlagweite. :sb6:
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Beim letzten geb ich dir recht!
Wie oft hast du denn den BB instanziert?!? Mehr als 3mal?? Wenn nicht würde ich den BB auflösen...
Ich habe fast gar keine BB's mehr im Einsatz weil es nur Probleme gibt... Auch mit Textlisten in denen eine Variablenliste eingebettet ist. Einmal erstellt funktioniert das ganze - eine Änderung dran und es geht nichts mehr... Siemens weiss von dem Problem - kann aber nichts machen.
 
Der BB ist mehr als 3x im Einsatz.

Im Prinzip finde ich BB für Dynamisierungen im Bild schon ganz hilfreich. 1x erstellt, 1x ordentlich getestet, pro Messstelle ins Bild gezogen, Variablen/Eigenschaften eintragen, fertig. Spätere Änderungen macht man 1x im BB und man hat mit einem Schlag 15 Anzeigen geändert.

Hier ist allerdings die Besonderheit, dass ich die BB bzw. die Elemente darin dynamisch ein-/ausblenden muss. Leider war die Animation teilweise schon verwendet und da begannen meine Probleme ... ;)
 
Zurück
Oben