0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

TIA Portal中的WAIT指令如何影响PLC扫描周期

工控论坛 来源:工控老炮儿 2026-04-02 09:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

来源:工控老炮儿

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 等待子程序,将时间单位设定为秒。如下图:

42732a36-2d0b-11f1-90a1-92fbcf53809c.png

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

42d9b21a-2d0b-11f1-90a1-92fbcf53809c.png

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

43343fc8-2d0b-11f1-90a1-92fbcf53809c.png

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

438f5e30-2d0b-11f1-90a1-92fbcf53809c.png

可以看到循环扫描时间加长了 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 指令来观察上升沿的变化过程。

上次扫描周期:

43e66f0e-2d0b-11f1-90a1-92fbcf53809c.png

当前扫描周期:

443953f4-2d0b-11f1-90a1-92fbcf53809c.png

六、总结与思考

通过 WAIT 指令的研究,我们可以得出以下几点结论:

1. 扫描周期是 PLC 运行的基础

输入采样、程序执行、输出刷新三个阶段构成了 PLC 的基本工作模式,理解这一点是掌握 PLC 编程的前提。

2. WAIT 指令是一把“双刃剑”

它可以帮助我们调试程序、排查问题,但也会拉长扫描周期、影响定时精度。

3. 定时器的异步刷新特性需要重视

定时器是独立于扫描周期运行的,检查定时完成状态却依赖于程序扫描,这决定了定时器不适合用于精确定时。

4. 选择合适的工具做合适的事

对于需要精确定时的场景,循环中断(OB30)+计数器是更好的选择。

例如:

4491e0e6-2d0b-11f1-90a1-92fbcf53809c.png

这种方案使用的是 CPU 执行周期(循环中断)作为计时基准,配合计数器(如 Int、DInt 变量) 来实现精确定时。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • plc
    plc
    +关注

    关注

    5052

    文章

    14772

    浏览量

    488359
  • 指令
    +关注

    关注

    1

    文章

    624

    浏览量

    37661
  • 程序
    +关注

    关注

    117

    文章

    3847

    浏览量

    85448

原文标题:TIA Portal 中的 WAIT 指令:让 PLC 程序慢下来

文章出处:【微信号:gkongbbs,微信公众号:工控论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Teamcenter、TIA Portal、NX MCD是如何结合在一起

    看看窗外的世界,可惜效果一直很不好,因为一直找不到一个很好的点~今天就来谈一谈Teamcenter、TIA Portal和虚拟调试能够如何结合在一起,为了让搞PLC的,搞虚拟调试的和搞PLM的都...
    发表于 07-02 07:52

    Teamcenter、TIA Portal和虚拟调试如何才能结合在一起

    PDM是什么?PLM是什么?Teamcenter、TIA Portal和虚拟调试如何才能结合在一起?
    发表于 09-29 07:36

    教学:把TPS-1加进TIA PORTAL

    瑞萨电子TPS-1教学-第四讲把TPS-1加进TIA PORTAL
    的头像 发表于 07-20 01:58 4041次阅读

    PLC编程的FOR循环指令案例详解

    如上图,程序的执行过程主要分为3个步骤,输入检测、程序扫描、输出刷新。这是plc一个工作周期的工作顺序,在扫描的时候某些程序段需要执行多遍,这个时候我们可以使用FOR
    发表于 05-01 15:38 3.1w次阅读
    <b class='flag-5'>PLC</b>编程<b class='flag-5'>中</b>的FOR循环<b class='flag-5'>指令</b>案例详解

    PLC扫描周期_PLC输入/输出滞后时间

    PLC在RUN工作模式时,执行一次扫描操作所需的时间称为扫描周期,其典型值为1~100ms。
    发表于 04-25 09:23 1.4w次阅读
    <b class='flag-5'>PLC</b>的<b class='flag-5'>扫描</b><b class='flag-5'>周期</b>_<b class='flag-5'>PLC</b>输入/输出滞后时间

    基于TIA Portal下的TCP通讯的方法详解

    基于TIA Portal下的TCP通讯的方法 PLCPLC通过TCP连接控制!对于现场经费需要优化的厂家来说无疑是一种很简便得方法: PLC
    的头像 发表于 12-03 16:37 5377次阅读

    TIA Portal调整KUKA标准IO的数量

    在 WorkVisual 和 TIA Portal 设置的标准 IO 数量必须相同。为此,可以调整例如 TIA Portal
    的头像 发表于 03-17 09:59 3101次阅读

    STEP7(TIA Portal) 各种图标的含义

    在 STEP7 (TIA Portal,不同的视图使用不同的图标表示设备及程序的状态, 通过这些图标可以有助于快速诊断故障。
    的头像 发表于 04-11 10:03 6523次阅读

    西门子要将LAD指令PLC变量互连

    TIA Portal ,可以在程序段创建用户程序时直接创建变量。 以下步骤介绍了如何定义 PLC 变量以及将插入的 LAD
    的头像 发表于 04-27 16:10 3680次阅读

    使用TIA Portal进行工程设计的开放接口

    TIA Portal Openness V16 中提供了以下新功能和创新。您可以在产品文档的各个部分中找到有关各种主题的更多详细信息。
    的头像 发表于 07-05 14:21 3811次阅读

    TIA Portal V18包安装的流程和注意事项

    博途TIA Portal的最初版是V10,在2009发布的,用于S7-1200系列PLC的编程,版本名称是TIA Portal V10.5
    的头像 发表于 12-07 18:04 2.3w次阅读

    PLC扫描周期与开关信号值的传递过程

    的时间称作扫描周期PLC运行正常 时,扫描周期的长短与CPU的运算速度、I/O点的情况、用户应用程序的长短及编程情况等有关,不同
    发表于 04-17 15:58 0次下载
    <b class='flag-5'>PLC</b><b class='flag-5'>扫描</b><b class='flag-5'>周期</b>与开关信号值的传递过程

    TIA Portal V13 SP1上载程序步骤

    。 如果 PLC 设备的程序是使用 TIA Portal 老版本生成的,使用 STEP7 V13 SP1 上载时,必须使用兼容模式的项目文件进行操作。
    发表于 10-25 10:24 4304次阅读
    <b class='flag-5'>TIA</b> <b class='flag-5'>Portal</b> V13 SP1上载程序步骤

    STEP7(TIA Portal)TRACE功能全面解析

    在配置轨迹记录的条件时,STEP 7 (TIA Portal) 软件会计算出记录的最大持续时间和显示最大的测量点数目。测量点数量跟CPU中用于存储轨迹记录的内存大小和记录PLC变量需要的内存大小有关。
    发表于 03-08 14:30 5272次阅读
    STEP7(<b class='flag-5'>TIA</b> <b class='flag-5'>Portal</b>)TRACE功能全面解析

    三菱PLC扫描周期详解

    信号的响应速度以及控制输出的实时性。本文将对三菱PLC扫描周期进行详细的讲解,包括其定义、影响因素、优化方法以及在实际应用的重要性。
    的头像 发表于 06-18 09:35 6187次阅读