西门子博途顺序控制车间皮带逆序停止程序

 自动控制要求:如果处于自动档,首先需要按下警示铃按钮,警示铃鸣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

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值