-> Hier kostenlos registrieren
Guten Abend,
ich versuche mich grad mal ein wenig in indirekter Addressierung und Teste damit auch ein bisschen rum. Habe mir jetzt mal eine Schleife zum Auslesen von mehreren Werten gebaut.Insgesamt sollen 8 Worte kopiert werden, leider geht die CPU immer in Stop mit der Meldung Bereichslängen überschreitung Schreiben.
Anbei mal die Diagnosemeldung. Aus irgendeinem Grund will die CPU auf die Addresse die im AR2 steht im IDB zugreifen und schreiben!?
Gruß Marcel
ich versuche mich grad mal ein wenig in indirekter Addressierung und Teste damit auch ein bisschen rum. Habe mir jetzt mal eine Schleife zum Auslesen von mehreren Werten gebaut.Insgesamt sollen 8 Worte kopiert werden, leider geht die CPU immer in Stop mit der Meldung Bereichslängen überschreitung Schreiben.
Anbei mal die Diagnosemeldung. Aus irgendeinem Grund will die CPU auf die Addresse die im AR2 steht im IDB zugreifen und schreiben!?
Code:
Diagnosepuffer:
Ereignis 7 von 216: Ereignis-ID 16# 2523
Bereichslängenfehler beim Schreiben
Instanz-DB, Wortzugriff, Zugriffsadresse: 258
Angeforderter OB: Programmierfehler-OB (OB 121)
Prioritätsklasse: 1
interner Fehler, kommendes Ereignis
19:42:05.211 03.02.2012
Code:
// Startardresse des Structs ermitteln (Ziel)
LAR1 P##IN // L 10.0
TAR1
T #LOOP_IN.TAR_ADDR
// Startaddresse der Quelle an AR2 weitergeben
L #LADDR // 256
T #LOOP_IN.SOURCE_ADDR
SLD 3
LAR2
// Schleife initialisieren
L #VAR_IN // 8 (Anzahl der Werte)
INLP: T #LOOP_IN.LOOP_CNT
L 1 // Schleifenzähler dekrementieren
-I
T #LOOP_IN.LOOP_CNT
// Werte übernehmen
L PEW [AR2,P#0.0]
T LW [AR1,P#0.0]
// Zieladdresse erhöhen
L #LOOP_IN.TAR_ADDR
L 2
+I
SLD 3
LAR1
// Quelladdresse erhöhen
L #LOOP_IN.SOURCE_ADDR
L 2
+I
SLD 3
LAR2
// Prüfe ob Schleife zuende
L #LOOP_IN.LOOP_CNT
L 0
<>I
SPB INLP
Gruß Marcel
Zuletzt bearbeitet: