Step 7 LAR2 löscht FB-Eingänge ab

Stefan_

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

ich möchte per Übergabe eines Pointers einen Blockmove beschalten. Dazu brauche ich AR1 und AR2.
Wenn ich in per LAR1 ins AR1 schreibe, ist erstmal ncihts ungewöhnlich. Wenn ich aber LAR2 aufrufe, werden mir Eingänge des FBs abgelöscht!?!?
Kann mir jemand sagen was das eine mit dem anderen zu tun hat?

Screenshot vom Online-Status zur Verdeutlichung:

Screenshot.JPG

Danke für eure Hilfe!

VG Stefan
 
Im AR2 steht der Adressoffset für die Instanz.

Dein
U e_Lastspg....
wird im MC7 Code zu:
U DIX[AR2, P#16.0]

Hieran erkennst du nun also, das du nach dem ändern des AR2 ganz wo anders zugreifst.

Entweder, falls sinnvoll möglich, den FB nicht Multiinstanzfähig zu erstellen.

Wenn du nur den Any für den Blockmove basteln musst, kannst du das auch nacheinander, nur mit Verwendung von AR1 machen.
Im Idealfall brauchst du überhaupt kein AR, und kannst den Blockmove direkt symbolisch beschalten.
Dazu müsste man jetzt aber wissen, was du wohin moven willst.

Edit:
Vielleicht hilft auch dieser Thread: Was macht der CPU- Akku hier genau?
da gingst thematisch mehr oder weniger um diesselbe Problematik.

Mfg
Manuel
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Im AR2 steht der Multiinstanzoffset des aktuellen Aufrufs. Durch das Schreiben des AR2 geht dir der Offset verloren und deine Eingänge werden vermeintlich gelöscht... In wirklichkeit bist du nur irgendwo anders als du willst im Instanz-DB.Das einfachste wäre meiner Meinung nach
Code:
TAR2 #gesichertes_ar2 //Ein Doppelwort aus L-Stack oder Stat
LAR2 #deinCode
....
....
....
LAR2 #gesichertes_ar2 //AR2 wiederherstellen

edit: Bin mir jetzt grad ein bisschen unsicher ob dass nicht doch ein Blödsinn ist... Ich verwende das eigentlich nur um Sachen von einem AR ins andere zu schieben....
 
Zuletzt bearbeitet:
Hallo Manuel,

danke für die Erklärung. Das war mir nicht bewusst.
Ich hab mich jetzt auf AR1 beschränkt, indem ich das Register zwischenspeichere. Zumindest im Simulator scheints schonmal zu funktionieren.
Danke nochmals für die schnelle Hilfe!! (nichtmal 8min...erstaunlich)

VG Stefan
 
Zurück
Oben