自动控制要求:如果处于自动档,首先需要按下警示铃按钮,警示铃鸣5S后可以进行启动。如果自动档切到手动档,那么停止所有传送带并且重新鸣铃后可以进行手动测试。按下自动启动按钮后,1-5号传送带 按编号顺序启动,每次间隔五秒。如果启动过程中出现报警信号,则启动过程中的本编号复位以及后续编号传送带不能启动。(如:2号传送带已经启动,目前处于正在计时5s到三号传送带过程中,此时有报警信号,需复位2号且3.4.5号电机均不能启动且复位;如果4号电机在运行中且在读秒到五号电机过程中,则复位4号电机,5号也不能启动且处于复位状态;)如果启动完成,可以按下停止按钮,按逆序5-1关闭传送带。如果在启动过程中停止,需按下急停按钮全部停止。
REGION 车间皮带
#自动计时器.TON(IN := #自动启动中,
PT := T#30s);
#停止计时器.TON(IN := #自动停止中,
PT := T#30s);
#警示铃计时.TP(IN := #警示铃启动,
PT := t#5S,
Q => #警示铃);
IF #警示铃 = 1 THEN
#警示铃鸣铃完成 := 1;
END_IF;
IF #自动手动转换开关 = 1 THEN
#自动准备运行 := 1;
#手动准备运行 := 0;
END_IF;
IF #自动准备运行 = 1 AND #警示铃鸣铃完成 = 1 AND #自动启动按钮 = 1 AND #停止按钮 = 0 AND #自动启动中 = 0
AND #自动运行中 = 0 AND #报警信号 = 0 AND #自动停止中 = 0 THEN
#自动启动中 := 1;
#自动运行中 := 1;
#皮带状态位 := 1;
#警示铃鸣铃完成 := 0;
END_IF;
IF #自动计时器.ET = t#5S THEN
#皮带状态位 := 2;
ELSIF #自动计时器.ET = t#10s THEN
#皮带状态位 := 3;
ELSIF #自动计时器.ET = t#15S THEN
#皮带状态位 := 4;
ELSIF #自动计时器.ET = t#20S THEN
#皮带状态位 := 5;
END_IF;
CASE #皮带状态位 OF
1:
#皮带一号 := 1;
2:
#皮带二号 := 1;
3:
#皮带三号 := 1;
4:
#皮带四号 := 1;
5:
#皮带五号 := 1;
#自动启动中 := 0;
#皮带状态位 := 0;
END_CASE;
IF #自动启动中 AND #报警信号 AND #皮带状态位 = 1
THEN
#皮带一号 := #皮带二号 := #皮带三号 := #皮带四号 := #皮带五号 :=#自动启动中:= 0;
#皮带状态位 := 0;
ELSIF #自动启动中 AND #报警信号 AND #皮带状态位 = 2
THEN
#皮带二号 := #皮带三号 := #皮带四号 := #皮带五号 :=#自动启动中:=0;
#皮带状态位 := 0;
ELSIF #自动启动中 AND #报警信号 AND #皮带状态位 = 3
THEN
#皮带三号 := #皮带四号 := #皮带五号 :=#自动启动中:= 0;
#皮带状态位 := 0;
ELSIF #自动启动中 AND #报警信号 AND #皮带状态位 = 4 THEN
#皮带四号 := #皮带五号:=#自动启动中 := 0;
#皮带状态位 := 0;
ELSIF #自动启动中 AND #报警信号 AND #皮带状态位 = 5 THEN
#皮带五号:=#自动启动中 := 0;
#皮带状态位 := 0;
END_IF;
IF #自动手动转换开关 = 0 THEN
#手动准备运行 := 1;
#自动准备运行 := 0;
#自动启动中 := #自动运行中 := #皮带一号 := #皮带二号 := #皮带三号 := #皮带四号 := #皮带五号 :=
#警示铃鸣铃完成 := 0;
END_IF;
IF #警示铃鸣铃完成 = 1 AND #手动准备运行 = 1 AND #手动测试1号 = 1 AND #报警信号 = 0 AND #停止按钮 = 0
THEN
#皮带一号 := 1;
ELSIF #手动准备运行 = 1 AND #手动测试1号 = 0 THEN
#皮带一号 := 0;
END_IF;
IF #警示铃鸣铃完成 = 1 AND #手动准备运行 = 1 AND #手动测试2号 = 1 AND #报警信号 = 0 AND #停止按钮 = 0
THEN
#皮带二号 := 1;
ELSIF #手动准备运行 = 1 AND #手动测试2号 = 0 THEN
#皮带二号 := 0;
END_IF;
IF #警示铃鸣铃完成 = 1 AND #手动准备运行 = 1 AND #手动测试3号 = 1 AND #报警信号 = 0 AND #停止按钮 = 0
THEN
#皮带三号 := 1;
ELSIF #手动准备运行 = 1 AND #手动测试3号 = 0 THEN
#皮带三号 := 0;
END_IF;
IF #警示铃鸣铃完成 = 1 AND #手动准备运行 = 1 AND #手动测试4号 = 1 AND #报警信号 = 0 AND #停止按钮 = 0
THEN
#皮带四号 := 1;
ELSIF #手动准备运行 = 1 AND #手动测试4号 = 0 THEN
#皮带四号 := 0;
END_IF;
IF #警示铃鸣铃完成 = 1 AND #手动准备运行 = 1 AND #手动测试5号 = 1 AND #报警信号 = 0 AND #停止按钮 = 0
THEN
#皮带五号 := 1;
ELSIF #手动准备运行 = 1 AND #手动测试5号 = 0 THEN
#皮带五号 := 0;
END_IF;
IF #停止按钮 = 1 AND #自动启动中 = 0 AND #自动运行中 = 1 THEN
#自动停止中 := 1;
#停止状态位 := 1;
END_IF;
IF #停止计时器.ET = t#5S THEN
#停止状态位 := 2;
ELSIF #停止计时器.ET = t#10s THEN
#停止状态位 := 3;
ELSIF #停止计时器.ET = t#15S THEN
#停止状态位 := 4;
ELSIF #停止计时器.ET = t#20S THEN
#停止状态位 := 5;
END_IF;
CASE #停止状态位 OF
1:
#皮带五号 := 0;
2:
#皮带四号 := 0;
3:
#皮带三号 := 0;
4:
#皮带二号 := 0;
5:
#皮带一号 := 0;
#自动停止中 := 0;
#停止状态位 := 0;
#自动运行中 := 0;
END_CASE;
IF #全部急停复位 = 1 THEN
FOR #复位计数位 := 0 TO 200 DO
POKE(area := 16#84,
dbNumber := 1,
byteOffset := #复位计数位,
value := #赋值0);
END_FOR;
#全部急停复位 := 0;
END_IF;
END_REGION