Probleme mit AR1 und Adressierung

dpd80

Level-1
Beiträge
222
Reaktionspunkte
23
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,

Ich habe hier eine S7 300 und Step7 5.4.

Ich habe in einem FB eine In-Variable (int). Über diese Variable möchte ich ein Merkerdoppelwort aufrufen. Wenn ich also in an diese In-Variable eine 100 schreibe, möchte ich MD100 in dem Baustein aufrufen.

Ich hatte mir das so vorgestellt. Nehmen wir mal an, an der In-Variablen steht eine 100, ich nenne die In-Variable jetzt mal MD_Zahl.

L #MD_Zahl /Hier lade ich die 100 in den Akku

LAR1 /Jetzt lade ich die 100 ins AR1


L PED256 / Dann lade ich mein PED, das ich in das Merkerdoppelwort schreiben will

T MD [AR1] ???? / Und hier kommt mein Problem, wie transferiere ich das PED in das MD100?


Mit indirekter Adressierung kenne ich mich leider nicht so aus und meine Kursunterlagen liegen zu Hause :)


Hoffe, jemand kann mir nen Tipp geben, danke.
 
L #MD_Zahl /Hier lade ich die 100 in den Akku
SLD 3 // Pointerformat
LAR1 /Jetzt lade ich die 100 ins AR1


L PED256 / Dann lade ich mein PED, das ich in das Merkerdoppelwort schreiben will

T MD [AR1,P#0.0] ???? / Und hier kommt mein Problem, wie transferiere ich das PED in das MD100?


pt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Vielen Dank :D

Funktioniert super.


Kleine Frage noch. Wenn ich jetzt z.B. bei den Temp_Variablen im Baustein ein Wort stehen habe, kann ich da auch die einzelnen Bits des Wortes abfragen?
 
ja, über die lokaldaten.
z.b. test ist die erste var vom typ int

die bit kannst du dann so ansprechen.

U L0.0
= a0.0

UN L1.7
S m1.7
 
dpd80 schrieb:
Vielen Dank :D

Funktioniert super.


Kleine Frage noch. Wenn ich jetzt z.B. bei den Temp_Variablen im Baustein ein Wort stehen habe, kann ich da auch die einzelnen Bits des Wortes abfragen?

Code:
L P##TempVar
LAR1
 
U L[AR1,P#0.0]
= Bit0
 
U L[AR1,P#0.1]
= Bit1

Dann brauchste nicht auf die Adressen achten.

pt
 
Zuviel Werbung?
-> Hier kostenlos registrieren
ja so gehts auch.

der vorteil ist hierbei in jedem fall, das du die var_temps in der deklaration auch noch verschieben kannst bzw eine darüber einfügen.

bei meiner variante würdest du dann auf falsche variablen zugreifen.

vorteil meiner. ...ist einfach kürzer ;)
 
plc_tippser schrieb:
Code:
L P##TempVar
LAR1
 
U L[AR1,P#0.0]
= Bit0
 
U L[AR1,P#0.1]
= Bit1

Dann brauchste nicht auf die Adressen achten.

pt


Danke nochmal an alle. Hatte es nach ein bißchen Probieren schon selbst rausgefunden. Aber gut zu wissen, das es hier so viele Leute gibt, die einem weiterhelfen können.
 
Zurück
Oben