Step 7 AWL Beispiel verstehen

stalmoro

Level-2
Beiträge
10
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo,
helft bitte einen Ausdruck nachzuvollziehen. Im Beispiel von Dallhof ist folgender AWL Ausdruck erwähnt:

L Z1 //Lagenzähler abfragen
L 2 //Daten liegen im WORD-Format vor benötigen also 2 Bytes
*I //Multiplikation Zählwert x 2

Die Erklärung lautet folgendermaßen:

Der Istwert des Lagenzählers liegt als INT (16-bit Ganzzahl) vor. Da die abzufragenden Parameter (ab Datenwort 4 im DB15) immer auf 2 Bytes bereitstehen ... müssen wir den Wert des Lagenzählers zunächst mit 2 multiplizieren.

Als SPS Anfänger kann ich leider nicht nachvollziehen, warum die mal 2 Multiplikation stattfinden soll, wenn Zähler einen 16 Bit ausgibt und das sind ja schon 2 Bytes.. was ist genau der Sinn dieser Multiplikation?

vielen Dank im Voraus!
 
Das mit 2 multiplizieren kann schon passen, jedoch nicht mit der Erklärung irgendwelcher Byte- oder Wortgrößen ...
Kurzum: Nicht nur du als Anfänger kannst die Erklärung nicht nachvollziehen.

Vermutlich hast du einfach pro '1' des Zählers, z.B. 2 Teile, 2 Lagen, oder was auch immer der Zähler zählt.

Mfg
Manuel
 
Oder wird evtl. noch ein Pointer verwendet, für welchen der Adressoffset angepasst wird ( mit *2 ).
Okay, das wäre i.d.T. eine Möglichkeit, an dies Variante hab ich jetzt gar nicht gedacht :oops:, sollte dann aber noch in einem größeren Kontext stehen. Evtl. noch gefolgt von Klassikern wie SLD3 o.ä.

@TE
Wie geht es nach den paar Zeilen weiter?
Wo wird das Ergebnis weiterverwendet?
 
Hallo,

ich habe vorhin einmal auf die Webseite von Dahlhoff geschaut und gesehen, dass es dort um Palettierer usw. geht, was ja genau mein Gebiet ist ( u.a. ).
Bei uns ist es bei den AWL Maschinen auch gang und gebe, Lagen und Einlaufzähler vor dem Pointer zu multiplizieren ( *2 für Wordadressen oder *4 für
DWORD Adressen ). Daher meine Antwort bezüglich eines Pointers. Wie Manuel schon schreibt, wird dann natürlich ein SLW 3 benötigt.

TE, könntest du mal die Codezeilen hier einfügen
 
Zuletzt bearbeitet:
Zuviel Werbung?
-> Hier kostenlos registrieren
Alles klar,

ich habe es selber bei Dahlhoff gefunden:

Code:
[I]L Z1   //Lagenzähler abfragen[/I]
[I]L 2   //Daten liegen im WORD-Format vor benötigen also 2 Bytes[/I]
[I]*I   //Multiplikation Zählwert x 2[/I]
[I]SLW 3   //Pointer bilden, Wert im Akku um 3 Bits nach links verschieben[/I]
[I][B]LAR1[/B]   //Pointer ins Adressregister 1 laden[/I]
[I]AUF DB15   //Datenbaustein mit den Lagenparametern öffnen[/I]
[I][B]L DBW[AR1,P#4.0][/B]   //Datenbausteinwort aus Adressregister abfragen, mit DBW 4 beginnen[/I]
[I]T MW50   //Übergabe Parameter an den Prozess[/I]
 
Zuletzt bearbeitet:
Themenstarter:
Er lädt Z1 ( es steht z.B. Wert 4 drin )
Dann wird mit 2 multipliziert => Wert 8
SLW 3 => Pointer bilden
L AR1 gebildeten Pointer in AR1 schreiben ( Adressregister 1 )
Auf DB15 ( DB15 wird aufgeschlagen )

L DBW[AR1, P#4.0 ) So, nun wird ein DBW aus dem aufgeschlagenen DB geladen. Mit Offset 4.0
Also folglich DB15.DBW ( 8 + Offset 4 = 12 ) => DB15.DBW12

T MW50 => Wert von DB15.DBW12 in Merkerwort 50 schreiben.
 
Zurück
Oben