发布于 2011-12-15 16:10:05
3楼
提供一个稍微不同的思路,适合点数比较多的情况。只要你不是226的CPU后面的I1.6和I1.7应该恒为0,如果是226的,取信号时就要按位对应了。
//网络1:状态字节检测
LD sm0.0
MOVB IB1,VB0 //取得过程信号到内存
MOVW 0,VW2
FOR LW0,1,8
LPS
A V0.0
+I 1,VW2
LPP
SRB VB0
NEXT
//以上代码检测状态字节里面有多少个位为on
//网络2:输出对照表
LD M0.0
=Q0.0 //一号泵启动输出
LD M0.1
=Q0.1 //二号泵启动输出
//网络3:输出控制
LDW<= VW2,3
S M0.0 ,1 //当小于等于3个状态位信号为on时,一号泵启
R M0.1 ,1 //同时关闭二号泵
LDW> VW2,3
S M0.0,2 //当大于三个状态位信号为on时,双泵启
程序没有测,可能有错误,这里就是给楼主提供一个用移位指令来判断当前状态的思路。
有善有恶意之动