Step 7 indirekte Adressierung Byteadresse Pointer

xj900mb

Level-2
Beiträge
178
Reaktionspunkte
5
Zuviel Werbung?
-> Hier kostenlos registrieren
Moin Moin!

ich habe einen DB mit einem array [1..13] ab der adresse 210. jedes element des arrays ist 1142 Byte lang. Bei 13 Elementen ist der DB 15056 Bytes lang.
ich lade ein element des arrays zum editieren in einen anderen baustein und transferiere ihn nach dem editieren wieder zurück. das funktioniert bei meiner CPU 313 C 6ES7 313-5BF03-0AB0 nur bis zum 7ten Element. wenn ich das 8te element editieren will lädt die cpu zwar daten aber wenn ich sie wegspeicher kann ich sie im array nicht wiederfinden. als ob die indirekte adressierung ab dem 8ten Element in meinem array nicht mehr funktioniert.

nun habe ich in folgendem PDF auf seite 4 gelesen dass die maximale Byte-Adresse im Pointer CPU-abhängig ist.
kann mir jemand sagen ob das stimmt und wenn ja weiß jemand wo ich eine tabelle mit den CPUs und der max Byte-Adresse finde?

oder woran könnte mein fehler sonst liegen?

mein code für die adressierung:

// adresse berechnen
L element-Nr
L 1
-I
L 1142
*I
L 210
+I
T #Adresse

//Zeiger der Quelle bilden
L W#16#300
T LW 0
L 1142
T LW 2
L DB-Nr
T LW4
L #Adresse
SLW 3
L P#DBX0.0
+D
T LD 6 // Quell-Zeiger

// Ziel-Adresse und Ziel-Zeiger berechne ich nach dem gleichen Muster

call BLKMOV
mit Quell-Zeiger
mit Ziel-Zeiger

danke für die hilfe!
 

Anhänge

  • Adressierung_S7_2009_1.pdf
    952,1 KB · Aufrufe: 49
Nimm mal SLD statt SLW:
Code:
L #Adresse
[B]SL[COLOR="#FF0000"]D[/COLOR] 3[/B]
L P#DBX0.0
+D
T LD 6  // Quell-Zeiger

Außerdem würde ich mit Hilfe von AR1 indirekt in die ANY-Variable schreiben, statt die Absolutadresse in TEMP abzuzählen:
Code:
LAR1 P##Zielzeiger
...
L #Adresse
SLD 3
L P#DBX0.0
+D
T D [AR1, P#6.0]  // Quell-Zeiger

Harald
 
Zuviel Werbung?
-> Hier kostenlos registrieren
jetzt ist alles klar! weil ich mit SLW nur im wort schiebe gehen die drei linken bits meiner berechneten adresse verloren und der rest ergibt dann irgendeine andere adresse. deswegen schreibt der die daten in einen anderen bereich und macht mir die anderen daten kaputt.

Vielen Dank für die schnelle Hilfe
 
Zurück
Oben