// 主控制逻辑
BEGIN
// 自动模式下根据故障信号自动切换到健康的泵
IF ModeAuto THEN
IF Fault1 AND NOT Fault2 THEN
RunCmd1 := FALSE;
RunCmd2 := TRUE;
ELSIF Fault2 AND NOT Fault1 THEN
RunCmd1 := TRUE;
RunCmd2 := FALSE;
END_IF
END_IF
// 手动模式下控制水泵运行
IF NOT ModeAuto THEN
IF StartCmd1 THEN
LockRunCmd := TRUE;
Pump1Run := TRUE;
RunCmd1 := TRUE;
ELSIF StopCmd1 THEN
LockRunCmd := TRUE;
Pump1Run := FALSE;
RunCmd1 := FALSE;
END_IF
IF StartCmd2 THEN
LockRunCmd := TRUE;
Pump2Run := TRUE;
RunCmd2 := TRUE;
ELSIF StopCmd2 THEN
LockRunCmd := TRUE;
Pump2Run := FALSE;
RunCmd2 := FALSE;
END_IF
END_IF
// 检查运行命令是否被锁定
IF LockRunCmd THEN
LockTimer(IN := TRUE, PT := LOCK_TIMEOUT);
IF LockTimer.Q THEN
LockRunCmd := FALSE;
ELSE
RunCmd1 := Pump1Run;
RunCmd2 := Pump2Run;
END_IF
ELSE
// 启动和停止命令互锁
IF StartCmd1 AND Pump2Run THEN
RunCmd2 := FALSE;
END_IF
IF StartCmd2 AND Pump1Run THEN
RunCmd1 := FALSE;
END_IF
END_IF