Décalage et Rotation
Manipulation de Bits
Optimisez le traitement de vos registres. Du calcul mathématique ultra-rapide à la gestion de protocoles de communication complexes, maîtrisez le mouvement des bits.
Pourquoi décaler ou faire pivoter des bits ?
Les opérations de décalage (Shift) et de rotation (Rotate) permettent de déplacer les bits d'un mot vers la gauche ou vers la droite. Dans l'industrie, elles sont utilisées pour extraire des informations précises d'un télégramme de communication, créer des registres à décalage pour le suivi de pièces sur convoyeur, ou effectuer des multiplications/divisions par des puissances de 2 de manière extrêmement performante.
La différence majeure réside dans le traitement des bits 'sortants' : alors que le décalage (Shift) les élimine et les remplace par des zéros, la rotation (Rotate) les réinjecte de l'autre côté du mot, créant une boucle circulaire continue.
Décalage (Shift)
Mouvement linéaire avec perte de bits
SHL / SHR — Décalage Gauche/Droite
SHLCe qu'il fait
Déplace les bits vers la gauche (SHL) ou la droite (SHR) d'un nombre de positions défini par l'entrée N. Les bits qui sortent du registre sont perdus, et les nouveaux bits entrants sont mis à 0.
Quand l'utiliser
Multiplication rapide par 2 (SHL), division par 2 (SHR), ou isolation d'un octet spécifique dans un mot de 32 bits.
Conseils Pro
Décaler un entier de 1 bit vers la gauche revient à le multiplier par 2 sans utiliser l'unité de calcul mathématique.
Pour les types signés (Int, DInt), SHR conserve souvent le bit de signe (décalage arithmétique).
Si N est supérieur à la taille du mot (ex: N=20 pour un WORD), le résultat sera 0.
Rotation (Rotate)
Mouvement circulaire sans perte
ROL / ROR — Rotation Gauche/Droite
ROLCe qu'il fait
Fait pivoter les bits de manière circulaire. Le bit qui sort d'un côté (ex: à gauche pour ROL) rentre immédiatement par l'autre côté (à droite). Aucune donnée n'est perdue.
Quand l'utiliser
Création de motifs lumineux tournants, cryptage simple de données ou gestion de mémoires tampons circulaires (FIFO).
Conseils Pro
Idéal pour alterner des priorités dans un groupe de pompes ou de moteurs.
Contrairement au décalage, une rotation complète (ex: 16 bits pour un WORD) redonne la valeur initiale.
Utilisez ROL/ROR pour réorganiser l'ordre des octets (Endianness) dans les échanges de données.
Shift vs Rotate : Le match
Comprendre l'impact sur vos données
| Propriété | Décalage (SHL/SHR) | Rotation (ROL/ROR) |
|---|---|---|
| Structure | Linéaire | Circulaire |
| Bits sortants | Éliminés (Perdus) | Réinjectés à l'opposé |
| Bits entrants | Toujours 0 | Bits sortants recyclés |
| Usage Math | Multiplication / Division | Permutation de bits |
| Exemple concret | Suivi de pièce (Convoyeur) | Chenillard / Séquenceur |
| Risque | Vidage du registre | Aucun (données préservées) |
Foire Aux Questions
Pourquoi utiliser SHL au lieu d'une multiplication par 2 ?
L'instruction SHL est exécutée beaucoup plus rapidement par le processeur du PLC qu'une opération MUL, car elle travaille directement sur le registre sans passer par l'ALU complexe.
Comment créer un registre à décalage pour un convoyeur ?
Utilisez SHR à chaque impulsion d'un codeur. Si une pièce est détectée en entrée, forcez le bit 0 à 1. En décalant le mot, vous suivez la position de la pièce bit par bit.
Quel est l'impact du type de données (Byte, Word, DWord) ?
L'instruction s'adapte à la taille. Un ROR sur un Byte fera réapparaître le bit 7 en position 0 après 1 décalage. Sur un Word, c'est le bit 15 qui reviendra en 0.
Peut-on décaler des variables en SCL ?
Oui, via les fonctions SHL(IN:=var, N:=n) ou en utilisant les opérateurs bit à bit standard si votre version de TIA Portal le permet.