西门子S7-300/400PLC的上升沿、下降沿检测指令应用的问题

   2024-09-17 建材之家480
核心提示:PLC的上升沿、下降沿检测指令的功能需要至少两个扫描循环周期才能完成,即通过比较前后两个扫描周期同一个BOOL变量或RLO(逻辑运算结果)的状态来判断是否是上升沿、下降沿。 同一级的逻辑块的临时(TEMP)局部数据区是公用的,结束对FB、FC的调用后,它们的临时变量的值可能被别的逻辑块的临时变量覆盖掉。网友youhm的测试验证了这一结论。他说:“如果仅仅调用一个FC,代码放在FC里测试

PLC的上升沿、下降沿检测指令的功能需要至少两个扫描循环周期才能完成,即通过比较前后两个扫描周期同一个BOOL变量或RLO(逻辑运算结果)的状态来判断是否是上升沿、下降沿。
    同一级的逻辑块的临时(TEMP)局部数据区是公用的,结束对FB、FC的调用后,它们的临时变量的值可能被别的逻辑块的临时变量覆盖掉。网友youhm的测试验证了这一结论。他说:“如果仅仅调用一个FC,代码放在FC里测试实现了存储的功能,当调用多个FC,并且FC里都使用了临时变量,我在另外一个FC变量里把所有的临时变量都复位为0,这时在第一个FC里调用的这段代码就不能实现这个功能了,另外也测试了,在OB35里同时使用临时变量也是一样的效果”。
    因此用块的临时变量作上升沿、下降沿检测指令的边沿存储位来保存变量的状态是极其危险的,稍有不慎,可能会出现灾难性的后果。
    网友xiaode说:“最好还是不要用(临时变量作边沿存储器位),我以前使用过,造成的后果很严重。后来就学乖啦!”
    边沿存储位虽然允许使用L区(局部数据区),但是请注意,FB的L区包括静态变量和临时变量等,允许用L区并不说明用临时变量作边沿存储位是合理的。
    编程的最高境界是在FB、FC中全部使用局部变量,不使用像M这样的全局变量。这样的块不需作任何修改,就可以移植到其他项目。为此可以使用功能块的静态变量来作上升沿、下降沿检测指令的边沿存储位。这样不会出现使用临时变量带来的问题,也解决了块的可移植性问题。
    有个德国人作的符合IEC  61131-3标准的编程软件干脆就把边沿检测指令做成功能块(也可能是IEC 61131-3规定的指令),把使用临时变量作边沿存储位的路彻底堵死了。

 
【温馨提示】本文内容和观点为作者所有,本站只提供信息存储空间服务,如有涉嫌抄袭/侵权/违规内容请联系QQ:727533600 删除!
 
举报收藏 0打赏 0评论 0

上一篇:怎样学好PLC编程

看到很多网友问学习PLC的方法, 现将我个人学习PLC编程的心得总结如下,大家有更好的方法请补充:1.有一定的电工基础-----掌握传感器、接近开关、编马器、气动元件等常用器件的使用及继电器控制原理。2.再学数制及数制转换-----掌握二进制、八进制、十六进制、BCD码、ASCI码的概念。3.选择你所在地区流型的PLC品牌做为学...

下一篇:西门子PLC编程电缆与通讯电缆的DIY制作

 
更多>同类电工资讯
推荐图文
推荐电工资讯
点击排行
网站首页  |  关于我们  |  联系方式  |  用户协议  |  隐私政策  |  版权声明  |  网站地图  |  排名推广  |  广告服务  |  积分换礼  |  网站留言  |  RSS订阅  |  违规举报