Indirekte Adressierung von Bit's in SCL

tarzipan7

Level-2
Beiträge
96
Reaktionspunkte
0
Zuviel Werbung?
-> Hier kostenlos registrieren
Hallo Muss einen AWL Baustein in SCL umschreiben. In diesem ist eine Schleife programmiert wo folgender Befehl drin ist: L P##IOs Code... +AR1 P#0.1 Hier muss offenbar nicht darauf geachtet werden, wenn die Bytegrenze überschritten wird. Wie kann ich dies im SCL machen? gruss und danke martin
 
Hallo,
das kannst (solltest) du so nicht umsetzen.
Ich würde hier in SCL das programmieren, dass von den Codezeilen letztlich bewirkt werden soll.
Schreib doch mal etwas dazu - dann kann ich dir da vielleicht mit etwas passenden helfen ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Larry hat da Recht, aber eine Vermutung sein mal gestattet. ;) Der Baustein hat vielleicht eine Word, Doword als Input und nun soll auf die einzelnen Bits zugegriffen werden. In diesem Falle würde ich mit mal den "AT"-Operator in SCl ansehen. Dazu gibt die Suche hier im Forum ganz sicher einige gute Beispiele her.
 
Die Formulierung der Funktion des Bausteines isch etwas kompliziert. Generell sollte ein DB-Bereich (BOOL), auf den Zustand geprüft werden. Die Startadresse (z.B DB100.DX10.0) und die Anzahl Bits (z.B. 250) muss über einen Parameter vorgegeben werden können. Im AWL kein Problem aber im SCL komm ich nicht weiter.
 
Das geht in etwa so :
Code:
BEGIN
temp := false ;
FOR i := 0 TO 250 BY 1 DO 
   xByte := i / 8 ;
   xBit  := i MOD 8 ; 
   temp := temp OR DB100.DX[xByte,xBit] ;
END_FOR ;   
END_FUNCTION_BLOCK
Versuch dich mal da dran ...

Gruß
LL
 
Zuviel Werbung?
-> Hier kostenlos registrieren
Das geht in etwa so :
Code:
BEGIN
temp := false ;
FOR i := 0 TO 250 BY 1 DO 
   xByte := i / 8 ;
   xBit  := i MOD 8 ; 
   temp := temp OR DB100.DX[xByte,xBit] ;
END_FOR ;   
END_FUNCTION_BLOCK
Versuch dich mal da dran ...

Gruß
LL

würde jetzt aber nicht so ganz seine funktionalität erfüllen ...

eine frage: wie wird denn die startadresse am AWL-Baustein übergeben? BOOL??? ANY, oder? :rolleyes:

aber larry, ich kann dich auch noch beruhigen, der ansatz ist gut und die FOR-Schleife ist flexibel genug! :D
 
xBit := i MOD 8 Denke das isch die Lösung für den LOOP. startadresse wird als bool übergeben. IN IOs :BOOL; //Startadresse NoOfElements :INT; //Anzahl Loops danke und gruess martin
 
Zuletzt bearbeitet:
eine frage: wie wird denn die startadresse am AWL-Baustein übergeben? BOOL??? ANY, oder? :rolleyes:

aber larry, ich kann dich auch noch beruhigen, der ansatz ist gut und die FOR-Schleife ist flexibel genug! :D

@4L:
Ich würde dafür vermutlich einen ANY nehmen, wenn es flexibel sein soll.
Ich habe die Fragestellung aber eher als Adressierung der Bits in einer Schleife verstanden ...
Außerdem - ein bißchen soll Tarzipan ja auch noch machen ... ;)
 
Zurück
Oben