发表于:2004-04-01 14:59:00
60楼
个人感觉可以用先入先出表来做,以下做比较简单的说明(S7-200)
程序里只考虑了每2小时轮换一组泵,及从高压侧到低压侧的转换和从低压侧到高压侧的转换,没有考虑泵的故障退出问题,但是加上去应该不难。因为只是随便写了一下,也没有经过调试,程序可能会有错误,我只是写出来代表我的控制算法。
//Main
LD SM0.1
R Q0.0, 7
MOVW +6, VW100 //最大填表数
ATT +1, VW100
ATT +2, VW100
ATT +3, VW100
ATT +4, VW100
ATT +5, VW100
ATT +6, VW100
.......
LD I0.0 //系统启动
O Q0.0
AN I0.1 //系统停止
= Q0.0 //运行标志灯
......
LD Q0.0
CALL SBR_0
NOT
R Q0.1, 6
//SBR_0
再假设你做一个定时器,且2小时到了后置M0.0位,则
LD I0.2 //低压侧投入(需两台泵)
A M0.0 //时间到
FIFO VW100, VW200
FIFO VW100, VW201
ATT VW200, VW100
ATT VW201, VW100
ED //低压侧切换到高压侧
A I0.3 //高压侧投入(需加一台泵)
EU
FIFO VW100, VW202
ATT VW202, VW100
........
LD I0.3 //高压侧投入(需三台泵)
A M0.0 //时间到
LPS
EU
FIFO VW100, VW200
FIFO VW100, VW201
FIFO VW100, VW202
ATT VW200, VW100
ATT VW201, VW100
ATT VW202, VW100
ED //高压侧切换到低压侧
A I0.2 //低压侧投入(需减一台泵)
EU
MOVW +0, VW200
........
LDW= VW200, +1
OW= VW201, +1
OW= VW202, +1
= Q0.1 //启动一号泵
........
LDW= VW200, +2
OW= VW201, +2
OW= VW202, +2
= Q0.2 //启动二号泵
..........
LDW= VW200, +3
OW= VW201, +3
OW= VW202, +3
= Q0.3 //启动三号泵
...........
LDW= VW200, +4
OW= VW201, +4
OW= VW202, +4
= Q0.4 //启动四号泵
................
LDW= VW200, +5
OW= VW201, +5
OW= VW202, +5
= Q0.5 //启动五号泵
................
LDW= VW200, +6
OW= VW201, +6
OW= VW202, +6
= Q0.6 //启动六号泵