PLC扫描周期概念:
PLC 的执行分成三个阶段:输入采样阶段、用户程序执行阶段、输出刷新阶段。
- 在输入采样阶段,PLC 会用扫描的方式依次读取所有的输入状态和数据,并且把它们存放在相应的输入映像寄存器里。等采样阶段结束了,就进入用户程序执行和输出刷新阶段。
- 在用户程序执行阶段,PLC 一直都是从上到下、从左到右的顺序依次扫描用户程序,然后依照逻辑运算的结果去刷新系统 RAM 存储区中对应位置的状态。
- 到了刷新输出阶段,在这个阶段,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论坛-全力打造可编程控制器专业技术论坛)