Anzahl der Elemente in einem globalen DB

elfriso

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

Folgendes Problem: Haben mir einen FC geschrieben, welcher einen gewissen Bereich eines DB welcher nur aus bytes besteht, in einen anderen DB kopiert.
Als IN Parameter kann dabei die jeweilige Nummer des Quell und Ziel DBs, sowie der Bereich des Quell und der Bereich des Ziel DBs angegeben werden. Funktioniert soweit auch.

Die AWL Anweisung DBLG liefert bei einem DB mit 10 Einträgen den Wert 10. Soweit so gut. Sie liefert aber bei 9 Einträgen ebenfalls 10. Das gleiche passiert wenn ich den SFC 24 verwende.

WIESO?????

Bitte um Hilfe
 
Weil immer mit geraden Anfangsadressen gearbeitet wird.

Beispiel: Deklariere in einem DB 8 BOOL und einen INT, und siehe was passiert.

Grüße

Marcel
 
Probier mal folgendes:
Schieb den DB mit den 9 Einträgen in die CPU und schau mit der vat auf den 10. Eintrag.
Kann gut sein dass der Speicherberich existiert, obwohl laut deklaration nicht vorhanden.
Wenns so ist hast zumindest im Programm keine Zugriffsfehler...
 
Wie kann ich dann die Anzahl der Einträge ermitteln?
Genau so wie du das oben schreibst ...

Der DB endet immer bei einer geraden Byteanzahl, vollkommen egal was deklariert ist.

Wenn du also 9 Byte deklarierst ist der DB bzw. der Bereich im DB trotzdem 10 Byte lang, und auf dieses 10te Byte könntest du auch ohne Symbolik jederzeit zugreifen.

Mfg
Manuel
 
Zurück
Oben