Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB42 SEQ1 P02: Roller Picker 3D SSM

 

 

 

Network 1: Pre-Setting

"DI MAIN P02".M00.ReadyToStart := "DI MAIN P02".M00.HomePosition_IS AND "DI MAIN GLB".M00.AutomaticEntirePlant_run;

 

 

 

Network 2: Define last step

#SSM(LAST_STEP := 9);

 

 

 

Network 3: Step Switching Mechanism (SSM)

CASE #SSM.S.stepact OF

    0: // Waiting for SEQ to start

        "DI OUT P02".CAMERA.Recording.Done := "DI MAIN P02".M00.SEQ1_Busy := FALSE;

        "DI MAIN P02".to_P01.Request := "DI MAIN P02".M00.ReadyToStart;

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

       

    1: // ROBOT_3D MoveLinearAbsolute - WCS Start Up Behind [1]

        IF #SSM.S.stepfc THEN

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

            #RunTimeCounter := 0;

            #Num := 1;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 0;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.DynamicAdaption := -1; // Default

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.BufferMode := 1;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Velocity := "DI OUT P01".WINDER.Web.Master_Work_Velocity; // -1.0;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis;

        ELSE

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

            "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    2: // ROBOT_3D MC_MoveLinearAbsolute - WCS Down to Peforating Start [2]

        IF #SSM.S.stepfc THEN

            #Num := 2;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis;

        ELSE

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

            "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    3: // Waiting for CAMERA.Recording.Done

        IF #SSM.S.stepfc THEN

            "DI OUT P02".TRACK_CONVEYOR.DRV.Support.Enable_ReMeasuring := TRUE;

        ELSIF "DI MAIN P01".to_P02.ReadyToEnd THEN

            #SSM.S.stepnew := 9;

            #SSM.S.stepd := TRUE;

        ELSIF "DI MAIN P01".to_P02.EnabledToRun THEN

            #SSM.S.stepd := "DI OUT P02".CAMERA.Recording.Done;

            "DI OUT P02".CAMERA.Execute_ON := NOT #SSM.S.stepd AND "DI OUT P01".S120M.DRV.Support.LampON AND "DI OUT P02".TRACK_CONVEYOR.DRV.MC_MeasuringInput.Execute;

            "DI OUT P02".CAMERA.Recording_Axis[4] := 90.0;

        END_IF;

       

    4: // S120M Move Indentation towards Perforating Start

        IF #SSM.S.steplo THEN

            "DI OUT P02".TRACK_CONVEYOR.DRV.Support.Measuring_Shift_Distance :=

            "HMI KEY".Plantinfo_P02.Track_Conveyor.Measuring_Shift_Distance + "HMI KEY".Plantinfo_P02.Track_Conveyor.Object_Offset;

        ELSIF ABS("DI OUT P01".WINDER.Interface.MasterLine.READ.Position - "DI OUT P02".TRACK_CONVEYOR.DRV.Support.InitialObjectPosition_x) <

            "HMI KEY".Plantinfo_P02.Track_Conveyor.Window THEN

            #SSM.S.stepd := TRUE;

        END_IF;

       

    5: // MC_TrackConveyorBelt.Execute

        IF #SSM.S.stepfc THEN

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.DynamicAdaption := 0; // no adaption

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 1; // OCS1

            "DI OUT P02".TRACK_CONVEYOR.DRV.MC_TrackConveyorBelt.Execute := TRUE;

        ELSE

            #SSM.S.stepd := "DI OUT P02".TRACK_CONVEYOR.DRV.MC_TrackConveyorBelt.Done;

        END_IF;

       

    6: // ROBOT_3D MC_MoveLinearAbsolute - OCS1 Perforating Track Conveyor [3]

        IF #SSM.S.stepfc THEN

            #Num := 3;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis;

            IF "DI OUT P02".CAMERA.Recording.Product_A THEN

                "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] +

                "DI OUT P02".CAMERA.Recording_Axis[2];

            ELSIF "DI OUT P02".CAMERA.Recording.Product_C THEN

                "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] -

                "DI OUT P02".CAMERA.Recording_Axis[2];

            END_IF;

        ELSE

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

            "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    7: // ROBOT_3D MC_MoveLinearAbsolute - OCS1 End Front Up [4] 1 synchronous UP

        IF #SSM.S.stepfc THEN

            #Num := 4;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis;

            IF "DI OUT P02".CAMERA.Recording.Product_A THEN

                "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] +

                "DI OUT P02".CAMERA.Recording_Axis[2];

            ELSIF "DI OUT P02".CAMERA.Recording.Product_C THEN

                "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] -

                "DI OUT P02".CAMERA.Recording_Axis[2];

            END_IF;

        ELSE

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

            "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

        END_IF;

       

    8: // Query ROBOT_3D Re-Start

        IF NOT "DI MAIN P01".to_P02.ReadyToEnd THEN

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

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

            #SSM.S.stepnew := 0;

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

        ELSE

            #SSM.S.stepd := TRUE;

        END_IF;

       

    9: // ROBOT_3D MC_MoveLinearAbsolute HomePosition [0]

        IF #SSM.S.stepfc THEN

            #Num := 0;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.BufferMode := 1;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 0;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Velocity := -1.0;

            "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis;

        ELSE

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

            "DI MAIN P02".to_P01.Done := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo;

            "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute :=

         "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT "DI MAIN P02".M00.SEQ1_Done AND "HMI KEY".Plantinfo_P01.Coil_Slitting_Done AND #SSM.S.stepa;

        END_IF;

END_CASE;