Step 7 DB in SCL durchsuchen (Pointer?)

Nico1977

Level-1
Beiträge
59
Reaktionspunkte
6
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo an alle,

meine SCL- und Pointerkenntnisse sind sehr bescheiden. Deshalb will ich mich da etwas weiterbilden.
Für ein vielleicht zukünftiges Projekt will ich ein paar Ideen ausprobieren.

Mein erstes Ziel ist grob gesagt einen DB (alles bool) zu "durchsuchen".

Ich übergebe also die DB-Nummer und will sinngemäß folgendes mit SCL tun:
-----
DBNr = DB_Nummer
Pointer = 0.0

FOR zähler= 0 TO 31 BY 1 DO
IF DB[DBNr].DBX[Pointer]=1 THEN .....

Pointer erhöhen
zähler erhöhen
END FOR
-----

Ich weiß nur nicht, wie ich mit Pointern in SCL arbeite.
Wenn es in SCL für so etwas einen "eleganteren Ansatz" gibt, möchte ich mir den auch gern ansehen.

Danke.
 
Hallo,
naja ... das war ja schon nicht so schlecht. Es müßte nur eher so heissen :
Code:
myBool := DB[DBNr].DBX[ByteNummer , BitNummer]
Du kannst dir natürlich die ByteNummer und die BitNummer der jeweiligen DB-Adresse auch aus einem Index zurückrechnen.
Wie hast du das denn genau vor ?

Gruß
Larry

Nachtrag :
END_FOR erhöht automatisch die Variable der FOR..TO-Schleife um die angegebene Schrittweite (BY ...). Du mußt Zähler also nicht erhöhen ...
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Danke @Larry Laffer,

ich möchte eine Art Störspeicher erstellen. Ich stelle mir das so vor, dass in der S7 Störungen erfasst werden.
Es gibt also einen DB und darin für jede Störung ein Bit, welches bei einer Störung 1 wird.

Ich durchsuche den DB, ob sich ein Bit geändert hat. Bei Änderung trage ich das mit Zeitstempel in einen weiteren DB, sodass ich kommen und gehen einer Störung erfassen kann.
Ähnlich dem Meldefenster in WinCC flexible.

Wir haben meist ein übergeordnetes "fremdes Automatisierungssystem", welches unsere Störungen erfasst, auswertet,...
Ich will halt die Störungen auch intern erfassen, um bei Problemen vergleichen zu können und das Problem zu lösen/finden.

Zum Durchsuchen des DB mit den Störungen stelle ich mir vor, dies als Schleife in SCL zu probieren. Vor allem auch als SCL-Übung für mich.
Ich dachte mit Pointern ist es am einfachsten. Bit anfragen - Pointer erhöhen - nächstes Bit abfragen - Pointer erhöhen - ...
Das ganze in einer FOR-Schleife mit der Anzahl der zu prüfenden Bits.

Wie gesagt, im Moment eher für mich als Übung/Weiterbildung. Deshalb hab ich auch keinen Druck und kann viel probieren und lernen.
 
Zum Durchsuchen des DB mit den Störungen stelle ich mir vor, dies als Schleife in SCL zu probieren. Vor allem auch als SCL-Übung für mich.
Ich dachte mit Pointern ist es am einfachsten. Bit anfragen - Pointer erhöhen - nächstes Bit abfragen - Pointer erhöhen - ...
Das ganze in einer FOR-Schleife mit der Anzahl der zu prüfenden Bits.
Schau Dir mal den 2. FB in diesem Post an.

Dort werden in den FOR-Schleifen (Anzahl der Bits) die Ein- bzw. Ausgänge byte/bitweise der Reihe nach angesprochen.
Das wäre ja dann das Gleiche wie bei Dir die Bits im DB.
 
Zuletzt bearbeitet:
Zurück
Oben