电工学习网

 找回密码
 立即注册
查看: 2801|回复: 0

PLC的“扫描周期”

[复制链接]
发表于 2019-11-19 16:19:29 | 显示全部楼层 |阅读模式
扫描周期大家应该都知道,是plc完整扫描一遍程序的时间,PLC就像一个读报纸的人,而报纸上的内容就是程序,读完一次报纸的时间就是一个扫描周期。
这个扫描周期可以是指定一个时间,也可以不指定,指定时间时无论程序有多长,PLC都在设定的时间内全部读完,如果实在读不完,PLC就会报警,说明PLC的性能不够需要更换。时间不指定时PLC按照一个固定的速度去读程序,程序多时间长些,程序少时间就短。
但这并不是今天我们要说的重点,重点是如何从一个扫描周期的角度去看程序。
一个扫描周期下的IF指令习惯于梯形图编程的人可能不太会去关注一个扫描周期下的程序与连续运行的程序有何区别,因为梯形图最开始就是用来代替继电器的,采用的也是硬件的逻辑思维,但如果想要学习ST,你一定要知道程序在微观下与宏观下的区别,以及不同指令如何运行。
举个例子,判断下面这两段程序有没有区别:
0.jpg
程序1
1.jpg
程序2
从宏观上来看,这两段程序的效果都是iNumber变量+1后持续+10,iNumber的值一直在增长。
但是从一个扫描周期上来看,结果就完全不一样了,为了看到一个扫描周期下程序的运行结果,我们给两段程序加上限制条件,保证程序执行一个扫描周期:
2.jpg
程序1的运行结果
3.jpg
程序2的运行结果
注:iNumber的初始值=0。
可以看到,执行一个扫描周期以后,两段程序给出两个不同的结果,导致这个结果的原因是IF指令的运行特性导致的,一个IF语句在一个扫描周期内最多只执行其中的一个条件。
在程序1中,两个判断条件是由两个IF语句写出,条件1(iNumber=0)判断并执行后还会继续判断条件2(iNumber>0),所以最后的结果是iNumber=0+1+10=11。
而在程序2中,两个判断条件写入一个IF语句中,在程序读到IF语句时会依次判断IF下面的所有条件哪个成立,去执行条件成立下的程序。发现条件1(iNumber=0)成立,执行iNumber+1后跳出IF判断,后面的所有条件不再过问了。条件1下的程序执行后,iNumber=1,即便后面的条件2(iNumber>0)这时也成立了PLC也不会去管他了。
这个例子中IF的两个条件同时只有一个条件成立,那如果是在一个扫描周期下,有多个条件成立时PLC如何选择呢?我们稍微改下程序:
4.jpg
我们把条件2改为iNumber>-1,PLC复位后iNumber=0,同时满足两个判断条件,执行一个扫描周期后iNumber仍然=1,这里说明IF有多个条件同时成立时,执行第一个成立的条件。
不知道有没有人对我加的限制条件有点疑惑,bTrig触发后,程序立即复位了bTrig,也就是最外层的IF语句条件不成立了,为什么后面的程序还会执行呢?这里体现出IF语句的第三个特性,只要判断时条件成立,条件下的程序会全部执行,无论在这个过程中条件有没有变化。
当然,如果想要终止某个条件下程序的运行也是有方法的,可以使用RETURN指令。比如程序1,在条件1执行后我们不希望在执行条件2了的话,可以在条件1后面加一句return;PLC会跳出当前正在执行的指令。
5.jpg
RETURN指令
可以看到,在条件1执行后iNumber=1,满足了return的执行条件,返回上一层的IF语句,下面的条件不会再判断了。
总结:
一个IF语句在一个扫描周期内最多只执行其中的一个条件。
在一个扫描周期内IF语句有多个条件同时成立时,执行第一个成立的条件。
在一个扫描周期内IF语句只要判断时条件成立,条件下的程序会全部执行,无论在这个过程中条件有没有变化。

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

电工学习网 ( )

GMT+8, 2024-3-29 19:13

Powered by © 2011-2022 www.diangon.com 版权所有 免责声明 不良信息举报

技术驱动未来! 电工学习网—专业电工基础知识电工技术学习网站。

栏目导航: 工控家园 | 三菱plc | 西门子plc | 欧姆龙plc | plc视频教程

快速回复 返回顶部 返回列表