Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB32 SEQ1 P01 : Delta Picker Robot

 

 

 

Network 1: Pre-Setting

"DI MAIN P01".M00.ReadyToStart := "DI MAIN GLB".M00.HomPos_SR AND "DI MAIN GLB".M00.AutoEntirePlant_run;

 

 

 

Network 2: Define last step

#SSM(LAST_STEP := 10);

 

 

 

Network 3: Step Switching Mechanism (SSM)

CASE #SSM.S.stepact OF

    0: // Waiting for SEQ to start

        "DI MAIN P01".to_P02.Done := "DI MAIN P01".M00.SEQ1_Busy := FALSE;

        "DI MAIN P01".to_P02.Request := "DI MAIN P01".M00.ReadyToStart;

        #SSM.S.stepd := #SSM.S.steps AND "DI MAIN P01".M00.ReadyToStart AND "DI MAIN P02".to_P01.Request AND "DI MAIN P02".to_P01.EnabledToMove;

       

    1: // MoveJog Picking Control Conveyor

        IF #SSM.S.stepfc THEN

            "DI MAIN P01".M00.SEQ1_Busy := TRUE;

            "DI OUT P01".G120.DRV.Support.SetVelo := "HMI KEY".Plantinfo_P01.Work_Velocity;

            #RunTimeCounter := 0;

        ELSE

            "DI OUT P01".C100.CmdExe_WP :=

            "DI OUT P01".G120.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.G120.F12_Enable_WP AND #SSM.S.stepa;

            #SSM.S.stepd := "DI OUT P01".G120.DRV.Support.LampON AND "E00 C100 PartAvailable" AND "DI OUT P01".TRACT_CONVEYOR.DRV.MC_MeasuringInput.Execute;

        END_IF;

       

    2: // Delta Picker 3D MoveLinearAbsolut WCS PickUp Position UP

        IF #SSM.S.stepfc THEN

            "DI OUT P01".TRACT_CONVEYOR.DRV.Support.Enable_ReMeasuring := TRUE;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Velocity := -1.0;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.CoordSystem := 0;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.BufferMode := 1;

            "DI OUT P01".TRACT_CONVEYOR.DRV.Support.Measuring_Offset := "HMI KEY".Plantinfo_P01.Camera_Recording_Axis[1] + "HMI KEY".Plantinfo_P01.Object_Offset;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[1] := "DI OUT P01".TRACT_CONVEYOR.DRV.Support.Measuring_Offset +

            "DI OUT P01".TRACT_CONVEYOR.DRV.Support.Measuring_Shift_Distance;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P01.Camera_Recording_Axis[2] +

            "DI OUT P01".TRACT_CONVEYOR.DRV.MC_TrackConveyorBelt.ConveyorBeltOrigin.y;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[3] := "DI OUT P01".TRACT_CONVEYOR.DRV.MC_TrackConveyorBelt.ConveyorBeltOrigin.z +

            "HMI KEY".Plantinfo_P01.Pick_Distan_to_ConveyorBelt;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[4] := "HMI KEY".Plantinfo_P01.Camera_Recording_Axis[4];

        ELSE

            "DI OUT P01".C100.CmdExe_WP := #SSM.S.steplo;

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

            "DI OUT P01".M100.DRV.CmdExe_WP := "HMI KEY".P01.M100.F12_Enable_WP AND #SSM.S.stepa;

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    3: // G120 Move Object towards Delta Picker 3D Position

        "DI OUT P01".M100.DRV.CmdExe_WP := #SSM.S.steplo AND #SSM.S.stepa;

        IF ABS("DI OUT P01".G120.DRV.Support.ActPos - "DI OUT P01".TRACT_CONVEYOR.DRV.Support.InitialObjectPosition_x) < "HMI KEY".Plantinfo_P01.Window THEN

            #SSM.S.stepd := TRUE;

        END_IF;

       

    4: // MC_TrackConveyorBelt.Execute

        IF #SSM.S.stepfc THEN

            "DI OUT P01".TRACT_CONVEYOR.DRV.MC_TrackConveyorBelt.Execute := TRUE;

        ELSE

            #SSM.S.stepd := "DI OUT P01".TRACT_CONVEYOR.DRV.MC_TrackConveyorBelt.Done;

        END_IF;

       

    5: // Delta Picker 3D MoveLinearAbsolute OCS1 synchronous DOWN PosNo[1]

        IF #SSM.S.stepfc THEN

            #No := 1;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.DynamicAdaption := 0;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.CoordSystem := 1;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[2] -= "DI OUT P01".TRACT_CONVEYOR.DRV.MC_TrackConveyorBelt.ConveyorBeltOrigin.y;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[3] := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[3];

            #SSM.S.c1.start := TRUE;

        ELSE

            #SSM.S.stepd := "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Active AND NOT #SSM.S.steplo;

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT #SSM.S.stepd

             AND #SSM.S.stepa AND #SSM.S.c1.done;

        END_IF;

       

    6: // Delta Picker 3D MoveLinearAbsolute OCS1 follow to PICK UP PosNo[2]

        IF #SSM.S.stepfc THEN

            #No := 2;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[1] += "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[1];

            #SSM.S.c1.start := TRUE;

        ELSE

            #SSM.S.stepd := "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Active AND NOT #SSM.S.steplo;

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT #SSM.S.stepd

             AND #SSM.S.stepa AND #SSM.S.c1.done;

            "DI OUT P01".Y100.VLV_O.CmdExe_WP := "HMI KEY".P01.Y100.F12_Enable_WP;

        END_IF;

       

    7: // Delta Picker 3D MoveLinearAbsolute OCS1 synchronous UP

        IF #SSM.S.stepfc THEN

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[3] += "HMI KEY".Plantinfo_P01.Pick_Distan_to_ConveyorBelt;

        ELSE

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

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    8: // Delta Picker 3D MoveLinearAbsolute WCS Place DOWN PosNo[3]

        IF #SSM.S.stepfc THEN

            #No := 3;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.CoordSystem := 0;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[1] := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[1];

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[2];

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[3] := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[3];

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position[4] := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[#No].Axis[4];

        ELSE

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

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    9: // Y100 Pick and place gripper PLACE

        IF #SSM.S.stepfc THEN

            "DI OUT P01".Y100.VLV_O.CmdExe_WP := FALSE;

        ELSIF "DI OUT P01".Y100.FEEDBACK_HP THEN

            IF "DI MAIN P02".to_P01.Done THEN

                #SSM.S.stepnew := 10;

                #SSM.S.stepd := TRUE;

            ELSE

                #SSM.S.stepnew := 0;

                #SSM.S.stepd := "DI MAIN P01".to_P02.EnabledToMove := TRUE;

            END_IF;

        END_IF;

       

    10: // Delta Picker Robot MoveLinearAbsolut towards base position

        IF #SSM.S.stepfc THEN

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P01.MoveLinear_Pos[0].Axis;

            "DI OUT P01".ROBOT.DRV.MC_MoveLinearAbsolute.CoordSystem := 0;

            "DI MAIN P01".to_P02.EnabledToMove := FALSE;

        ELSE

            "DI MAIN P01".to_P02.Done := "DI OUT P01".ROBOT.DRV.Support.InPos AND NOT #SSM.S.steplo;

            "DI OUT P01".ROBOT.DRV.Support.Cmd_MoveLinearAbsolute := "DI OUT P01".ROBOT.DRV.Support.KINpos_Enabled AND NOT "DI MAIN P01".to_P02.Done AND #SSM.S.stepa;

            "DI MAIN P01".M00.SEQ1_Done := "HMI KEY".Plantinfo_P02.Product_Packaging_Done AND "DI MAIN P01".to_P02.Done;

        END_IF;

END_CASE;