Verschuiving en Rotatie
Bitmanipulatie
Optimaliseer de verwerking van uw registers. Van ultrasnelle wiskundige berekeningen tot complex beheer van communicatieprotocollen, beheers de beweging van bits.
Waarom bits verschuiven of roteren?
Verschuivings- (Shift) en rotatiebewerkingen (Rotate) maken het mogelijk om bits van een woord naar links of rechts te verplaatsen. In de industrie worden ze gebruikt om nauwkeurige informatie uit een communicatietelegram te extraheren, schuifregisters te creëren voor het volgen van stukken op een transportband, of vermenigvuldigingen/delingen door machten van 2 extreem efficiënt uit te voeren.
Het belangrijkste verschil ligt in de behandeling van 'uitgaande' bits: terwijl Shift ze verwijdert en vervangt door nullen, voert Rotate ze terug in aan de andere kant van het woord, waardoor een continue cirkelvormige lus ontstaat.
Verschuiving (Shift)
Lineaire beweging met bitverlies
SHL / SHR — Verschuiving Links/Rechts
SHLWat het doet
Verschuift de bits naar links (SHL) of rechts (SHR) met een aantal posities gedefinieerd door ingang N. Bits die het register verlaten gaan verloren, en nieuwe inkomende bits worden op 0 gezet.
Wanneer te gebruiken
Snelle vermenigvuldiging met 2 (SHL), deling door 2 (SHR), of het isoleren van een specifieke byte in een 32-bit woord.
Pro Tips
Een integer 1 bit naar links verschuiven is gelijk aan vermenigvuldigen met 2 zonder de wiskundige eenheid te gebruiken.
Voor getekende types (Int, DInt) behoudt SHR vaak de tekenbit (rekenkundige verschuiving).
Als N groter is dan de woordgrootte (bijv. N=20 voor een WORD), is het resultaat 0.
Rotatie (Rotate)
Cirkelvormige beweging zonder verlies
ROL / ROR — Rotatie Links/Rechts
ROLWat het doet
Roteert bits cirkelvormig. De bit die er aan de ene kant uitgaat (bijv. links voor ROL) komt er aan de andere kant (rechts) onmiddellijk weer in. Er gaan geen gegevens verloren.
Wanneer te gebruiken
Creëren van roterende lichtpatronen, eenvoudige gegevensversleuteling of beheer van ringbuffers (FIFO).
Pro Tips
Ideaal voor het afwisselen van prioriteiten in een groep pompen of motoren.
In tegenstelling tot verschuiven geeft een volledige rotatie (bijv. 16 bits voor een WORD) de oorspronkelijke waarde terug.
Gebruik ROL/ROR om de byte-volgorde (Endianness) aan te passen bij gegevensuitwisseling.
Shift vs Rotate: De vergelijking
De impact op uw gegevens begrijpen
| Eigenschap | Verschuiving (SHL/SHR) | Rotatie (ROL/ROR) |
|---|---|---|
| Structuur | Lineair | Cirkelvormig |
| Uitgaande bits | Verwijderd (Verloren) | Teruggevoerd aan overzijde |
| Inkomende bits | Altijd 0 | Gerecycleerde uitgaande bits |
| Wiskundig gebruik | Vermenigvuldiging / Deling | Bit-permutatie |
| Praktijkvoorbeeld | Stuk-tracking (Transportband) | Looplicht / Sequencer |
| Risico | Register leegmaken | Geen (gegevens behouden) |
Veelgestelde Vragen
Waarom SHL gebruiken in plaats van vermenigvuldigen met 2?
De SHL-instructie wordt veel sneller uitgevoerd door de PLC-processor dan een MUL-bewerking, omdat deze direct op het register werkt zonder de complexe ALU te passeren.
Hoe maak ik een schuifregister voor een transportband?
Gebruik SHR bij elke puls van een encoder. Als er een stuk wordt gedetecteerd bij de ingang, dwing bit 0 naar 1. Door het woord te verschuiven, volgt u de positie van het stuk bit voor bit.
Wat is de impact van het datatype (Byte, Word, DWord)?
De instructie past zich aan de grootte aan. Een ROR op een Byte laat bit 7 na 1 verschuiving weer verschijnen op positie 0. Bij een Word keert bit 15 terug naar 0.
Kunnen variabelen in SCL worden verschoven?
Ja, via de functies SHL(IN:=var, N:=n) of door standaard bitwise operators te gebruiken als uw TIA Portal versie dit toestaat.