Omron Indirekte Adressierung

drfunfrock

Level-1
Beiträge
934
Reaktionspunkte
72
Zuviel Werbung?
-> Hier kostenlos registrieren
Ich hab eine Frage zu Omron und der inidirekten Adressierung:

Ich kann indirekt addressieren mit z.B.

MOV &10 @IrgendeinPointerSymbol

und schreibe die 10 in die Adresse die in IrgendeinPointerSymbol steht.

Nun will ich aber die Adresse eines beliebigen Symbols haben, um damit einen Pointer initialisieren zu können. Geht das, ohne direkt Adressen zu verwenden?
 
Hi,
so richtig verstehe ich die Frage nicht.
Dein Beispiel "MOV &10 @IrgendeinPointerSymbol" funktioniert nur, wenn sich der Pointer und die Zieladresse im DM-Bereich befinden.
Es gibt mehrere verschiedene Arten der indirekten Adressierung.
Richtig kompliziert ist es mit IR-Registern, bietet aber auch die meisten Möglichkeiten.
Man kann den gesamten Speicher damit adressieren, nebeneinanderliegende Banken können durchgehend adressiert werden.
Alle Speicherbereiche sind möglich. Bitweise Adressierung ist möglich.
Und von einem Symbol die Adresse zu ermitteln gibt es den MOVR-Befehl.
(Um die Adresse im Adressbereich zu erhalten, muss man den Wert für die Anfangsadresse des Bereichs abziehen. Es sind UDINT-Zahlen)
Dieser funktioniert jedoch nicht in FBs mit Variablen, die keine feste Adresse haben, daher gibt es dafür noch den Befehl GETID.

P.S.
Hier nochmal die 4 indirekten Adressierungsarten:
- im Datenmerkerbereich mit *D oder @D
- mit Indexregistern IR und DR
- durch anlegen von Arrays (die sauberste Methode)
- mit Spezialbefehlen DIST und COLL (die einfachste Methode)
. . . dann gibt es noch FIFO und auch Records
 
Zuletzt bearbeitet:
Zurück
Oben