Schieben und Rotieren
Bit-Manipulation
Optimieren Sie Ihre Registerverarbeitung. Von ultraschnellen mathematischen Berechnungen bis hin zum komplexen Kommunikationsprotokoll-Management — beherrschen Sie die Bitbewegung.
Warum Bits schieben oder rotieren?
Schiebe- (Shift) und Rotier- (Rotate) Operationen ermöglichen es, die Bits eines Wortes nach links oder rechts zu verschieben. In der Industrie werden sie verwendet, um präzise Informationen aus einem Kommunikationstelegramm zu extrahieren, Schieberegister zur Verfolgung von Teilen auf einem Förderband zu erstellen oder Multiplikationen/Divisionen durch Zweierpotenzen extrem performant durchzuführen.
Der wesentliche Unterschied liegt in der Behandlung der 'auslaufenden' Bits: Während Schieben (Shift) diese verwirft und durch Nullen ersetzt, führt Rotieren (Rotate) sie am anderen Ende des Wortes wieder ein, wodurch eine kontinuierliche kreisförmige Schleife entsteht.
Schieben (Shift)
Lineare Bewegung mit Bitverlust
SHL / SHR — Links/Rechts schieben
SHLWas es macht
Verschiebt die Bits um eine durch den Eingang N definierte Anzahl von Positionen nach links (SHL) oder rechts (SHR). Bits, die aus dem Register laufen, gehen verloren, und neue einlaufende Bits werden auf 0 gesetzt.
Wann man es verwendet
Schnelle Multiplikation mit 2 (SHL), Division durch 2 (SHR) oder Isolieren eines bestimmten Bytes in einem 32-Bit-Wort.
Profi-Tipps
Das Schieben einer Ganzzahl um 1 Bit nach links entspricht einer Multiplikation mit 2, ohne das Rechenwerk zu belasten.
Bei vorzeichenbehafteten Typen (Int, DInt) behält SHR oft das Vorzeichenbit bei (arithmetisches Schieben).
Wenn N größer als die Wortbreite ist (z.B. N=20 bei einem WORD), ist das Ergebnis 0.
Rotieren (Rotate)
Kreisförmige Bewegung ohne Verlust
ROL / ROR — Links/Rechts rotieren
ROLWas es macht
Rotiert die Bits kreisförmig. Das Bit, das an einer Seite ausläuft (z.B. links bei ROL), läuft an der anderen Seite (rechts) sofort wieder ein. Es gehen keine Daten verloren.
Wann man es verwendet
Erstellen von Lauflichtmustern, einfache Datenverschlüsselung oder Verwaltung von Ringpuffern (FIFO).
Profi-Tipps
Ideal zum Alternieren von Prioritäten in einer Gruppe von Pumpen oder Motoren.
Im Gegensatz zum Schieben ergibt eine vollständige Rotation (z.B. 16 Bits bei einem WORD) wieder den Ausgangswert.
Nutzen Sie ROL/ROR, um die Byte-Reihenfolge (Endianness) beim Datenaustausch anzupassen.
Schieben vs. Rotieren: Der Vergleich
Die Auswirkungen auf Ihre Daten verstehen
| Eigenschaft | Schieben (SHL/SHR) | Rotieren (ROL/ROR) |
|---|---|---|
| Struktur | Linear | Kreisförmig |
| Auslaufende Bits | Verworfen (Verloren) | Wieder eingeführt am Ende |
| Einlaufende Bits | Immer 0 | Recycelte auslaufende Bits |
| Mathe-Anwendung | Multiplikation / Division | Bit-Permutation |
| Praxisbeispiel | Teileverfolgung (Förderband) | Lauflicht / Sequenzer |
| Risiko | Leeren des Registers | Keines (Daten bleiben erhalten) |
Häufig gestellte Fragen
Warum SHL statt Multiplikation mit 2 verwenden?
Der SHL-Befehl wird vom SPS-Prozessor wesentlich schneller ausgeführt als eine MUL-Operation, da er direkt auf dem Register arbeitet, ohne das komplexe ALU zu durchlaufen.
Wie erstellt man ein Schieberegister für ein Förderband?
Verwenden Sie SHR bei jedem Impuls eines Gebers. Wenn ein Teil am Einlauf erkannt wird, setzen Sie Bit 0 auf 1. Durch das Schieben des Wortes verfolgen Sie die Position des Teils Bit für Bit.
Was ist der Einfluss des Datentyps (Byte, Word, DWord)?
Die Anweisung passt sich der Breite an. Ein ROR auf einem Byte lässt Bit 7 nach 1 Verschiebung an Position 0 wiedererscheinen. Bei einem Word kehrt Bit 15 an Position 0 zurück.
Kann man Variablen in SCL schieben?
Ja, über die Funktionen SHL(IN:=var, N:=n) oder durch Verwendung der Standard-Bitoperatoren, sofern Ihre TIA Portal Version dies unterstützt.