可锐资源网

技术资源分享平台,提供编程学习、网站建设、脚本开发教程

[西门子PLC] 博途编程使用RETURN提高效率降低PLC扫描周期

PLC扫描周期概念:

PLC 的执行分成三个阶段:输入采样阶段、用户程序执行阶段、输出刷新阶段。

  1. 在输入采样阶段,PLC 会用扫描的方式依次读取所有的输入状态和数据,并且把它们存放在相应的输入映像寄存器里。等采样阶段结束了,就进入用户程序执行和输出刷新阶段。
  2. 在用户程序执行阶段,PLC 一直都是从上到下、从左到右的顺序依次扫描用户程序,然后依照逻辑运算的结果去刷新系统 RAM 存储区中对应位置的状态。
  3. 到了刷新输出阶段,在这个阶段,CPU 会按照 I/O 映像区内对应的状态和数据去刷新所有的输出锁存电路,再通过输出电路驱动对应的外部设备。到这时候,才是 PLC 真正的输出。PLC 执行的过程如下图所示:

在实际编程中PLC扫描周期越短越好,在极端条件下,甚至要求PLC扫描周期固定
下面说说
RETURN指令来改善RETURN!
RETURN 这个词,简单来说就是返回的意思。在程序当中,它能用来把控程序的执行流程,回到上级调用的地方。要是用得合适,能够提升程序执行的效率,让 PLC 的扫描周期缩短。

RETURN 属于程序控制指令,在博途的指令栏里能看到,程序控制指令还有像 JMP 和 SWITCH 这类的指令。

那到底啥是程序控制指令呢?咱们来看一下这段梯形图。要知道,PLC 执行梯形图的时候,一般是按照从上到下、从左到右的顺序,一行一行来执行的,通常情况就是这样。



那在程序里,是不是每个部分每次都必须得执行呢?其实不是这样的。就比如说这段自动程序,如果是在手动模式下,根本就不用执行。

在自动模式下,如果还没启动运行,流程步部分也不用执行。在启动运行之后,每次其实也就只需要执行当前的那一步程序。

好比说现在到流程步 2 了,实际上就只需要执行流程步 2 这个程序段,流程步 1 和流程步 3 都不用执行。好啦,那怎么去控制程序每次执行哪些部分,不执行哪些部分呢?这就是程序控制指令的用处啦。

程序控制指令能打乱 PLC 依次每行执行梯形图的顺序,它能跳过或者忽略程序里的部分梯形图。就像这个自动程序,咱们来改一改,第一个要求,手动模式的时候,不让这段程序执行,那就能够用 RETURN 指令来达成。




加上了这行梯形图,起到的作用是,要是处于手动模式,程序运行到程序段 1 之后,就会直接返回,不会去执行程序段 2 以及它下面的程序了。

那程序返回哪里去了呢?是返回调用当前这个块的地方。比如说在这儿,咱们是在 Auto 程序块 OB124 里,那就会返回调用 OB124 的地方接着往下执行。因为这个程序里就只有 OB124 和 OB1,所以后面就会接着执行 OB1 Main 程序块啦。

要是在 FC 函数或者 FB 功能块里使用 RETURN 指令的话,会返回调用这个 FC 函数或者 FB 功能块的地方接着向下执行。这就是 RETURN 指令的作用,能让程序马上返回到上一级调用的地方,然后再继续执行。

同样的道理,在自动模式下,如果没有启动运行,也能够使用 RETURN 指令马上返回。




当处于自动模式下,而且已经开始运行了,这时候就可以使用 JMP 跳转指令。根据当前步的情况,能把程序当前执行的位置,直接从程序段 4 跳到标签所在的地方。比如说当前步是 2 ,那程序在执行完程序段 4 之后,会直接跳过程序段 5 ,意思就是不执行程序段 5 啦,而是跳到程序段 6 所在的位置接着执行。





这就是 RETURN、JMP 等程序控制指令的用处,也就是按照需求,要么不执行当前块内的程序直接返回,要么跳过程序中间的一部分,接着去执行不挨着的程序段部分。

博主建议啊,除非扫描时间太长了,有很强烈的需要去优化程序,要不然还是谨慎使用程序控制指令,因为这类指令用得多了,调试和维护起来都不方便。

对于复杂的功能,可以用 SCL 语言里的 IF ELSE、FOR、SWITCH 等等来完成。


PLC编程使用RETURN提高效率降低扫描周期

http://bbs.plcjs.com/forum.php?mod=viewthread&tid=507224&fromuid=17

(出处: PLC论坛-全力打造可编程控制器专业技术论坛)

#非标自动化#

#西门子PLC#

控制面板
您好,欢迎到访网站!
  查看权限
网站分类
最新留言