2009-11-06
在程序中编制报警部分内容,涉及到如何判断一个32位变量(或64位)中任意一位从0到1的变化,当有变化时,说明有报警产生,设备需要做相应的动作,如塔灯红灯亮起、蜂鸣器开响,设备停止运行等。各位高手给个思路,谢谢!
再表述一遍这个问题:
即任意一位从0变到1时,输出一个二进制值(变为1),而从1到0的变化却不输出?
本文被马军成版主评为精华 理由--能够深入讨论实质技术问题
评论9
楼主 2009/10/29 13:42:38
存储该变量的上一个值,然后读取新值。接下来做新值和旧值的逐位运算,旧值逐位取补(即0、1置换),然后和新值逐位相与,所得就是你要的结果。
楼主 2009/10/29 15:50:59
楼主 2009/10/29 16:02:14
我先试试二楼的思路,对于3#的我觉得如果按位处理是不是比较繁琐,如何上升沿触发?可不可以说的详细点,谢谢!!
楼主 2009/10/29 16:16:34
L MD4 //上一周期的值
L MD0
T MD4
2#的看看对不对,谢谢!
楼主 2009/10/29 16:47:34
不太熟悉你用的语言,但从逻辑上看流程是对的。
二三步之间要保证新旧值不丢。
你可以自己输入几个变量模拟测一下结果。:-)
楼主 2009/10/29 16:56:26
可以用上升沿触发的硬件直接得到输出,或配合程序实现。
楼主 2009/10/30 14:55:10
3#的同仁,我编程采用的是STL语言,也是 PLC一种基本编程语言,不过忘了告诉你是针对Siemens S7系列PLC的!我通过模拟软件是了一下,完全可以实现要求的功能,谢了!!!
楼主 2009/11/4 14:58:48
希望你能保持并深入讨论技术问题。
楼主 2009/11/6 8:09:58
好思路啊