电工学习网

 找回密码
 立即注册
查看: 3481|回复: 2
打印 上一主题 下一主题

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

[复制链接]
跳转到指定楼层
楼主
发表于 2019-6-7 08:24:17 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
在程序中要实现一个功能:长按按钮C_MTC超过5秒钟切换S_MTC的状态。本来认为是一个非常简单的逻辑,所以第一次我是这么写的,其中T_PRES是记录按钮按下时间的变量。
由一条状态切换程序深入理解了PLC的扫描机制
第一次想象很简单:按钮按下超过5秒的上升沿,如果状态是1则复位状态,是0则置位状态。结果运行发现状态置位以后就复位不掉了,因为如果是置位状态,边沿触发后先复位紧接着就被置位。
第二次改成了下面的样子,觉得用两个触发是不是就可以了呢?
由一条状态切换程序深入理解了PLC的扫描机制
结果发现其实更糟糕,变成了两个边沿触发交替使能,最后只有置位有效,同样不能复位。为了能复位只有在复位后置位指令失去执行条件才可以,那么很简单,把计时变量清零就可以了,所以我又改成了下面的样子。
由一条状态切换程序深入理解了PLC的扫描机制

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

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

回复

使用道具 举报

沙发
 楼主| 发表于 2019-6-7 08:24:29 | 只看该作者
既然要判断长按、短按两种,逻辑上就是:
1、按下按钮时开始计时;
2、松开按钮下降沿时判断按下按钮的时长;
3、时长小于规定时间、时长大于等于规定时间则执行不同的分支。
这样逻辑上就不会乱了。高级语言编程经常用到这样的逻辑。

回复 支持 反对

使用道具 举报

板凳
 楼主| 发表于 2019-6-7 08:24:54 | 只看该作者
习惯了LAD编程,总是不自觉把很多想法的元素压缩进一行里面。严格讲梯形图不是一种纯粹的逻辑语言,其中带有很多直觉的“叙事”成份。这是图形语言的形式特点导致的。
SCL则是数学化的,因此单行逻辑可以做到非常纯粹。就是一眼看去比较杂,彻底废除了图形表达的直觉效率。
FBD居中,即有图形化,逻辑也比较清晰。
总结起来就是:图形的表达效率很高,一眼之间包含信息很多,但正因为如此,在细节上就不纯粹容易混淆。在定点式的精确逻辑因果上,比不了运算式逻辑。
自己也是近一个半月才开始学习用SCL,再加上官方示例有一些是用FBD写的。逐渐学会运用这两种语言后,在考虑方式上的确和以前有些不同,仔细回想分析,就得出上面的结论。
复杂的组合逻辑和循环,现在都用SCL。

回复 支持 反对

使用道具 举报

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

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-26 00:43

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

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

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

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