Kleines Problem mit LAR1

DjTommyB

Level-1
Beiträge
80
Reaktionspunkte
3
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo!

Hab heute ne neue Funktion von S7 endeckt ^^ --> LAR

Und leider versteh ich nicht wirklich wie das ganze mit den Pointern funktioniert... Ich hoffe mir kann das mal jemand erklären.

Hier mal ein Auszug aus der SW:

lar1.jpg


also den punkt LAR1 versteh ich, den darunter folgenden AUF natürlich auch, aber ich versteh nicht wie das mit den Pointern im darunter folgenden L funktioniert.

Hier steht ja L DBD [AR1,P#0.0] und der aktuelle dez Wert beläuft sich auf 2000. Aber wie kommt die SW auf diese 2000? das ist das was ich mich frage.
Müsste nämlich genau diesen Wert etwas größer machen (schneller in dem Fall).


Bitte um rasche Hilfe


mfg
Thomas
 
du siehst dir den akku an und nicht das Register!

Solange du keinen Anderen DB lädst bzw aufrufst reicht es wenn du einmal "AUF" verwendest!
 
Zuviel Werbung?
-> Hier kostenlos registrieren
du siehst dir den akku an und nicht das Register!

Solange du keinen Anderen DB lädst bzw aufrufst reicht es wenn du einmal "AUF" verwendest!

1)SW hab nicht ich geschrieben, solls ja nur ändern und somit kommen wir zu Punkt
2) --> zum ändern wär recht wenn ich das mit L DBD [AR1,P#0.0] erstmal verstehe, das ist mein Problem, verstehste`?
 
Immer wieder das Problem mit dem Pointer.

Wenn du z.B. auf Byte 1 zugreifen willst, dann wäre das 1. Bit entsprechend 1.0

Schau dir mal in der Hilfe die Beschreibung eines Pointer an.
XXX.YYY
Byte.Bit

Ein Pointer, der auf 1.0 zeigt müsste also als Bitfolge
001000 haben. jetzt lese dir diese Bitfolge als int mal aus. Richtig 8
Willst du auf 2.0 zeigen, dann sieht die Bitfolge so aus.
010000 -> 16

Daher hat der Programmierer das immer mit 8 multipliziert.
Diese Zahl legt er nun ins Adressregister ab, in der nun der pointer steht.

Jetzt greifst du auf den DB zu.

L DBD[AR1,p#0.0] -> Pointer z.B. 20.0, Versatz um 0.0 -> DBD20
L DBD[AR1,p#1.0] -> Pointer z.b. 20.0, Versatz um 1.0 -> DBD21
Schau mal in der hilfe nach. Da steht das recht gut beschrieben.

Gruß wolder
 
Die 2000 dürfte im DBD 160 des DB "RDTH:RAMP-DATA" stehen.

Die 160 wird ja weiter oben ins Adressregister geladen:
Code:
L  "RDTH:RAMP".INDEX  //hat hier den Wert 160
L  8
*D
LAR1

.....
Eine gute Erklärung zum arbeiten mit dem AR1 findest Du in der FAQ
 
Zuletzt bearbeitet:
Zurück
Oben