在程序中编制报警部分内容,涉及到如何判断一个32位变量(或64位)中任意一位从0到1的变化,当有变化时,说明有报警产生,设备需要做相应的动作,如塔灯红灯亮起、蜂鸣器开响,设备停止运行等。各位高手给个思路,谢谢!
再表述一遍这个问题:
即任意一位从0变到1时,输出一个二进制值(变为1),而从1到0的变化却不输出?
本文被马军成版主评为精华 理由--能够深入讨论实质技术问题
-
-
goldjack 发表于 2009/10/29 13:42:38
存储该变量的上一个值,然后读取新值。接下来做新值和旧值的逐位运算,旧值逐位取补(即0、1置换),然后和新值逐位相与,所得就是你要的结果。
引用 goldjack 2009/10/29 13:42:38 发表于2楼的内容
-
引用 yanjunan 2009/10/29 15:50:59 发表于3楼的内容
-
引用 hylotus 2009/10/29 16:02:14 发表于4楼的内容
-
-
hylotus 发表于 2009/10/29 16:16:34
L MD4 //上一周期的值5楼 回复本楼
INVD //取反,则上一周期为0的,取反后为1
L MD0 //和当前周期的值
AND //做与
L L#0 //如果ACC1不为0,则表示至少有一位
<>D //在上一个周期为0,当前周期为1
= Q0.0L MD0
T MD4
2#的看看对不对,谢谢!
引用 hylotus 2009/10/29 16:16:34 发表于5楼的内容
-
引用 goldjack 2009/10/29 16:47:34 发表于6楼的内容
-
引用 goldjack 2009/10/29 16:56:26 发表于7楼的内容
-
-
hylotus 发表于 2009/10/30 14:55:10
3#的同仁,我编程采用的是STL语言,也是 PLC一种基本编程语言,不过忘了告诉你是针对Siemens S7系列PLC的!我通过模拟软件是了一下,完全可以实现要求的功能,谢了!!!8楼 回复本楼
引用 hylotus 2009/10/30 14:55:10 发表于8楼的内容
-
引用 马军成 2009/11/4 14:58:48 发表于9楼的内容
-
引用 xujun_127 2009/11/6 8:09:58 发表于10楼的内容