AWL Schleife

A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo,

ich bin blutiger Anfänger, möchte es jedoch trotzdem einmal wagen hier eine Frage zu stellen: Wie kann ich in AWL den Zähler der Variablen verwenden? Folgender Ansatz läuft bei mir nicht:

AUF DB 50
L 9
Next: T #Zaehler
L 9
L 10
*I
TAR1
LAR1
L 10
-D
TAR2
L DBB [AR1,P#0.0]
T DBB [AR2,P#2.0]
L DBD [AR1,P#2.0]
T DBD [AR2,P#2.0]
L DBD [AR1,P#6.0]
T DBD [AR2,P#6.0]
L #Zaehler
LOOP Next

Ich möchte verkürzt dies hier darstellen:

L DB50.DBB 80
T DB50.DBB 90
L DB50.DBD 82
T DB50.DBD 92
L DB50.DBD 86
T DB50.DBD 96
L DB50.DBB 70
T DB50.DBB 80
L DB50.DBD 72
T DB50.DBD 82
L DB50.DBD 76
T DB50.DBD 86
L DB50.DBB 60
T DB50.DBB 70
L DB50.DBD 62
T DB50.DBD 72
L DB50.DBD 66
T DB50.DBD 76
L DB50.DBB 50
T DB50.DBB 60
L DB50.DBD 52
T DB50.DBD 62
L DB50.DBD 56
T DB50.DBD 66
L DB50.DBB 40
T DB50.DBB 50
L DB50.DBD 42
T DB50.DBD 52
L DB50.DBD 46
T DB50.DBD 56
L DB50.DBB 30
T DB50.DBB 40
L DB50.DBD 32
T DB50.DBD 42
L DB50.DBD 36
T DB50.DBD 46
L DB50.DBB 20
T DB50.DBB 30
L DB50.DBD 22
T DB50.DBD 32
L DB50.DBD 26
T DB50.DBD 36
L DB50.DBB 10
T DB50.DBB 20
L DB50.DBD 12
T DB50.DBD 22
L DB50.DBD 16
T DB50.DBD 26
L DB50.DBB 0
T DB50.DBB 10
L DB50.DBD 2
T DB50.DBD 12
L DB50.DBD 6
T DB50.DBD 16

Vielen Dank für Eure Hilfe,
Matthias
 

jogi

Well-known member
Beiträge
81
Punkte Reaktionen
0
Dieses sollte funktionieren

Hi Mathias,
Du brauchst das AR2 gar nicht! folgender Ansatz sollte funktionieren, hab ich jedoch nicht getestet.

Code:
     AUF   DB50
     L     9                    // 9 Datenblöcke kopieren
next:T     #zaehler
     +     -1                   // erster soll ja von DBx80 nach 90 kopiert werden
     L     10                   // 10 Bytes pro Eintrag]
     XD
     SLD   3                    // in Pointer-Format wandeln
     LAR1                       // und ins Adressregister

     L     DBB[ar1,p#0.0]
     T     DBB[ar1,p#10.0]
     L     DBD[ar1,p#2.0]
     T     DBD[ar1,p#12.0]
     L     DBD[ar1,p#6.0]
     T     DBD[ar1,p#16.0]
     L     #zaehler
     LOOP  next

PS: AR2 in FB's zu verwenden ist übrigens kritisch, wenn die FB's als Multi-Instanzen verwendet werden. Da muß etwas aufgepasst werden.


Gruß Jörg

@ Markus:
Hab zwar das Code-Tag verwendet (denk ich zumindest !) aber so schön ordentlich, wie in einem anderen Beitrag von Dir ist's trotzdem nicht geworden. :( Sag mir mal bitte, warum !
 

Markus

Administrator
Teammitglied
Beiträge
5.229
Punkte Reaktionen
1.269
Zuviel Werbung?
->Hier kostenlos registrieren
hast du den awl code hier geschrieben oder mit dem simatic manager?
wenn du ihn im forum direkt eintippst gehts nicht.
aber wenn du ihn mit "copy&paste" vom simatic manager in das forum einfügst, bleibt die formatierung genau so erhalten.

ohne das code-tag ist das nicht der fall...
 

jogi

Well-known member
Beiträge
81
Punkte Reaktionen
0
Hi Markus,

... nee, nicht kopiert, hier auf die Schnelle eingetippt.
Sieht mit vielen Blanks gleich viel besser aus :lol:
Ok, weiß jetzt Bescheid, das nächste mal wird kopiert oder halt die Leertaste gequält. :lol:

Danke und Gruß

Jörg
 

Zottel

Well-known member
Beiträge
2.299
Punkte Reaktionen
277
Was ist mit Tabulat oren? Gehen die auch?
Habe einen in den Normaltext gesetzt.
Code:
und nun code
	mit Tabulator
mal sehen
 
OP
A

Anonymous

Guest
Zuviel Werbung?
->Hier kostenlos registrieren
Hallo nochmal,

vielen Dank für die schnelle Antwort, aber leider hat dies irgendwie nicht zu Erfolg geführt. Es wird nur der erste Datensatz an 2. Position verschoben danach läuft nichts mehr, als wenn die Schleife nur ein mal durchlaufen würde. Wo ran könnte das liegen?

Gruß,
Matthias
 
OP
A

Anonymous

Guest
so, Fehler selber gefunden es muss heißen:
Code:
      L     9                           // 9 Datenblöcke kopieren 
next: T     #Zaehler
      +     -1                          // erster soll ja von DBx80 nach 90 kopiert werden 
      L     10                          // 10 Bytes pro Eintrag] 
      *D    
      SLD   3                           // in Pointer-Format wandeln 
      LAR1                              // und ins Adressregister 
      L     DBB [AR1,P#0.0]
      T     DBB [AR1,P#10.0]
      L     DBD [AR1,P#2.0]
      T     DBD [AR1,P#12.0]
      L     DBD [AR1,P#6.0]
      T     DBD [AR1,P#16.0]
      L     #Zaehler
      LOOP  next

also nicht SLD 4 sondern SLD 3. Dann läuft es.

Danke nochmal und einen schönen Tag!
 
Oben