Jump to content
PLC Forum


Operazioni Di Shift Con Indice Variabile


setecastronomy
 Share

Recommended Posts

setecastronomy

Per testare se il bit X (ove x è una varaiabile) di una word è ad uno di solito seguo una procedura del tipo:

shift left di 1 di X-1 posizioni. And logico del risultato con la word da testare.

Se il risultato è diverso da zero il bit è ad un uno.

Con questo plc ho sì l'istruzione SHL, ma come contatore delle posizioni di shift accetta solo un operando immediato. Mi sto sbagliando ? E come posso fare allora ?

Non è neppure disponibile un operazione di power(operando, potenza) con cui potrei supplire.

Grazie

Filippo

Link to comment
Share on other sites


puoi fare cosi :

carichi la tua word da testare su 16 bit interni

es: word da testare = mw100

%m10:16:=%mw100

a questo punto hai caricato ogni singolo bit della word su bit interni quindi avrai M10=%mw100:x0 ...etc

ora con un contatto indicizzato con la word di posizione puoi verificare se il bit e' on od off

es :word di posizione = mw200

%m10[%mw200] %m50

-------l l---------------------------------------()

%m50 sara vero se il bit corrispondente alla posizione di %mw200 e' vero

bye

Link to comment
Share on other sites

Stefano Sormanni

se devo testare un bit di una word, anzichè andare a fare lo shift, potresti anche fare così:

LD %MW100

AND 2#0010000000000000

NE 0

ST %M10

Link to comment
Share on other sites

se devo testare un bit di una word, anzichè andare a fare lo shift, potresti anche fare così

AND 2#0010000000000000

e ma così non è variabile come chiede setecastronomy

e poi scusa ma fare un AND a parola per testare un bit di word!!!!!!!!!!!!

setecastronomy il modo migliore è come ti ha già descritto prog_jlaw

Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...