签到有奖
消息提醒
运维工程师专区
官方商城
扫码分享好友 任选多种周边
在程序中要实现一个功能:长按按钮C_MTC超过5秒钟切换S_MTC的状态。本来认为是一个非常简单的逻辑,所以第一次我是这么写的,其中T_PRES是记录按钮按下时间的变量。
第一次想象很简单:按钮按下超过5秒的上升沿,如果状态是1则复位状态,是0则置位状态。结果运行发现状态置位以后就复位不掉了,因为如果是置位状态,边沿触发后先复位紧接着就被置位。
第二次改成了下面的样子,觉得用两个触发是不是就可以了呢?
结果发现其实更糟糕,变成了两个边沿触发交替使能,最后只有置位有效,同样不能复位。为了能复位只有在复位后置位指令失去执行条件才可以,那么很简单,把计时变量清零就可以了,所以我又改成了下面的样子。
运行发现还是不行,因为前面扫描条件是满足的,在同一行里虽然把计时变量清零了也无效,最后的解决方案就是分成两行来判断,像下面的样子:
学习PLC第一个要理解的就是PLC的扫描机制:从左至右,从上至下循环扫描。在同一行程序里,后面的任何动作都不会影响前面的判断结果,所以前面几次有问题的逻辑都是在用人脑子想当然做了判断,换作PLC这个死脑筋就不灵了,这也是编程过程中常犯的错误。同样的功能,如果用上程序跳转就简单多了,各位高手指点一下吧。
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
帖子链接:https://www.ad.siemens.com.cn/club/bbs/post.aspx?a_id=1564469&b_id=4&s_id=0&num=19
这个问题实际上可以归纳为,单键状态切换之单键延时满足后的状态切换
谢谢,已经收藏备用
手册上有说明的
了解了扫描顺序,可以利用这个扫描顺序做文章的
在手册里面说了,应该是从上到下,从左到右
楼主深入细致地对问题进行研究并通过修改完善程序实现了预期,为你点赞!
温故知新!
从上到下 ,从左到右!!
扫描机制大家都理解,但是一旦编程时可能就忽略了,开始用自己想当然的判断来写逻辑了,最后调试有问题才发现是扫描机制不同,人脑子自动跳转了。
PLC编程确实是需要见多识广,否则容易闭门造车封闭在自己的思路里。做了十年的水处理控制,其实没有在编程上有太大长进,因为这行对程序要求不高,也就没有动力。最近在做一个编程标准化的研究,就是同类设备使用同样的功能块开发上下位,达到不同人开发不同项目功能和风格一致的目的。开始做才发现要考虑的问题非常多,命名的规则,程序功能,移植和复制的简便性,配套上位机的复用功能等很多问题要处理。如果有正在做类似工作的人大家可以互相交流一下。
理解扫描机制和顺序。
请问楼主,功能块的编程方式的扫描顺序也是这样吗?
循环扫描是重点
这是斑竹说的逻辑问题
明白扫描机制,应该知道第一个程序加两个中间变量就可以了,不需要弄的多复杂。
学习 学习
谢谢分享!
希望楼主多上传些解决问题的过程,我为你点赞、
我觉得没必要这样写,直接按下后,计数到你要的时长,给出一个tmp输出信号,这个输出信号再去置位最终输出信号,输出信号的置位不是你这个长按按钮要考虑的事情,它可以是一个手动复位,或者其他状态条件产生的复位信号,这样比较直观。
分享
扫码分享好友 任选多种好礼
收藏
有帮助
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!
密码至少8位,包含大、小写字母,数字和符号至少三种。
允许邮箱和手机接收来自支持中心网站的信息
我已同意《支持中心网站注册协议和隐私政策》
微信登录扫码一键登录
验证码登录
密码登录
二维码失效点击重试
打开微信扫一扫,快速登录/注册
未注册手机验证后自动登录,注册即代表同意《支持中心网站注册协议和隐私政策》
三日内免验证登录
短信登录
登录