TIA Portal 指令

程序控制
流程与执行

掌握程序的逻辑流。从条件跳转到实时诊断工具,优化控制器的执行结构。

什么是 TIA Portal 中的程序控制操作?

程序控制操作允许修改程序段的顺序执行顺序。它们用于跳过部分代码(跳转)、创建复杂的分支(分流器)或管理 CPU 的内部行为(停止、看门狗、时间测量)。

这些指令非常强大,但必须谨慎使用,特别是会阻塞循环的 WAIT 指令,或者如果跳转过多可能会使程序难以调试。TIA Portal 还提供现代化的工具,用于在每个块内部局部拦截错误。

跳转与流程

程序重定向指令

JMP / JMPN — 条件跳转

JMP

功能

如果 RLO 为 1,则 JMP 中断顺序执行并跳转到标签 (LABEL)。如果 RLO 为 0,JMPN 执行相同操作。

适用场景

跳过不应在特定模式下执行的代码段,或在 LAD/FBD 中创建简单的循环。

专家提示

跳转目的地 (LABEL) 必须在同一个块(FC 或 FB)内。

不要使用向后跳转来创建没有退出条件的循环,否则会面临循环时间超时的风险。

在 SCL 中,请改用 IF...THEN 或 CASE...OF 结构。

SWITCH — 多分支分流器

SWITCH

功能

将输入值与多个目标值进行比较,并跳转到与第一个验证案例相对应的程序段。Switch/Case 的图形等效形式。

适用场景

管理机器状态(简单 Grafcet)、选择运行模式或根据类型代码分流零件。

专家提示

比一系列串联的 == 比较器更简洁易读。

使用 'ELSE' 输入处理没有匹配值的情况。

非常适合 HMI 上的菜单结构。

RET — 返回

RET

功能

强制结束当前块 (FC/FB) 的执行并返回到调用块。

适用场景

如果在块开始时检测到错误,或者不满足安全条件,则提前终止函数。

专家提示

有助于优化循环时间,避免不必要地处理剩余代码。

注意:尚未处理的块输出将保持其最后状态。

在 SCL 中,使用 RETURN; 指令。

运行控制

CPU 循环管理与性能测量

RUNTIME — 测量时间

RUNTIME

功能

以微秒 (µs) 为单位测量程序部分或整个块的执行时间。

适用场景

代码优化、诊断沉重的程序段或计算机器性能。

专家提示

调用一次 RUNTIME 以初始化测量,第二次调用以获取结果。

使用 LReal 数据类型存储测量结果。

便于检查复杂的 FOR 循环是否接近看门狗限制。

WAIT — 固定延迟

WAIT

功能

将程序执行挂起指定的微秒时长。警告:与定时器不同,WAIT 会完全阻塞 CPU 循环。

适用场景

等待几微秒以使超高速 I/O 卡上的电子信号稳定。

专家提示

务必谨慎使用。过长的 WAIT 将触发看门狗错误并停止 PLC。

切勿用于过程延迟(秒/分);请使用 TON 定时器。

仅适用于 S7-1500。

STP — CPU 停止

STP

功能

强制 CPU 进入 STOP 模式。

适用场景

不应再控制机器的致命错误情况,或诊断测试。

专家提示

停止是立即发生的。需要手动干预(HMI 或开关)才能重启。

尽可能优先选择带安全故障处理的报警管理,而不是粗暴地停止 CPU。

在调试项目中用于在特定位置进行“断点”。

错误处理

局部拦截执行故障

GET_ERROR / GET_ERR_ID

功能

检索有关块内发生的第一个错误的信息(例如:访问不存在的数组索引)。

适用场景

通过拦截编程错误而不停止 PLC 来增强块的鲁棒性。

专家提示

GET_ERROR 提供详细结构,GET_ERR_ID 仅返回错误号。

将这些指令放在关键块的末尾。

允许创建自定义错误日志。

跳转 vs 控制结构

使用哪种方法重定向程序?

您需要...推荐指令为什么?
LAD 中的简单跳转JMP跳过一个程序段
复杂的多重选择SWITCH / CASE比 10 个 JMP 更具可读性
测量内部时长RUNTIME性能优化
立即停止STP硬件严重错误
极短等待WAIT电子稳定
局部诊断GET_ERROR避免 CPU 停止

常见问题

JMP 和 JMP_LIST 有什么区别?

JMP 是向目标的单次跳转。JMP_LIST 允许定义目的地列表。根据数字索引,程序跳转到列表中的第 1、第 2 或第 N 个标签。

WAIT 指令危险吗?

是的,如果使用不当。它会挂起整个用户程序的执行。如果 WAIT 和代码的总和超过看门狗时间(通常为 150ms),CPU 将进入 STOP。

如何测量 PLC 的总循环时间?

您不需要使用 RUNTIME 指令。您可以直接在线查看 CPU 属性,或使用 OB1 的系统变量。

标签 (LABEL) 放在哪里?

标签可以放在任何程序段的开头。在 LAD 中,它们出现在左侧母线正上方。标签名称在块内必须是唯一的。

自动化您的控制结构

描述您的跳转逻辑或诊断需求,T-IA Connect 将生成针对您的应用优化的 JMP 和 SWITCH 程序段。