Textfeld: Textfeld: Textfeld: Textfeld: Textfeld: Textfeld: Textfeld: Textfeld: Textfeld:

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB42 SEQ1 P02 : SCARA_3D Robotic Arm

 

 

 

Network 1: Pre-Setting

"DI MAIN P02".M00.RdyToStart := "DI MAIN P02".M00.HomPos_IS 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 P02".to_P01.EnableToGo :=

        "DI MAIN P02".to_P01.Request := "DI MAIN P01".M00.SEQ1_Busy := FALSE;

        IF #SSM.S.steps THEN

            IF "HMI KEY".Message.Parts_Production_Done OR "DI MAIN P02".to_P01.Done THEN

                "DI MAIN GLB".M00.AutoEntirePlant_run := FALSE;

            ELSE

                #SSM.S.stepd := "DI MAIN P02".to_P01.Request := "DI MAIN P01".M00.RdyToStart;

                "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.CoordSystem := 100;

            END_IF;

        END_IF;

       

    1: // G120C Workpiece Conveyor MoveJogWP

        IF #SSM.S.steplo THEN

            #RunTimeCounter := 0;

            #SSM.S.c1.set := 10;

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

            "DI OUT P02".S210J3.DRV.Support.SetVelo :=

            "DI OUT P02".G120C.DRV.Support.SetVelo := "HMI KEY".Values.SCADA.Axis_Velocity_Fast;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.VelocityFactor := "HMI KEY".Values.SCADA.SCARA_3D_VelocityFactor_Fast;

        ELSE

            #SSM.S.c1.start := "DI MAIN P01".to_P02.EnableToGo;

            #SSM.S.stepd := ("E00 G120C PickUp Pos1" OR "E00 G120C PickUp Pos2") AND #SSM.S.c1.done;

            "DI OUT P02".G120C.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P02.G120C.F12_Enable_WP AND "DI MAIN P01".to_P02.Request AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    2: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 1/2 - pick

        IF #SSM.S.stepfc THEN

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

        ELSIF "E00 G120C PickUp Pos1" THEN

            #Pos := 1;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

        ELSIF "E00 G120C PickUp Pos2" THEN

            #Pos := 2;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

        END_IF;

        #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo;

        "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute :=

        "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND "DI OUT P02".G120C.DRV.Support.LampOFF AND NOT #SSM.S.stepd AND #SSM.S.stepa;

       

    3: // Y200 Vacuum Gripper CmdExe_WP - pick workpiece

        "DI OUT P02".Y200.VLV_O.CmdExe_WP := "HMI KEY".P02.Y200.F12_Enable_WP;

        #SSM.S.stepd := "DI OUT P02".Y200.FB_WP AND "E00 Y200 WorkpieseOn";

       

    4: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 3 - intermediate

        IF #SSM.S.stepfc THEN

            #Pos := 3;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

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

        ELSE

            #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.Active AND NOT #SSM.S.steplo;

            "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute :=

            "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa AND #SSM.S.c1.done;

        END_IF;

       

    5: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 4 - intermediate

        IF #SSM.S.stepfc THEN

            #Pos := 4;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

            #SSM.S.c1.start := "DI MAIN P02".to_P01.EnableToGo := TRUE;

        ELSE

            #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.Active AND NOT #SSM.S.steplo;

            "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute :=

            "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa AND #SSM.S.c1.done;

        END_IF;

       

    6: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 5 - place workpiece

        IF #SSM.S.stepfc THEN

            "DI MAIN P02".M00.ProductCounter.TotalParts += 1;

            #Pos := 5;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

        ELSE

            #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo;

            "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    7: // Y200 Vacuum Gripper CmdExe_HP - place workpiece

        IF #SSM.S.stepfc THEN

            "DI OUT P02".Y200.VLV_O.CmdExe_WP := FALSE;

        END_IF;

        #SSM.S.stepd := "DI OUT P02".Y200.FB_HP AND NOT "E00 Y200 WorkpieseOn";

       

    8: // S210J3 Robotic Arm z-axis MoveAbsolute Pos 4 - above

        IF #SSM.S.stepfc THEN

            #Pos := 4;

            "DI OUT P02".S210J3.DRV.MC_MoveAbsolute.Position := "HMI KEY".MoveDirect_WCS[#Pos].Position[3];

        ELSE

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

            "DI OUT P02".S210J3.DRV.Support.Cmd_MoveAbsolute := "DI OUT P02".S210J3.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    9: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 3 - intermediate

        IF #SSM.S.stepfc THEN

            #Pos := 3;

            "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position;

        ELSE

            #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo;

            "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    10: // SCARA_3D Robotic Arm ends or pause before restart

        IF "DI MAIN P02".M00.ProductCounter.TotalParts >= "DI MAIN P02".M00.ProductCounter.GoodParts THEN

            "DI MAIN P02".to_P01.Done := TRUE;

            "HMI KEY".Message.Parts_Production_Done := "DI MAIN P02".to_P01.Done AND "DI MAIN P01".to_P02.Done;

            "DI MAIN P02".M00.SEQ1_Done := "DI MAIN P01".M00.SEQ1_Done;

            RETURN;

        ELSIF #SSM.S.stepfc THEN

            #SSM.S.stepnew := 1;

            #SSM.S.c1.set := 5;

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

        ELSE

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

        END_IF;

END_CASE;