直播课堂
HOME
直播课堂
正文内容
PLC编程循环不止 PLC编程,循环语句怎样防止陷入死循环呢
发布时间 : 2026-02-02
作者 : 小编
访问数量 : 23
扫码分享至微信

PLC编程,循环语句怎样防止陷入死循环呢

EXIT语句

如果 FOR、WHILE 等循环中使用了 EXIT 指令,那么无论结束条件如何,内循环立即停止,

示例:使用 EXIT 指令避免当使用循环语句时出现除零。

CONTINUE 语句

该指令为 IEC 61131-3 标准的扩展指令,CONTINUE 指令可以在 FOR、WHILE 和 REPEAT 三

种循环中使用。

CONTINUE 语句中断本次循环,忽略位于它后面的代码而直接开始一次新的循环。当多个循环

嵌套时,CONTINUE 语句只能使直接包含它的循环语句开始一次新的循环。

示例:使用 CONTINUE 指令避免当使用迭代语句时中出现除零。

JMP 语句

跳转语句,跳转指令可以用于无条件跳转到使用跳转好标记的代码行,具体格式如下。

<标识符>:

.

JMP <标识符>;

<标识符>可以是任意的标识符,它被放置在程序行的开始。JMP 指令后面为跳转目的地,即一

个预先定义的标识符。 当执行到 JMP 指令时,将跳转到标识符所对应的程序行。

注意:

必须避免制造死循环,可以配合使用 IF 条件控制跳转指令。

示例:使用 JMP 语句实现计数器在 0..10 范围内循环。

上例中的 Label1 和 Label2属于标签,不属于变量,故在程序中不需要进行变量声明。

通过 IF 语句判断计数器是否在 0-10 的范围内,如果在范围内,则执行语句 JMP Label2,程序

会在下一个周期跳转到至 Label2,执行程序 nCounter:=nCounter+1,将计数器进行自加 1,反之,

则会跳转至 Label1,执行 nCounter:=0,将计数器清零。

RETURN 指令

RETURN 指令是返回指令,用于退出程序组织单元(POU),具体格式如下。

RETURN;

示例使用 IF语句作为判断,当条件满足时,立即终止执行本程序。

VAR

nCounter: BYTE;

bSwitch: BOOL; (*开关信号*)

END_VAR

IF bSwitch=TRUE THEN

RETURN;

END_IF;

nCounter:= nCounter +1;

当 bSwitch 为 FALSE 时,nCounter 始终执行自加 1,如 bSwitch 为 TRUE 时, nCounter 保持上

一周期的数值,立刻退出此程序组织单元(POU)。

编者旨在与对Codesys感兴趣的同学一起分享交流,欢迎关注!关注!关注!转发,然后私信我关键字“资料”。

搞不懂PLC循环程序编写,那都算不上大佬

前言

学习S7-300/400,不能仅仅局限于阅读或编写一段程序,更要从本质上认识PLC,方能更好的驾驭它。

一、PLC的循环处理过程

CPU中的程序分为操作系统用户程序

操作系统 用来处理PLC的起动、刷新输入/输出过程映像区、调用用户程序、处理中断和错误、管理存储区和通信等任务。

用户程序 由用户根据需求自己编写,以完成特定的控制任务。STEP7将用户编写的程序和数据维护在"块"中,如功能块FB、功能FC和数据块DB等。

PLC采用循环扫描的方式执行用户程序,即扫描工作方式。

图1 PLC的扫描工作方式

1. PLC得电或由STOP模式切换到RUN模式时,CPU起动,同时清除没有保持功能的位存储器、定时器、计数器,清除中断堆栈和块堆栈的内容,复位保存的硬件中断等。

2. 执行"系统起动组织块"OB100,该组织块可以自定义编程,实现一些初始化的工作;

3. 系统进入周期扫描,并起动循环时间监控;

4. CPU将输出过程映像区的数据写入输出模块;

5. 读取输入模块的状态,并写入输入过程映像区;

6. CPU调用OB1,执行用户程序,期间,根据需要可调用其他逻辑块(FB、SFB、FC及SFC),来实现控制任务;

7. 在循环结束时,操作系统执行所有挂起的任务,例如下载和删除块、接收和发送全局数据等;

8. CPU返回"第3步",重新启动循环时间监控。

9、在执行用户程序的过程中,如果有中断事件发生,当前执行的块将暂停执行,转而执行相应的组织块,来响应中断。该组织块执行完成后,之前被暂停的块将从中断的地方继续开始执行。OB1具有很低的优先级,除了OB90外,所有的组织块都能中断OB1。

二、过程映像区

PLC的存储器中,特别设置了一片区域用来存放输入信号和输出信号的状态,分别称之为输入过程映像区和输出过程映像区。在循环程序处理过程中,CPU不会直接访问I/O模块,而是访问CPU内部的过程映像区。

如图1所示,在整个扫描周期内,CPU会分配一段时间集中将输出过程映像区的状态传送给输出模块。同样,输入模块的状态/数据也是集中、统一读入输入过程映像区。在程序的执行阶段,CPU只和输入/输出过程映像区做数据交互,这样做的好处是,即使外部输入信号的状态发生变化,输入过程映像区的状态也暂时不变,可防止程序执行时发生"紊乱";而给到输出模块的数据是"同时"的,也可有效避免执行机构的动作序列的不同步。

对过程映像区的访问可以以位、字节、字 以及双字 的方式进行。

图2 过程映像区直接寻址

如图2所示,假设其为输入过程映像区的一部分:

· I1.3 即可访问到粉色部分的内容,即寻址一个位;· IB0 即可访问绿色部分的内容,即寻址一个字节;· IW2 :即可访问蓝色部分的内容,即寻址一个字;· ID4 即可访问橙色部分的内容,即寻址双字;

三、扫描循环时间

扫描循环时间是指图1中相邻两次"循环时间监控"之间的时间,它与用户程序的复杂程度及CPU执行指令的速度有关。如下为315和416两款CPU的指令执行速度,相比315,CPU416的执行速度快很多。

CPU 315-2DP:0.3ms/1000条指令;

CPU416-2DP:0.08ms/1000条指令

扫描循环时间不是一成不变的,以下事件都会延长循环时间:

· 中断 · 诊断和故障处理 · 测试和调试功能 · 通讯 · 传送和删除块 · 压缩用户程序存储器 · 读/写MMC卡

图3 最大循环时间与最小循环时间

如图3所示,在硬件组态中,可以修改最大循环时间,默认150ms。如果实际的循环时间超出设置的最大时间,CPU会调用组织块OB80,在其中响应这个故障。如果OB80中未编写程序,CPU将转入STOP模式。

400的CPU中还可以设置最小扫描周期,当用户程序较为简单,使得循环时间太短时,过程映像区会太过频繁的刷新,设置最小扫描周期可以避免这种情况。

四、系统的响应时间

PLC的外部输入信号发生变化的时刻到它所控制的外部输出信号发生变化的时刻之间的时间间隔,称之为系统的响应时间。它由以下三部分组成:

1、输入电路的滤波时间

输入模块通过RC滤波电路来过滤输入端引入的干扰,并消除因外接输入触点的动作时产生的抖动而引起的不良影响,滤波电路的时间常数决定了输入滤波时间的长短,一般为10ms左右。

2、输出电路的滞后时间

输出模块的滞后时间与模块的类型有关,

· 继电器型输出电路的滞后时间一般在10ms左右;

· 双向晶闸管型输出电路在负载通电时的滞后时间约为1ms,负载由通电到断电时的最大滞后时间为10ms;

· 晶体管型输出电路的滞后时间一般在1ms以下。

3、CPU扫描循环工作方式带来的滞后时间

由扫描工作方式引起的滞后时间最坏的情况下,可达2-3个扫描周期。

PLC总的响应延迟时间一般只有几毫秒到几十毫秒,对于一般的系统是无关紧要的。在一些特殊应用场合,要求输入、输出信号之间的滞后时间尽可能短的时候,可以选用扫描速度更快的PLC或采取中断等措施。

相关问答

plc如何实现不同程序循环?

要用PLC实现程序的无限循环,我们可以使用时间顺序循环的指令,指令如下:1、用时间继电器T0驱动T1。2、再由T1驱动T2。3、T2驱动T3。4、直到最后一个,用TN...

三菱plc怎么让程序重复循环多次?

你好,可以使用循环指令来让某段程序重复运行。常用的循环指令有以下几种:1.MUL指令:按照循环次数重复执行一个程序段。2.FOR指令:按照循环次数重复执行一...

西门子1500PLC转到在线时循环周期过大怎么回事,怎么解决?

有可能是程序过大,造成扫描周期过长,也有可能程序编写有问题造成死循环,另外就是硬件问题。有可能是程序过大,造成扫描周期过长,也有可能程序编写有问题造成...

怎么让plc程序循环3次后停止?

要让PLC程序循环3次后停止,可以在程序中设置一个计数器,每次循环时计数器加1,当计数器达到3时停止循环。可以使用一个循环结构来实现这个功能,例如使用一个fo...

plc程序如何实现循环动作?

要用PLC实现程序的无限循环,我们可以使用时间顺序循环的指令,指令如下:1、用时间继电器T0驱动T1。2、再由T1驱动T2。3、T2驱动T3。4、直到最后一个,用TN...

plc中怎么样才能让程序循环7次?

1.可以让程序循环7次。2.在PLC编程中,可以使用计数器来实现循环的功能。通过设置一个计数器,每次循环时将计数器加1,当计数器的值达到7时,跳出循环。3.此...

plc循环停止怎么在完成任务后停止?

PLC循环停止可以通过使用“结束”“STOP”或“BREAK”指令实现。当遇到这些指令时,PLC程序将停止执行并保持当前状态。如果需要在完成特定任务后停止循环,可...

plc怎么处理for循环语句时其他指令执行吗?

PLC是循环扫描方式进行,遇到循环指令时会优先读出循环指令里面的程序,其他指令暂不执行,但会写入。上一扫描周期的信息。PLC是循环扫描方式进行,遇到循环...

plc如何做按一下通再按一下断?

您好,PLC可以通过以下步骤实现按一下通再按一下断的功能:1.配置一个输入口(如X0)用于接收按键输入信号。2.在PLC程序中配置一个状态变量(如Status),用...

plc如何循环执行?

在PLC的程序中,循环执行可以通过使用循环指令来实现。PLC的循环指令通常分为两种:定长循环和条件循环。1.定长循环定长循环指令是由一个计数器和一个定值组...

 化妆品进货网站  辽宁女篮名单 
王经理: 180-0000-0000(微信同号)
10086@qq.com
北京海淀区西三旗街道国际大厦08A座
©2026  上海羊羽卓进出口贸易有限公司  版权所有.All Rights Reserved.  |  程序由Z-BlogPHP强力驱动
网站首页
电话咨询
微信号

QQ

在线咨询真诚为您提供专业解答服务

热线

188-0000-0000
专属服务热线

微信

二维码扫一扫微信交流
顶部