TIA Portal 指令

移位和循环移位
位操作

优化您的寄存器处理。从超快速数学计算到复杂的通信协议管理,掌握位运动。

为什么要对位进行移位或循环移位?

移位 (Shift) 和循环移位 (Rotate) 操作允许将字的位向左或向右移动。在工业中,它们用于从通信报文中提取精确信息、创建用于跟踪输送线上零件的移位寄存器,或以极高的性能执行 2 的幂次乘法/除法。

主要区别在于对“移出”位的处理:移位 (Shift) 会丢弃它们并用零替换,而循环移位 (Rotate) 会将它们从字的另一侧重新馈入,从而创建一个连续的循环回路。

移位 (Shift)

带位丢失的线性运动

SHL / SHR — 左移/右移

SHL

功能

将位向左 (SHL) 或向右 (SHR) 移动由输入 N 定义的位数。移出寄存器的位将丢失,新移入的位设为 0。

适用场景

快速乘以 2 (SHL)、除以 2 (SHR),或在 32 位字中隔离特定字节。

专家提示

将整数向左移 1 位相当于在不使用数学计算单元的情况下将其乘以 2。

对于有符号类型 (Int, DInt),SHR 通常保留符号位(算术移位)。

如果 N 大于字大小(例如,WORD 的 N=20),结果将为 0。

循环移位 (Rotate)

无丢失的循环运动

ROL / ROR — 左循环移位/右循环移位

ROL

功能

以循环方式旋转位。从一侧移出的位(例如 ROL 的左侧)立即从另一侧(右侧)进入。不会丢失任何数据。

适用场景

创建旋转灯光图案、简单的加密数据或管理循环缓冲区 (FIFO)。

专家提示

非常适合在一组泵或电机中轮换优先级。

与移位不同,完整的循环移位(例如 WORD 的 16 位)会返回初始值。

在数据交换中使用 ROL/ROR 重新排列字节顺序(字节序)。

移位 vs 循环移位:对比

了解对数据的影响

属性移位 (SHL/SHR)循环移位 (ROL/ROR)
结构线性循环
移出位丢弃 (丢失)在另一侧重新馈入
移入位始终为 0回收的移出位
数学用途乘法 / 除法位排列
实际示例零件跟踪 (输送线)跑马灯 / 序控器
风险寄存器清空无 (数据保留)

常见问题

为什么要使用 SHL 而不是乘以 2?

SHL 指令由 PLC 处理器执行的速度比 MUL 操作快得多,因为它直接在寄存器上操作,而不经过复杂的算术逻辑单元 (ALU)。

如何为输送线创建移位寄存器?

在每个编码器脉冲处使用 SHR。如果在入口检测到零件,将位 0 强制为 1。通过对字进行移位,您可以逐位跟踪零件的位置。

数据类型 (Byte, Word, DWord) 有什么影响?

指令会根据大小进行调整。对 Byte 进行 ROR 移位 1 位后,位 7 将重新出现在位置 0。对于 Word,则是位 15 回到 0。

可以在 SCL 中对变量进行移位吗?

可以,通过 SHL(IN:=var, N:=n) 函数,或者如果您的 TIA Portal 版本允许,使用标准的位运算符。

自动化您的二进制操作

需要隔离位或创建复杂的序控器?T-IA Connect 一键生成您的移位和循环移位网络。