Step 7 AWL - Schleife mit Array

bo1986

Level-1
Beiträge
54
Reaktionspunkte
8
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo, Ich habe eine Schleife in AWL:
Code:
A #CommingDevice
JCN NCOM L 255 // Transfer 255 to loop counter
 LCOM: T #loopCounter // Loop counter 
L #loopCounter 
L #LastAdress 
==I 
R #UDT_PN_DIAG.FAILED_SLAVES[0] 
S #UDT_PN_DIAG.EXIST_SLAVES[0] 
L #loopCounter 
LOOP LCOM 
NCOM: NOP 0
Der Array ist vom Typ Bool, und ich möchte nun die 0 durch #LastAdress ersetzen, damit ich von dem Array nur ein bestimmtes Bit setze. Der Array steht in einem DB. Eine Vatiable wie in anderen Programmiersprachen kann ich nicht direkt einsetzen.
 
Hallo,
Nein ... das geht so in AWL nicht (das könnte nur SCL).
Du müßtest dir einen Pointer auf dein Array-Element bilden, auf den (Bit-)Pointer den den Betrag von #LastAdress aufaddieren und damit dann die gewünschte Speicher-Adresse in dem DB verändern ...
Beispiel für die Pointer-Geschichte z.B. hier : http://www.sps-forum.de/faq/8887-pointer-zeiger-fifo-lifo.html

Gruß
Larry
 
Zuviel Werbung?
-> Hier kostenlos registrieren
OK Danke,
Werde ich mal ausprobieren. Hab mir etwas in der Richtung fast gedacht aber wusste nicht, ob das dann bittweise dazuaddiert oder nur Byteweise geht...
 
OK Danke,
Werde ich mal ausprobieren. Hab mir etwas in der Richtung fast gedacht aber wusste nicht, ob das dann bittweise dazuaddiert oder nur Byteweise geht...
 
Wenn ich nun:
Code:
L   #LastAdress   
OPN   "PN_DIAG_VI_DB"
A     DBX [AR1,P#94.0]

eingebe wird immer nur das erste Bit des arrays angesprochen...
Habe es auch mit einem festwert probiert, aber da wird auch nur das erste Bit angesprochen. ich habe #LastAdress als Int deklariert...
was mache ich da falsch?
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Du müßtest erstmal die Anfangsadresse deines Array's laden (das sehe ich noch nicht).
Darauf dann #LastAdress aufaddieren (+D)
Das dann ins AR1 bringen und dann wie es schon stehen hast verarbeiten ...

Gruß
Larry
 
Zurück
Oben