
Switch — 多路跳转
按 k 与各 case 比较,跳到第一个匹配的标签;都不匹配跳 else。
在 TIA 里试一下
选一个示例块,通过 TiaLink 导入当前 TIA 项目:预检、默认不覆盖、不自动保存。示例块不会自动运行;导入后请在 OB1 调用并接变量。
一句话
Switch 按 k 与各 case 比较,跳到第一个匹配的标签;都不匹配跳 else。
符号与引脚
分类:程序控制
不需要实例
模板值:无
| 引脚 | 方向 | 说明 |
|---|---|---|
en | 流输入 | 左侧 RLO |
k | 输入 | 选择值 |
else | 输出 | 默认分支标签 |
符号见下面的最小示例;引脚名与方向来自 lad-ir 指令目录,说明为本站补充。
最小示例
Enable=1 时:Sel=0 跳 L0,Sel=1 跳 L1,其它跳 L_ELSE。

图中 # 前缀表示块内局部变量;实际工程里也可以是全局标签或 DB 变量。
怎么工作
k是选择值,cases是各分支的比较值,ops支持eq/ne/ge/le/gt/lt。labels是各分支目标标签,elseLabel是默认分支;标签要声明在目标 network 里。SrcType决定比较类型;本页用Int。Switch是 terminal:跳转指令必须是 rung 的最后一项。
常用场景
常见坑
- 标签未声明:每个
labels/elseLabel都要在某个 network 的labels里声明。 - 不是最后一个元素:跳转类指令必须是 rung 的最后一项。
- 比较类型不一致:
k、case、SrcType要匹配。 - 多个 case 命中:按第一个匹配的分支跳转,写 case 时注意顺序。
- 和 JmpList 混淆:
Switch按值比较,JmpList按下标索引。
