TIA Datenbaustein auf <> 1 vergleichen

Deep Blue

Level-2
Beiträge
443
Reaktionspunkte
17
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen,

wie kann ich einen Datenbausteininhalt auf ungleich 1 vergleichen? Ich habe dort sehr viele Störmeldungen drin und möchte, sofern eine dieser Meldungen 1 ist diese mit einer Lampe melden.

Achja, ich habe immer Bool's genutzt, reserviere aber auch bestimmte Bereiche als Byte.

Danke für eure Hilfe!
 
Vergleiche jede Datenbausteininhalt-Teilvariable auf <> 1
Suchen willst du aber eigentlich einen Wert der = 1 ist? Warum dann verwirrenderweise mit negierter Logik auf <> 1 vergleichen?

Wie der Vergleich gemacht werden kann, kommt jetzt darauf an, was für eine SPS du hast und womit du programmierst. Aber das hast du uns nicht verraten ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Wenn du keine Auswertung benötigst welche Störung ansteh (alos Summenstörung): jedes DWord aus deinem DB auf >0 abfragen, die eizelnen Abfragen dann mit Oder auswerten wäre da ein Ansatz den ich dafür verfolge.
 
Hallo, ich habe eine 1517 im Einsatz und bin für SCL oder FUP offen. In VB würde ich eine Schleife nutzen und dann auch gleich die Anzahl der Variablen mit zählen, welche True sind. Wenn ich den DB in ein Array schiebe, wäre dann sowas machbar? Oder vielleicht brauche ich das ja gar nicht und es gibt schon solch eine Funktion im TIA V19?
 
Spreche ich dann die Adressen so an: Datenbausteinname.i und erhöhe i um 2 damit ich immer ein Int lese? Sorry wenn ich so doof frage, aber mit einem DB hab ich so noch nicht gearbeitet.
 
Das Einfachste wäre tatsächlich wenn du, wie von dir vorgeschlagen, in dem DB ein Array deklarierst. In dem Fall kannst du das dann tatsächlich ähnlich dem machen wie du es von VB schon kennst.
Zu dem Thema "DB durchsuchen" oder ähnlich haben wir im Forum sicher auch schon ettliche Beiträge mit Beispielen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, ich habe eine 1517 im Einsatz und bin für SCL oder FUP offen. In VB würde ich eine Schleife nutzen
Um eine Schleife nutzen zu können, braucht man zuerst mal etwas, was man in einer Schleife indirekt adressieren kann, z.B. ein Array (da kann man mit variablem Index adressieren), oder man adressiert direkt die Adressen. Wenn der DB "optimiert" ist, dann gibt es keine Adressen, die man adressieren könnte. Adressen gibt es nur bei DB mit Standard-Zugriff.
Vermutlich ist dein DB mit den Meldebits kein Array. Dann entweder umdeklarieren als BOOL-Array oder in einen Speicherbereich umkopieren, der als Array deklariert ist. Eventuell kann man die Struktur des Meldebit-DB auch mit einem Array überlagern - Stichwort: "AT". Wenn man die 1-Bits nicht zählen muss, sondern nur wissen will, ob mindestens ein Bit = 1 ist (üblich und besser: ungleich 0 ist), dann bietet es sich aus Performancegründen an, mit einem Array of Word (16 Bits auf einmal) oder DWord (32 Bits auf einmal) zu arbeiten (wie in den Beiträgen #3 und #4 genannt).
Wie man DB mit Meldebits nach 1-Bits durchsucht, gab es hier schon einige Beiträge.
 
Zurück
Oben