FB SAFE GLB

Textfeld:

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB32 SEQ1 P01 Sequencer 1 P01

 

[to previous page..]

 

    20: // XYZGaxis MovAbso towards pump case conveyor Pos 2 (down)

        #PosPointer := 2;

        "FC POS REACHED"(START := #SSM.S.steplo OR "E01 B245 Y212 occupied",

                         TARGET_POS := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer],

                         VELO_Z := "DI OUT P01".MANUAL.EposVelo_slow,

                         VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                         ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01,

                         ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01,

                         ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01 AND "DI OUT P01".S120_X.DRV.Support.InPos,

                         ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01,

                         ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01,

                         MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                         PRECISION := 0.1,

                         TARGET_REACHED => #SSM.S.c1.start);

        IF "E01 B245 Y212 occupied" THEN

            #SSM.S."1_FAULT_00_15".%X0 := TRUE;

        ELSE

            #SSM.S."1_FAULT_00_15".%X0 := FALSE;

            #SSM.S.stepd := ("M00 AutoCmpltMa run" OR "M00 InchCmpltMa run") AND #SSM.S.c1.done;

        END_IF;

       

    21: // Y200 Gripper vacuum HP at case conveyor (down)

        "DI OUT P01".Y200.VLV_OC.CmdExe_WP := FALSE;

        "DI OUT P01".Y200.VLV_OC.CmdExe_HP := "HMI KEY".P01.Y200.F11_Enable_HP;

        #SSM.S.stepd := "DI OUT P01".Y200.FB_HP AND NOT "E01 S201 VacuOk";

       

    22: // Zaxis MovRela PushUp_Z at case conveyor (up)

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Z.DRV.Support.SetVelo := "DI OUT P01".MANUAL.EposVelo_medium;

            "DI OUT P01".S120_Z.DRV.MC_MoveRelative.Distance := - "DI MAIN P01".Box_Data.PushUp_Z;

        ELSE

            "DI OUT P01".S120_Z.DRV.Support.Cmd_MovRela := NOT "DI OUT P01".S120_Z.HALT_01;

            #SSM.S.stepd := "DI OUT P01".S120_Z.DRV.Support.InPos AND NOT #SSM.S.steplo;

        END_IF;

       

    23: // Query pump case inclined at case conveyor (up)

        IF "E01 B237 CaseInclined" THEN

            #SSM.S."1_FAULT_00_15".%X0 := TRUE;

        ELSE

            #SSM.S."1_FAULT_00_15".%X0 := FALSE;

            #SSM.S.stepd := "M00 AutoCmpltMa run" OR "M00 InchCmpltMa run";

        END_IF;

       

    24: // XYZGMovAbso towards pump securing plate Pos 3 (down)

        #PosPointer := 3;

        "FC POS REACHED"(START := #SSM.S.steplo OR "E01 B240 PartLeft Y206",

                         TARGET_POS := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer],

                         VELO_Z := "DI OUT P01".MANUAL.EposVelo_medium,

                         VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                         ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01,

                         ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01,

                         ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01 AND "DI OUT P01".S120_X.NexDrv_DlyOn,

                         ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01,

                         ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01,

                         MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                         PRECISION := 0.1,

                         TARGET_REACHED => #tmp_llo);

        IF "E01 B240 PartLeft Y206" THEN

            #SSM.S."1_FAULT_00_15".%X0 := TRUE;

        ELSE

            #SSM.S."1_FAULT_00_15".%X0 := FALSE;

            #SSM.S.stepd := ("M00 AutoCmpltMa run" OR "M00 InchCmpltMa run") AND #tmp_llo;

        END_IF;

       

    25: // Y200 Gripper vacuum WP at securing plate (down)

        "DI OUT P01".Y200.VLV_OC.CmdExe_HP := FALSE;

        "DI OUT P01".Y200.VLV_OC.CmdExe_WP := "HMI KEY".P01.Y200.F12_Enable_WP;

        #SSM.S.stepd := "DI OUT P01".Y200.FB_WP AND "E01 S201 VacuOk";

       

    26: // Zaxis MovRela PushUp_Z at securing plate (up)

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Z.DRV.Support.SetVelo := "DI OUT P01".MANUAL.EposVelo_medium;

            "DI OUT P01".S120_Z.DRV.MC_MoveRelative.Distance := - "DI MAIN P01".Box_Data.PushUp_Z;

        ELSE

            "DI OUT P01".S120_Z.DRV.Support.Cmd_MovRela := NOT "DI OUT P01".S120_Z.HALT_01;

            #SSM.S.c1.start := "DI OUT P01".Y206.VLV_O.CmdExe_WP := "DI OUT P01".S120_Z.DRV.Support.InPos AND NOT (#SSM.S.steplo OR "E01 B242 30M1 jam");

            #SSM.S.stepd := "DI OUT P01".Y206.FB_WP AND #SSM.S.c1.done;

        END_IF;

       

    27: // XYZGaxis MovAbso towards WPC pump case conveyor Pos 2 (down)

        #PosPointer := 2;

        "FC POS REACHED"(START := #SSM.S.steplo,

                         TARGET_POS := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer],

                         VELO_Z := "DI OUT P01".MANUAL.EposVelo_medium,

                         VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                         ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01,

                         ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01,

                         ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01 AND "DI OUT P01".S120_X.NexDrv_DlyOn,

                         ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01,

                         ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01,

                         MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                         PRECISION := 0.1,

                         TARGET_REACHED => #SSM.S.stepd);

       

    28: // Y200 Gripper vacuum HP at case conveyor (down)

        "DI OUT P01".Y200.VLV_OC.CmdExe_WP := FALSE;

        "DI OUT P01".Y200.VLV_OC.CmdExe_HP := "HMI KEY".P01.Y200.F11_Enable_HP;

        #SSM.S.stepd := "DI OUT P01".Y200.FB_HP AND NOT "E01 S201 VacuOk";

       

    29: // Zaxis MovRela PushUp_Z at case conveyor (up)

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Z.DRV.Support.SetVelo := "DI OUT P01".MANUAL.EposVelo_medium;

            "DI OUT P01".S120_Z.DRV.MC_MoveRelative.Distance := - "DI MAIN P01".Box_Data.PushUp_Z;

        ELSE

            "DI OUT P01".S120_Z.DRV.Support.Cmd_MovRela := NOT "DI OUT P01".S120_Z.HALT_01;

            IF "DI OUT P01".S120_Z.DRV.Support.InPos AND NOT (#SSM.S.steplo OR "E01 B241 30M2 jam") THEN

                #SSM.S.stepd := "DI OUT P01".Y212.VLV_O.CmdExe_WP := TRUE;

                IF #IndexPos2 >= "DI MAIN P01".Box_Data.PlaceOn_X THEN

                    "DI MAIN GLB".P01_P02_Box.Request_Done := TRUE;

                ELSIF #IndexPos1 >= "DI MAIN P01".Box_Data.PlaceOn_X THEN

                    #SSM.S.stepnew := 40;

                ELSE

                    #SSM.S.stepnew := 1;

                END_IF;

            END_IF;

        END_IF;

       

    30: // XYZGMovAbso towards SafetyPos 0 Waiting for P02_P01_Box.Request_Done

        #PosPointer := 0;

        "FC POS REACHED"(START := #SSM.S.steplo,

                         TARGET_POS := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer],

                         VELO_Z := "DI OUT P01".MANUAL.EposVelo_medium,

                         VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                         ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01,

                         ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01,

                         ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01,

                         ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01,

                         ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01,

                         MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                         PRECISION := 0.1,

                         TARGET_REACHED => #SSM.S.c1.start);

        #IndexPos1 := #IndexPos2 := 0;

       

        "M01 SEQ1 Done" := "DI MAIN GLB".P01_P02_Box.Request_DoneACK := "DI MAIN GLB".P02_P01_Box.Request_Done AND #SSM.S.c1.done;

        "M01 SEQ1 WP1 DnOK" := TRUE;

       

    40: // XYZGaxis MovAbso towards RefPos PickUp row 2 (Down)

        IF #SSM.S.stepfc THEN

            #IndexPos2 := #IndexPos2 + 1;

            #ExecuteCoodinate(INDEX_POS := #IndexPos2,

                              PLACES_ON_X := "DI MAIN P01".Box_Data.PlaceOn_X,

                              PLACES_ON_Y := "DI MAIN P01".Box_Data.PlaceOn_Y,

                              REF_POS := #RefPos2,

                              GAP_FACTOR_X := "DI MAIN P01".Box_Data.Gap_X,

                              GAP_FACTOR_Y := "DI MAIN P01".Box_Data.Gap_Y,

                              TARGET_POS := #TrgtPos);

            #TrgtPos.Z := "DI MAIN P01".Box_Data.RefPos2_Z;

            #TrgtPos.R := "DI MAIN P01".Box_Data.RefPos2_R;

            #TrgtPos.S := "DI MAIN P01".Box_Data.RefPos2_S;

        ELSE

            "FC POS REACHED"(START := #SSM.S.steplo,

                             TARGET_POS := #TrgtPos,

                             VELO_Z := "DI OUT P01".MANUAL.EposVelo_medium,

                             VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                             ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01,

                             ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01,

                             ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01 AND "DI OUT P01".S120_X.DRV.Support.InPos,

                             ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01,

                             ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01,

                             MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                             MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                             MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                             MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                             MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                             PRECISION := 0.1,

                             TARGET_REACHED => #SSM.S.c1.start);

            #SSM.S.stepd := #SSM.S.c1.done;

        END_IF;

       

    41: // S120_X MovRela Push1_X at row 2 (down)

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P01".MANUAL.EposVelo_medium;

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI MAIN P01".Box_Data.Push1_X;

        ELSE

            "DI OUT P01".S120_X.DRV.Support.Cmd_MovRela := NOT "DI OUT P01".S120_X.HALT_01;

            #SSM.S.stepd := "DI OUT P01".S120_X.DRV.Support.InPos AND NOT #SSM.S.steplo;

        END_IF;

       

    42: // Query pump case in box present, else Push2_X at row 2 (down)

        "DI OUT P01".S120_X.DRV.Support.Cmd_MovRela := FALSE;

        IF #SSM.S.stepfc THEN

            IF "E01 B200 PartPresent" THEN

                #SSM.S.stepd := TRUE;

                #SSM.S.stepnew := 4;

            ELSE

                "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P01".MANUAL.EposVelo_slow;

                "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI MAIN P01".Box_Data.Push2_X;

            END_IF;

        ELSIF NOT "E01 B200 PartPresent" THEN

            "DI OUT P01".S120_X.DRV.Support.Cmd_MovRela := NOT "DI OUT P01".S120_X.HALT_01;

            #SSM.S.stepd := "DI OUT P01".S120_X.DRV.Support.InPos AND NOT #SSM.S.steplo;

            IF #SSM.S.stepd AND NOT #SSM.S.stepeg THEN

                #IndexPos2 := #IndexPos2 + 1;

                IF #IndexPos2 >= "DI MAIN P01".Box_Data.PlaceOn_X THEN

                    #SSM.S.stepnew := 29;

                    #SSM.S.stepd := TRUE;

                ELSE

                    #SSM.S.stepnew := 40;

                END_IF;

            END_IF;

            #SSM.S.stepeg := #SSM.S.stepd;

        END_IF;

END_CASE;

 

[to previous page..]

 

P01 SEQ1 automatic mode

P01 Pick & Place

P01 takes care of the box unloading. The box contains a certain number pump cases. When the box is done, P01 gives in S30 P02 enable signal which allow the lift to go down to position where the box is then transferred out.