来源:工控老炮儿
在 PLC 编程中,我们常常强调扫描周期的重要性,但很多时候它像一个“黑盒子”——我们知道它存在,却很少能直观地感受到它的影响。
今天,我们就来聊一个有趣的话题:TIA Portal 中的 WAIT 指令。通过它,我们可以人为地干预扫描周期,从而更深入地理解 PLC 的工作机制。
一、什么是扫描周期?
在深入 WAIT 指令之前,我们先简单回顾一下 PLC 的扫描周期。
当 PLC 投入运行后,其工作过程一般分为三个阶段:输入采样、用户程序执行和输出刷新。完成上述三个阶段称作一个扫描周期。
在每个扫描周期开始时,PLC 会读取所有物理输入点的状态,并将其存入输入映像区。随后,CPU 按照从上到下、从左到右的顺序执行用户程序。当程序执行完毕后,CPU 会将输出映像区中的数据一次性写入物理输出点,完成输出刷新。
关键点在于:在程序执行阶段,即使外部输入信号的状态发生了变化,输入映像区中的数据也不会改变,直到下一个扫描周期开始时才会被更新。这就是 PLC 程序“串行执行、循环扫描”的核心特征。
二、什么是 WAIT 指令?
WAIT 指令在 TIA Portal 中是一条不太常用的指令,它的作用很直接:在程序执行过程中插入一段等待时间。
当 CPU 执行到 WAIT 指令时,会在当前网络(Network)停留指定的时间,然后再继续执行后续的程序。这意味着,整个扫描周期会被人为地延长。
这就像你在跑步比赛中途停下来系鞋带——原本可以一口气跑完的赛程,因为中途的停顿,总用时被显著拉长了。
三、WAIT 指令如何影响扫描周期?
我们可以通过一个简单的实验来理解 WAIT 指令的影响。
假设我们有一个常规的 PLC 程序,正常扫描周期为10ms。现在,我们在程序的某个网络中加入一条 WAIT 指令,设置等待时间为 20ms。
当 CPU 执行到 WAIT 指令时,会发生以下情况:
CPU 暂停程序执行,进入 20ms 的等待状态
等待结束后,继续执行后续程序
程序执行完毕后,进入输出刷新阶段
整个扫描周期变为:输入采样时间 + 程序执行时间(含 20ms 等待)+ 输出刷新时间
最终结果:原本 10ms 的扫描周期,可能被延长到 30ms 以上。
通过以下实例说明 WAIT 指令对扫描周期的影响。
首先用 WAIT 指令设计一个可以自定义时间的 WAIT 等待子程序,将时间单位设定为秒。如下图:

在程序循环 OB1 中调用以上 WAIT 等待程序,设置等待时间为 3 秒。如下图:

禁用 WAIT 等待时的循环扫描时间如下图:

启用 WAIT 等待时的循环扫描时间如下图:

可以看到循环扫描时间加长了 3 秒钟。
四、WAIT 指令带来的实际影响
1. 输入信号的“延迟响应”
由于扫描周期被拉长,输入信号的采样频率降低了。如果一个脉冲信号的宽度小于扫描周期,就有可能被“漏掉”。
2. 定时器的精度问题
这里需要引入一个重要的概念:定时器的异步刷新。
定时器启动后,其计时是独立于 PLC 扫描周期的——定时器本身的时间累计不受扫描周期影响。但是,定时器是否完成计时,需要在程序扫描到定时器指令时才被检查。
有经验的工程师做过这样的实验:在程序中故意加入 20ms 的 WAIT 指令拉长扫描周期,结果发现定时器的实际累计时间产生了 20ms 的误差。
原因分析:定时器在后台独立计时,到达设定时间后,它并不会立即触发程序动作,而是要等到 CPU 执行到该定时器指令时,才会检查到“定时已完成”这一状态。如果扫描周期被拉长,这个检查就会被延迟。
这也解释了为什么定时器不适合做精确定时——精确定时推荐使用循环中断(如OB30)配合计数器来实现。
3. 程序执行的“非原子性”
假设你在程序中对同一个输出线圈进行了多次赋值,最终生效的是最后一次赋值的结果。如果 WAIT 指令插在这些赋值之间,情况就会变得更加复杂,调试难度也会增加。
例如:在循环中断 OB30 中置位 Q0.0(立即输出),在程序循环 OB1 中复位 Q0.0(立即输出),如果在 OB1 中加入或不加入 WAIT 指令,将有可能产生不同的输出结果。
五、WAIT 指令的实际应用场景
既然 WAIT 指令会拉长扫描周期、影响定时精度,那它有什么用呢?其实,在一些特殊场景下,WAIT 指令还是有价值的:
1. 程序调试与模拟
在调试阶段,我们可以用 WAIT 指令模拟某些需要时间延迟的场景,观察程序在不同时序下的行为。比如,在测试顺控程序时,可以用 WAIT 指令模拟设备动作所需的时间。
2. 人为放大问题以排查故障
如前文所述,工程师会故意加入 WAIT 指令来放大定时器的异步刷新误差,从而验证定时器的特性。这种方法也适用于排查其他与扫描周期相关的问题。
3. 与外部设备的时序匹配
某些老旧的或响应较慢的外部设备,可能需要在输出信号后等待一段时间才能接收下一个指令。在这种情况下,WAIT 指令可以作为一个简单的解决方案。
需要提醒的是:WAIT 指令会拉长扫描周期,影响整个系统的实时性,在生产环境中应谨慎使用,或尽量采用循环中断等更可靠的方式替代。
以下是通过加入 WAIT 指令来观察上升沿的变化过程。
上次扫描周期:

当前扫描周期:

六、总结与思考
通过 WAIT 指令的研究,我们可以得出以下几点结论:
1. 扫描周期是 PLC 运行的基础
输入采样、程序执行、输出刷新三个阶段构成了 PLC 的基本工作模式,理解这一点是掌握 PLC 编程的前提。
2. WAIT 指令是一把“双刃剑”
它可以帮助我们调试程序、排查问题,但也会拉长扫描周期、影响定时精度。
3. 定时器的异步刷新特性需要重视
定时器是独立于扫描周期运行的,检查定时完成状态却依赖于程序扫描,这决定了定时器不适合用于精确定时。
4. 选择合适的工具做合适的事
对于需要精确定时的场景,循环中断(OB30)+计数器是更好的选择。
例如:

这种方案使用的是 CPU 执行周期(循环中断)作为计时基准,配合计数器(如 Int、DInt 变量) 来实现精确定时。
-
plc
+关注
关注
5052文章
14772浏览量
488359 -
指令
+关注
关注
1文章
624浏览量
37661 -
程序
+关注
关注
117文章
3847浏览量
85448
原文标题:TIA Portal 中的 WAIT 指令:让 PLC 程序慢下来
文章出处:【微信号:gkongbbs,微信公众号:工控论坛】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
Teamcenter、TIA Portal、NX MCD是如何结合在一起
Teamcenter、TIA Portal和虚拟调试如何才能结合在一起
PLC编程中的FOR循环指令案例详解
基于TIA Portal下的TCP通讯的方法详解
在TIA Portal中调整KUKA标准IO的数量
STEP7(TIA Portal) 中各种图标的含义
西门子要将LAD指令与PLC变量互连
使用TIA Portal进行工程设计的开放接口
TIA Portal V18包安装的流程和注意事项
PLC扫描周期与开关信号值的传递过程
TIA Portal V13 SP1上载程序步骤
STEP7(TIA Portal)TRACE功能全面解析
TIA Portal中的WAIT指令如何影响PLC扫描周期
评论