技术论坛

由一条状态切换程序深入理解了PLC的扫描机制

作者 主题
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
主题:【分享】由一条状态切换程序深入理解了PLC的扫描机制
精华帖精华帖星级2级 精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 2019-06-06 23:41:44

在程序中要实现一个功能:长按按钮C_MTC超过5秒钟切换S_MTC的状态。本来认为是一个非常简单的逻辑,所以第一次我是这么写的,其中T_PRES是记录按钮按下时间的变量。

第一次想象很简单:按钮按下超过5秒的上升沿,如果状态是1则复位状态,是0则置位状态。结果运行发现状态置位以后就复位不掉了,因为如果是置位状态,边沿触发后先复位紧接着就被置位。

第二次改成了下面的样子,觉得用两个触发是不是就可以了呢?

结果发现其实更糟糕,变成了两个边沿触发交替使能,最后只有置位有效,同样不能复位。为了能复位只有在复位后置位指令失去执行条件才可以,那么很简单,把计时变量清零就可以了,所以我又改成了下面的样子。


运行发现还是不行,因为前面扫描条件是满足的,在同一行里虽然把计时变量清零了也无效,最后的解决方案就是分成两行来判断,像下面的样子:



学习PLC第一个要理解的就是PLC的扫描机制:从左至右,从上至下循环扫描。在同一行程序里,后面的任何动作都不会影响前面的判断结果,所以前面几次有问题的逻辑都是在用人脑子想当然做了判断,换作PLC这个死脑筋就不灵了,这也是编程过程中常犯的错误。同样的功能,如果用上程序跳转就简单多了,各位高手指点一下吧。


污水处理自控工程师,简称污师。
分享帖版主置评: 编程实际上就是一种思维方式的体现。虽然楼主的思维方式还不那么正确,但很高兴终于有人来探讨这个问题了。 (推荐人:Zane)
以下网友喜欢您的帖子:

  
重要声明:

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1564469&b_id=4&s_id=0&num=19

版主

经验值: 76240
发帖数: 19148
精华帖: 378
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 1楼 2019-06-06 23:59:00

这个问题实际上可以归纳为,单键状态切换之单键延时满足后的状态切换


Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
至圣

经验值: 12573
发帖数: 2503
精华帖: 31
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 2楼 2019-06-07 00:19:31
既然要判断长按、短按两种,逻辑上就是:
1、按下按钮时开始计时;
2、松开按钮下降沿时判断按下按钮的时长;
3、时长小于规定时间、时长大于等于规定时间则执行不同的分支。
这样逻辑上就不会乱了。高级语言编程经常用到这样的逻辑。
 
以下网友喜欢您的帖子:

  
至圣

经验值: 10584
发帖数: 1796
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 4楼 2019-06-07 07:09:51


谢谢,已经收藏备用


 
以下网友喜欢您的帖子:

  
至圣

经验值: 69053
发帖数: 12266
精华帖: 59
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 5楼 2019-06-07 07:44:08

手册上有说明的

了解了扫描顺序,可以利用这个扫描顺序做文章的

在手册里面说了,应该是从上到下,从左到右


Q群:https://jq.qq.com/?k=9BDuEgf6
以下网友喜欢您的帖子:

  
奇侠

经验值: 7267
发帖数: 558
精华帖: 2
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 6楼 2019-06-07 09:54:31

楼主深入细致地对问题进行研究并通过修改完善程序实现了预期,为你点赞!


低调做人 高调做事
以下网友喜欢您的帖子:

  
至圣

经验值: 18926
发帖数: 2108
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 7楼 2019-06-07 14:20:03

 

温故知新!


 
以下网友喜欢您的帖子:

  
至圣

经验值: 37447
发帖数: 5133
精华帖: 47
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 8楼 2019-06-08 12:13:16

从上到下 ,从左到右!!




工业起重机防摇摆 QQ:404136820 AntiSwayControl
以下网友喜欢您的帖子:

  
版主

经验值: 76240
发帖数: 19148
精华帖: 378
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 9楼 2019-06-08 13:37:56
呵呵,这不仅是对PLC程序扫描机制的理解,更是对控制对象控制逻辑本身的一个理解,我认为大部分的问题出在后者而不是前者
Zane 注册自动化系统工程师 Always save before download
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 10楼 2019-06-09 09:36:46
以下是引用Zane在2019-06-08 13:37:56的发言 >9楼:呵呵,这不仅是对PLC程序扫描机制的理解,更是对控制对象控制逻辑本身的一个理解,我认为大部分的问题出在后者而不是前者

扫描机制大家都理解,但是一旦编程时可能就忽略了,开始用自己想当然的判断来写逻辑了,最后调试有问题才发现是扫描机制不同,人脑子自动跳转了。


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
奇侠

经验值: 8877
发帖数: 2002
精华帖: 12
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 楼主 11楼 2019-06-09 23:39:30
以下是引用will666在2019-06-06 23:41:44的发言 >楼主

在程序中要实现一个功能:长按按钮C_MTC超过5秒钟切换S_MTC的状态。本来认为是一个非常简单的逻辑,所以第一次我是这么写的,其中T_PRES是记录按钮按下时间的变量。

第一次想象很简单:按钮按下超过5秒的上升沿,如果状态是1则复位状态,是0则置位状态。结果运行发现状态置位以后就复位不掉了,因为如果是置位状态,边沿触发后先复位紧接着就被置位。

第二次改成了下面的样子,觉得用两个触发是不是就可以了呢?

结果发现其实更糟糕,变成了两个边沿触发交替使能,最后只有置位有效,同样不能复位。为了能复位只有在复位后置位指令失去执行条件才可以,那么很简单,把计时变量清零就可以了,所以我又改成了下面的样子。


运行发现还是不行,因为前面扫描条件是满足的,在同一行里虽然把计时变量清零了也无效,最后的解决方案就是分成两行来判断,像下面的样子:



学习PLC第一个要理解的就是PLC的扫描机制:从左至右,从上至下循环扫描。在同一行程序里,后面的任何动作都不会影响前面的判断结果,所以前面几次有问题的逻辑都是在用人脑子想当然做了判断,换作PLC这个死脑筋就不灵了,这也是编程过程中常犯的错误。同样的功能,如果用上程序跳转就简单多了,各位高手指点一下吧。

PLC编程确实是需要见多识广,否则容易闭门造车封闭在自己的思路里。做了十年的水处理控制,其实没有在编程上有太大长进,因为这行对程序要求不高,也就没有动力。最近在做一个编程标准化的研究,就是同类设备使用同样的功能块开发上下位,达到不同人开发不同项目功能和风格一致的目的。开始做才发现要考虑的问题非常多,命名的规则,程序功能,移植和复制的简便性,配套上位机的复用功能等很多问题要处理。如果有正在做类似工作的人大家可以互相交流一下。


污水处理自控工程师,简称污师。
以下网友喜欢您的帖子:

  
至圣

经验值: 12543
发帖数: 1843
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 12楼 2019-06-10 08:09:23

理解扫描机制和顺序。


邮箱 yongquancun@126.com
以下网友喜欢您的帖子:

  
侠圣

经验值: 3658
发帖数: 268
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制
推荐帖


只看楼主 只看精华 只看精编 13楼 2019-06-10 09:42:21

请问楼主,功能块的编程方式的扫描顺序也是这样吗?


努力屯田中!
以下网友喜欢您的帖子:

  
奇侠

经验值: 6042
发帖数: 939
精华帖: 4
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖


只看楼主 只看精华 只看精编 14楼 2019-06-10 09:59:33

循环扫描是重点


不患无位,患所以立
以下网友喜欢您的帖子:

  
至圣

经验值: 13022
发帖数: 1815
精华帖: 22
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 15楼 2019-06-10 13:37:35

这是斑竹说的逻辑问题


 
以下网友喜欢您的帖子:

  
侠士

经验值: 1660
发帖数: 81
精华帖: 1
回复:由一条状态切换程序深入理解了PLC的扫描机制
精编帖 推荐帖


只看楼主 只看精华 只看精编 16楼 2019-06-11 10:32:14

明白扫描机制,应该知道第一个程序加两个中间变量就可以了,不需要弄的多复杂。



 
以下网友喜欢您的帖子:

  
侠士

经验值: 1173
发帖数: 44
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制


只看楼主 只看精华 只看精编 17楼 2019-06-12 06:56:37


学习  学习


做好自己的事...........
以下网友喜欢您的帖子:

  
至圣

经验值: 15532
发帖数: 1735
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制


只看楼主 只看精华 只看精编 18楼 2019-06-12 07:18:50

 


谢谢分享!


海纳百川,厚德务实!
以下网友喜欢您的帖子:

  
游民

经验值: 83
发帖数: 10
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制


只看楼主 只看精华 只看精编 19楼 2019-06-18 16:43:18


希望楼主多上传些解决问题的过程,我为你点赞、


 
以下网友喜欢您的帖子:

  
侠客

经验值: 793
发帖数: 47
精华帖: 0
回复:由一条状态切换程序深入理解了PLC的扫描机制


只看楼主 只看精华 只看精编 20楼 2019-06-23 09:02:47

我觉得没必要这样写,直接按下后,计数到你要的时长,给出一个tmp输出信号,这个输出信号再去置位最终输出信号,输出信号的置位不是你这个长按按钮要考虑的事情,它可以是一个手动复位,或者其他状态条件产生的复位信号,这样比较直观。


 
以下网友喜欢您的帖子:

  
收起
由一条状态切换程序深入理解了PLC的扫描机制
您收到0封站内信:
×
×
信息提示
很抱歉!您所访问的页面不存在,或网址发生了变化,请稍后再试。