TIA TIA Bit aus Struct in SCL auswerten

SCL_Nubie

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

ich bin relativ neu in der TIA Welt und mit SCL unterwegs, daher verzeiht mir meine evtl. ungenaue Ausdrucksweise.
Wir Stellen gerade von S7 Classic V5.5 auf TIA V14 um und testen gerade wie wir unsere alten AWL/FUP Funktionen in SCL umsetzen können.
Hier mein aktuelles Problem:
Wir haben einen Datenbaustein mit 6 Strukturen(Jeweils gefüllt mit Störungen als einzelne Bits).
Jetzt wollen wir erkennen/auswerten wenn sich ein Bit in der Struktur auf 1 ändert.
Im AWL gibt es dafür den Befehl CompType mit dem wir zwei Strukturen miteinander Vergleichen können und ein Ergebnis rausbekommen.

Gibt es etwas ähnliches auch für SCL?

Oder muss man alles Wortweise durchschleifen und Vergleichen?

Grüße und schönes Wochenende

Der SCL_Nubie
 
Hall SCL_Nubie,

bin jetzt in Tia auch gerade nicht hoch Fit glaube aber das das du das mit ganz Normal mit >= und so weiter abfragen kannst.

würde ich mal testen.

MFG TIA
 
Jetzt wollen wir erkennen/auswerten wenn sich ein Bit in der Struktur auf 1 ändert.
Im AWL gibt es dafür den Befehl CompType mit dem wir zwei Strukturen miteinander Vergleichen können und ein Ergebnis rausbekommen.

Gibt es etwas ähnliches auch für SCL?
In SCL kannst Du zwei Strukturen direkt mit einem Vergleichsausdruck vergleichen, allerdings nur auf = (gleich) oder <> (ungleich):
Code:
IF Struct_A = Struct_B OR Struct_C <> Struct_D THEN ...
siehe TIA Hilfe zu SCL "Vergleichsausdrücke" > Vergleich von Strukturen

Ein Ergebnis "Ungleich" liefert allerdings keine Information, ob Bits gekommen oder gegangen sind. Wenn bei Euren Störungsbit-Strukturen gleichzeitig Bits kommen und andere Bits gehen können, dann mußt Du jedes einzelne Bit vergleichen - der vorherige Vergleich der Gesamtstruktur bringt also nichts außer Rechenzeitverschwendung. (Die AWL-Anweisung CompType ist in dem Fall ebenfalls sinnlos.) Um den Vergleich der Bits möglichst effizient zu machen, sollten die Strukturen in nicht-optimiertem Speicher (ohne Padding-Lücken!) liegen, dann könntest Du die Strukturen mit einem (D)WORD-Array überlagern (AT) und (D)WORD-weise auf gekommene Bits untersuchen.

Harald
 
Vielen Dank erstmal,
habe den Tipp von Wincctia und PN/DP befolgt und einen Direktvergleich der Strukturen geschrieben, was wunderbar Funktioniert!!!
Dachte nicht das der Vergleichsbefehl mehr als ein DInt packt aber ich werde immer wieder positiv vom SCL Editor überrascht!!!
Da wir gerne nur noch mit optimierten Datenbausteinen arbeiten möchten, fällt die AT Variante für uns erst mal raus...

Danke nochmal,

der SCL_Nubie :D
 
Zurück
Oben