Step 7 Awl

Eddie.$

Level-1
Beiträge
3
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo zusammen, kann mir jemand diesen Code Erleutern?
Fange erst mit Programmieren an, muss mich jetzt mit einem bestehenden Programm auseinandersetzen.
Das hier ist einer der Zeilen die ich nicht verstehe, welche Lade Anweisung wird Transferiert?

L "Intern".D_101
L DB50.DBW 4
T "Intern".D_101
TAK
XOW
UW
TAW
T "MW 200"

Danke im Voraus für eure kompetenten Erklärungen.
 
Das ist n ziemlich schwurbeliger code. mal sehen ob ich das auf die Reihe kriege.
Zuerst wird Intern.D_101 in Akku 1 geladen
Dann nach akku 2 geschoben und DB50 in akku 1 geladen und gleich in Intern.D_101 gespeichert. (im nächsten Zyklus enthält also Intern.D* einen anderen Inhalt, nämlich den von DB50.dbw4)

Mit TAK tauscht er die Akkus. in AKKU1 ist also wieder der alte inhalt von Intern.D_101. diesen vergleicht er bit für bit als Exclusiv Oder und schreibt das ergebnis in Akku 1 und der alte inhalt Intern.D_101 landet wieder in Akku2.
Als nächstes wird der Alte Inhalt von Intern_D* nochmal mit dem XOW ergebnis als UW verglichen, dann die Bytes gegeneinander ausgetauscht und in MW200 gespeichert.

Schlimm das.

Man hätte auch programmieren können:
Code:
L DB50.DBW 4   // Lade in Akku 1
L "Intern".D_101 // Lade in Akku 1 schiebe DB50 nach Akku2
XOW // Xor wort
UW  // Und wort
TAW  // Tausche bytes
T "MW 200" 


L DB50.DBW 4 // überschreibe Intern mit DB50 für nächsten Zyklus.
T "Intern".D_101

IMHO versteht man so einfacher das DB50 einfach für den nächsten Zyklus in Intern.D_101 bereit gemacht wird.

mfG René
 
Schlimm ist eher das Gehampel mit Symbolisch, Absolut und Symbolisch absolut adressiertem Merkerwort ;)
Kommt mir aber bekannt vor.

mfG René
 
Code:
L Vorher_Wert
L Jetzt_Wert
T Vorher_Wert
ist eigentlich ein verbreitetes schnelles AWL-Verfahren, wenn man einen Wert mit einem vorherigen Wert vergleichen/verknüpfen will. Man hat danach beide Werte in den Akkus und auch schon den Jetzt_Wert für den nächsten Vorher_Wert gespeichert:
AKKU1: Jetzt_Wert
AKKU2: Vorher_Wert

Je nachdem, wie man die Werte verknüpfen will, muß man eventuell noch die Akkus tauschen oder nicht.

Dies liefert die steigenden Flanken (XOW manipuliert den Vorher_Wert vor dem UW):
Code:
TAK
XOW
UW
Ohne TAK würde man die fallenden Flanken erhalten (XOW manipuliert den Jetzt_Wert vor dem UW).

Das TAW vor dem T MW200 hat mit der Flankenerkennung nichts mehr zu tun. Wer weiß, warum der Programmierer die Bytes vertauscht im MW200 haben wollte...?


Kommt mir aber bekannt vor.

Das mache ich auch so, nur daß ich in AWL statt XOW lieber INVI verwende (das kommt mir "logischer" vor):
Code:
L Vorher_Wert
L Jetzt_Wert
T Vorher_Wert
TAK
INVI           //Vorher Nicht 1
UW             //Und Jetzt 1
T Flanken_Pos

Harald
 
Zurück
Oben