Scorrimento e Rotazione
Manipolazione di Bit
Ottimizza l'elaborazione dei tuoi registri. Dal calcolo matematico ultra-rapido alla gestione di protocolli di comunicazione complessi, padroneggia il movimento dei bit.
Perché scorrere o ruotare i bit?
Le operazioni di scorrimento (Shift) e rotazione (Rotate) permettono di spostare i bit di una parola verso sinistra o verso destra. Nell'industria, sono utilizzate per estrarre informazioni precise da un telegramma di comunicazione, creare registri a scorrimento per il tracciamento dei pezzi su convogliatore, o eseguire moltiplicazioni/divisioni per potenze di 2 in modo estremamente performante.
La differenza principale risiede nel trattamento dei bit 'uscenti': mentre lo scorrimento (Shift) li elimina e li sostituisce con zeri, la rotazione (Rotate) li reinserisce dall'altro lato della parola, creando un ciclo circolare continuo.
Scorrimento (Shift)
Movimento lineare con perdita di bit
SHL / SHR — Scorrimento Sinistra/Destra
SHLCosa fa
Sposta i bit verso sinistra (SHL) o verso destra (SHR) di un numero di posizioni definito dall'ingresso N. I bit che escono dal registro vengono persi, e i nuovi bit entranti sono impostati a 0.
Quando usarlo
Moltiplicazione rapida per 2 (SHL), divisione per 2 (SHR), o isolamento di un byte specifico in una parola a 32 bit.
Consigli Pro
Scorrere un intero di 1 bit verso sinistra equivale a moltiplicarlo per 2 senza usare l'unità di calcolo matematico.
Per i tipi con segno (Int, DInt), SHR spesso conserva il bit di segno (scorrimento aritmetico).
Se N è maggiore della dimensione della parola (es: N=20 per un WORD), il risultato sarà 0.
Rotazione (Rotate)
Movimento circolare senza perdita
ROL / ROR — Rotazione Sinistra/Destra
ROLCosa fa
Ruota i bit in modo circolare. Il bit che esce da un lato (es: a sinistra per ROL) rientra immediatamente dall'altro lato (a destra). Nessun dato viene perso.
Quando usarlo
Creazione di pattern luminosi rotanti, crittografia semplice dei dati o gestione di buffer circolari (FIFO).
Consigli Pro
Ideale per alternare le priorità in un gruppo di pompe o motori.
A differenza dello scorrimento, una rotazione completa (es: 16 bit per un WORD) restituisce il valore iniziale.
Usa ROL/ROR per riorganizzare l'ordine dei byte (Endianness) negli scambi dati.
Shift vs Rotate: Il confronto
Capire l'impatto sui tuoi dati
| Proprietà | Scorrimento (SHL/SHR) | Rotazione (ROL/ROR) |
|---|---|---|
| Struttura | Lineare | Circolare |
| Bit uscenti | Eliminati (Persi) | Reinseriti all'opposto |
| Bit entranti | Sempre 0 | Bit uscenti riciclati |
| Uso Matematico | Moltiplicazione / Divisione | Permutazione di bit |
| Esempio reale | Tracciamento pezzo (Convogliatore) | Sotto-sequenziatore / Luci |
| Rischio | Svuotamento del registro | Nessuno (dati preservati) |
Domande Frequenti
Perché usare SHL invece di una moltiplicazione per 2?
L'istruzione SHL viene eseguita molto più velocemente dal processore del PLC rispetto a un'operazione MUL, poiché lavora direttamente sul registro senza passare per l'ALU complessa.
Come creare un registro a scorrimento per un convogliatore?
Usa SHR ad ogni impulso di un encoder. Se un pezzo viene rilevato all'ingresso, forza il bit 0 a 1. Scorrendo la parola, tracci la posizione del pezzo bit per bit.
Qual è l'impatto del tipo di dati (Byte, Word, DWord)?
L'istruzione si adatta alla dimensione. Un ROR su un Byte farà riapparire il bit 7 in posizione 0 dopo 1 scorrimento. Su un Word, sarà il bit 15 a tornare a 0.
Si possono scorrere variabili in SCL?
Sì, tramite le funzioni SHL(IN:=var, N:=n) o usando gli operatori bitwise standard se la tua versione di TIA Portal lo consente.