跳到正文
Learn-LAD
梯形图示例库/LAD 指令手册/JmpList — 跳转列表

JmpList — 跳转列表

按 k 跳到 labels[k];k 用 UInt,越界不跳转。

程序控制 S7-1200/1500 TIA V19 别名:跳转列表 / JMP_LIST / JmpList

在 TIA 里试一下

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

TiaLink 设置

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

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

一句话

JmpList 按 k 跳到 labels[k];k 用 UInt,越界不跳转。

符号与引脚

分类:程序控制 不需要实例 模板值:无
引脚方向说明
en流输入左侧 RLO
k输入索引(UInt)

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

最小示例

Enable=1 时:Sel=0 跳 L0,Sel=1 跳 L1;其它值不跳。

JmpList_Example:Network 1 — 跳转列表;Network 2 — 目标 L0;Network 3 — 目标 L1

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

怎么工作

  • k 是索引,从 0 开始;labels 是目标标签列表(Card = 列表长度)。
  • k 必须是 UInt(用 Int 编译会报类型不匹配)。
  • 标签要声明在目标 network 里。
  • JmpList 是 terminal:必须是 rung 的最后一项。

常用场景

1. 按索引分发

同上面的最小示例。

2. 按步骤分发

用 Index 跳到不同步骤;越界时不跳转,继续执行后面的逻辑。

JmpList_Dispatch:Network 1 — 按索引分发;Network 2 — 目标 STEP0;Network 3 — 目标 STEP1

常见坑

  • k 用 Int:编译报 “Int 与 UInt 不匹配”;改成 UInt。
  • 越界:k >= labels.length 时不跳转;需要兜底就加范围判断。
  • 标签未声明:每个 label 都要在某个 network 的 labels 里声明。
  • 不是最后一个元素:跳转类指令必须是 rung 的最后一项。
  • 和 Switch 混淆:JmpList 按索引,Switch 按值比较。

← 返回 LAD 指令手册