Desplazamiento y Rotación
Manipulación de Bits
Optimice el procesamiento de sus registros. Desde el cálculo matemático ultra rápido hasta la gestión de protocolos de comunicación complejos, domine el movimiento de los bits.
¿Por qué desplazar o rotar bits?
Las operaciones de desplazamiento (Shift) y rotación (Rotate) permiten mover los bits de una palabra hacia la izquierda o hacia la derecha. En la industria, se utilizan para extraer información precisa de un telegrama de comunicación, crear registros de desplazamiento para el seguimiento de piezas en transportadores, o realizar multiplicaciones/divisiones por potencias de 2 de manera extremadamente eficiente.
La diferencia principal radica en el tratamiento de los bits 'salientes': mientras que el desplazamiento (Shift) los descarta y los reemplaza por ceros, la rotación (Rotate) los reinyecta por el otro lado de la palabra, creando un bucle circular continuo.
Desplazamiento (Shift)
Movimiento lineal con pérdida de bits
SHL / SHR — Desplazamiento Izquierda/Derecha
SHLQué hace
Mueve los bits hacia la izquierda (SHL) o la derecha (SHR) un número de posiciones definido por la entrada N. Los bits que salen del registro se pierden, y los nuevos bits entrantes se ponen a 0.
Cuándo usarlo
Multiplicación rápida por 2 (SHL), división por 2 (SHR), o aislamiento de un byte específico en una palabra de 32 bits.
Consejos Pro
Desplazar un entero 1 bit a la izquierda equivale a multiplicarlo por 2 sin usar la unidad de cálculo matemático.
Para tipos con signo (Int, DInt), SHR a menudo conserva el bit de signo (desplazamiento aritmético).
Si N es mayor que el tamaño de la palabra (ej: N=20 para un WORD), el resultado será 0.
Rotación (Rotate)
Movimiento circular sin pérdida
ROL / ROR — Rotación Izquierda/Derecha
ROLQué hace
Hace pivotar los bits de manera circular. El bit que sale por un lado (ej: izquierda para ROL) entra inmediatamente por el otro (derecha). No se pierde ningún dato.
Cuándo usarlo
Creación de patrones luminosos giratorios, encriptación simple de datos o gestión de buffers circulares (FIFO).
Consejos Pro
Ideal para alternar prioridades en un grupo de bombas o motores.
A diferencia del desplazamiento, una rotación completa (ej: 16 bits para un WORD) devuelve el valor inicial.
Use ROL/ROR para reorganizar el orden de los bytes (Endianness) en intercambios de datos.
Shift vs Rotate: El duelo
Comprender el impacto en sus datos
| Propiedad | Desplazamiento (SHL/SHR) | Rotación (ROL/ROR) |
|---|---|---|
| Estructura | Lineal | Circular |
| Bits salientes | Descartados (Perdidos) | Reinyectados al opuesto |
| Bits entrantes | Siempre 0 | Bits salientes reciclados |
| Uso Matemático | Multiplicación / División | Permutación de bits |
| Ejemplo real | Seguimiento de pieza | Secuenciador / Luces |
| Riesgo | Vaciado del registro | Ninguno (datos preservados) |
Preguntas Frecuentes
¿Por qué usar SHL en lugar de una multiplicación por 2?
La instrucción SHL es ejecutada mucho más rápido por el procesador del PLC que una operación MUL, ya que trabaja directamente sobre el registro sin pasar por la ALU compleja.
¿Cómo crear un registro de desplazamiento para un transportador?
Use SHR con cada pulso de un encoder. Si se detecta una pieza a la entrada, fuerce el bit 0 a 1. Al desplazar la palabra, sigue la posición de la pieza bit a bit.
¿Cuál es el impacto del tipo de datos (Byte, Word, DWord)?
La instrucción se adapta al tamaño. Un ROR en un Byte hará reaparecer el bit 7 en posición 0 tras 1 desplazamiento. En un Word, será el bit 15 el que vuelva a 0.
¿Se pueden desplazar variables en SCL?
Sí, mediante las funciones SHL(IN:=var, N:=n) o usando los operadores bitwise estándar si su versión de TIA Portal lo permite.