跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/Shl — 左移

Shl — 左移

按位左移:out = in << n。

移位 S7-1200/1500 TIA V19 别名:左移 / Shl

在 TIA 里试一下

选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。

TiaLink 设置

默认 http://localhost:8080。也可以在本页地址后加 ?tialink= 临时指定。

TiaLink 启动时若设置了 --api-token,这里要填相同的值;只保存在本机浏览器 localStorage,不会上传。

一句话

Shl 按位左移:out = in << n。

符号与引脚

分类:移位 不需要实例 模板值:源类型(SrcType)
引脚方向说明
en流输入使能输入
in输入被移位的值
n输入移位位数
eno流输出使能输出
out输出结果

符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。

最小示例

Enable=1 时 Result = A << N;N 是移位位数。

Shl_Example:Network 1 — Shl — 左移

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 DB 变量。

怎么工作

  • in 是被移位的值,n 是位数,out 是结果;SrcType 决定类型。
  • 左移低位补 0;右移高位补 0(无符号类型)。
  • 移出的位会丢失;左移可能溢出,右移会丢低位。
  • n 超出类型位宽时结果按 TIA 规则处理,建议先限制 n 范围。

常用场景

1. 位移

同上面的最小示例。

2. 字左移

对 Word 做位操作,如取高低字节、构造掩码。

Shl_Word:Network 1 — Shl — 左移

常见坑

  • 用移位代替乘除:左移 1 位等于乘 2,但溢出/符号行为不同;可读性也差。
  • 有符号右移:有符号类型右移的符号位行为要确认;需要逻辑右移用无符号类型。
  • n 超范围:先限制 n,不要依赖越界行为。
  • 类型不一致:in/out/SrcType 要匹配。
  • ENO 未接:后面的指令可能不执行;需要串联时检查 ENO。

← 返回 LAD 指令手册