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

发布时间:2023-10-26
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规定的指令),把使用临时变量作边沿存储位的路彻底堵死了。
上一个:类似海鸥这样的加速器有哪些(类似海鸥浏览器的有哪些)
下一个:MIUI5 怎么显示阴历,手机日期怎么显示阴历

英国的工程咨询外包市场
手机应用软件的安装包在哪里(手机应用安装包在哪个文件夹里)
抖音喜欢的一千多怎么删除,册除了好友赞不是没有了吗(抖音喜欢的一千多怎么删除,删除了别人知晓吗)
工程造价指标了解
电脑屏幕花屏横条纹闪,一体机电脑屏幕花屏横条纹闪
小编教你win10系统快捷键大全(win10快捷键大全)
nordic power驱动器维修
windows 0x80070035 找不到网络路径(0x80004005找不到网络路径)
茶文化的历程与内涵
fms张力控制器cmgz 309