跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/Switch — 多路跳转

Switch — 多路跳转

按 k 与各 case 比较,跳到第一个匹配的标签;都不匹配跳 else。

程序控制 S7-1200/1500 TIA V19 别名:多路跳转 / SWITCH / Switch

在 TIA 里试一下

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

TiaLink 设置

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

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

一句话

Switch 按 k 与各 case 比较,跳到第一个匹配的标签;都不匹配跳 else。

符号与引脚

分类:程序控制 不需要实例 模板值:无
引脚方向说明
en流输入左侧 RLO
k输入选择值
else输出默认分支标签

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

最小示例

Enable=1 时:Sel=0 跳 L0,Sel=1 跳 L1,其它跳 L_ELSE。

Switch_Example:Network 1 — 多路跳转;Network 2 — 目标 L0;Network 3 — 目标 L1;Network 4 — 默认 else

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

怎么工作

  • k 是选择值,cases 是各分支的比较值,ops 支持 eq/ne/ge/le/gt/lt。
  • labels 是各分支目标标签,elseLabel 是默认分支;标签要声明在目标 network 里。
  • SrcType 决定比较类型;本页用 Int。
  • Switch 是 terminal:跳转指令必须是 rung 的最后一项。

常用场景

1. 按值分支

同上面的最小示例。

2. 按模式跳转

用 Mode 选择自动/手动分支,其它值走默认分支。

Switch_Mode:Network 1 — 按模式跳转;Network 2 — 目标 AUTO;Network 3 — 目标 MANUAL;Network 4 — 默认 else

常见坑

  • 标签未声明:每个 labels/elseLabel 都要在某个 network 的 labels 里声明。
  • 不是最后一个元素:跳转类指令必须是 rung 的最后一项。
  • 比较类型不一致:k、case、SrcType 要匹配。
  • 多个 case 命中:按第一个匹配的分支跳转,写 case 时注意顺序。
  • 和 JmpList 混淆:Switch 按值比较,JmpList 按下标索引。

← 返回 LAD 指令手册