Vai al contenuto
PLC Forum


Operazioni Di Shift Con Indice Variabile


setecastronomy

Messaggi consigliati

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 al commento
Condividi su altri siti


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 al commento
Condividi su altri siti

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 al commento
Condividi su altri siti

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 al commento
Condividi su altri siti

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...