电工学习网

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

西门子S7-1200 SCL 沿指令陷阱

[复制链接]
跳转到指定楼层
楼主
发表于 2020-9-16 13:17:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
近期做个项目,程序执行结果和预想的不同,主要是沿指令不按预想的去执行。因此单独把沿指令单独拿出来做个测试,项目用的是这样:

IF "Tag_2"  THEN   
         "R_TRIG_DB"(CLK := "Tag_2",
             Q => "Tag_3");

          IF "Tag_3" THEN
            "Tag_4":=TRUE  ;
        END_IF;
END_IF;

后改为 :
         "R_TRIG_DB"(CLK := "Tag_2",
           Q => "Tag_3");
IF "Tag_2"  THEN   
          IF "Tag_3" THEN
            "Tag_4":=TRUE  ;
        END_IF;
END_IF;
程序的本意是:"Tag_2" 接通的上升沿先做初始化处理,而后再处理其它逻辑,其它逻辑需要多个处理周期。实际上只有“Tag_2"第一次接通时逻辑处理结果正确。后把沿指令提到判断条件前,即判断语句的外面,程序运行正常。
原因分析:沿指令内部保存 CLK端信号的位,在执行该指令时改变。在IF语句中使用时, CLK 信号仅在第一次运行时与沿指令内部保存位不同。以后沿指令内部保存位与 CLK 信号都相同,所以沿指令就不会触发。
总结:
在SCL中使用 沿指令要保证每个周期都会扫描的该指令,在判断语句,或其它包围指令中使用沿指令要格外小心。
来源:西门子工业技术论坛

回复

使用道具 举报

沙发
发表于 2020-10-19 17:05:37 | 只看该作者
感谢大师。。。。。。。。。。。。

回复 支持 反对

使用道具 举报

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

本版积分规则

电工学习网 ( )

GMT+8, 2024-4-26 05:15

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

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

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

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