Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB32 SEQ1 P01: Pick and Place and Batching sequencer

 

[previous page..]

 

Netzwerk 3: Step jump distributor

 

50: // XYZRaxis MovAbso towards Pos.7 calculate batching place (up)

        IF #SSM1.S.stepfc THEN

            "M01 SEQ1 Active" := TRUE;

            #PosIndex := 7;

            #IndexPos := #IndexPos + 1;

            #ExecuteCoodinate(INDEX_POS := #IndexPos,

                              PLACES_ON_X := "DatOfMod".P01.STS.Rows_on_x_axis,

                              PLACES_ON_Y := "DatOfMod".P01.STS.Rows_on_y_axis,

                              REF_POS := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex],

                              GAP_ON_X := "DatOfMod".P01.STS.Gap_on_x_axis,

                              GAP_ON_Y := "DatOfMod".P01.STS.Gap_on_y_axis,

                              TrgtPos := #TrgtPos1);

            #TrgtPos1.R := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex].R;

            #TrgtPos1.Z := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex].Z;

        ELSE

            "FC POS REACHED P01"(START := #SSM1.S.DlyStart.Q,

                                 TARGET_POS := #TrgtPos1,

                                 SET_VELO_Z := "DI OUT P01".MANUAL.XYZRaxisVelo_2,

                                 SET_VELO_XYR := "DI OUT P01".MANUAL.XYZRaxisVelo_3,

                                 PRECISION := 0.5,

                                 TARGET_REACHED => #SSM1.S.stepd);

            "M01 V90_Z MovAbso" := NOT "DI OUT P01".V90_Z.HALT_01;

            "M01 V90_X MovAbso" := NOT "DI OUT P01".V90_X.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

            "M01 V90_Y MovAbso" := NOT "DI OUT P01".V90_Y.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

            "M01 V90_R MovAbso" := NOT "DI OUT P01".V90_R.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

        END_IF;

       

    51: // Zaxis MovAbso V90_Z towards PlacPos, C01 Filter gripper HP placing filter at batching station

        IF #SSM1.S.stepfc THEN

            #PosIndex := 12;

            "DI OUT P01".V90_Z.DRV.MC_MoveAbsolute.Position := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex].Z;

            "DI OUT P01".V90_Z.DRV.Support.SetVelo := "DI OUT P01".MANUAL.XYZRaxisVelo_2;

        ELSE

            "M01 V90_Z MovAbso" := NOT "DI OUT P01".V90_Z.HALT_01 AND "DI MAIN GLB".Interface.FilterStack_Request;

            #SSM1.S.stepd := "DI OUT P01".V90_Z.DRV.Support.InPos;

        END_IF;

       

    52: // XYZRaxis MovAbos towards TrgtPos.1 or 2 conveyor 1 or 2

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

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

        IF "DI OUT P01".C01.FB_HP THEN

            IF #IndexPos = #MaxPos THEN

                #SSM1.S.stepnew := 70;

                "DI MAIN GLB".Interface.FilterStack_Finished := TRUE;

            ELSE

                #SSM1.S.stepnew := 1;

                #LastActPos := #IndexPos;

            END_IF;

            #SSM1.S.stepd := "DI MAIN GLB".Interface.FilterPlaced_OutPutConv := TRUE;

        END_IF;

       

    60: // XYZRaxis MovAboso towards TrgtPos.9 C03 QA-Pusher

        #PosIndex := 9;

        "FC POS REACHED P01"(START := #SSM1.S.stepfc,

                             TARGET_POS := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex],

                             SET_VELO_Z := "DI OUT P01".MANUAL.XYZRaxisVelo_2,

                             SET_VELO_XYR := "DI OUT P01".MANUAL.XYZRaxisVelo_3,

                             PRECISION := 0.5,

                             TARGET_REACHED => #SSM1.S.stepd);

        "M01 V90_Z MovAbso" := NOT "DI OUT P01".V90_Z.HALT_01 AND "DI OUT P01".V90_X.drv_nc_delay_on AND "DI OUT P01".V90_Y.drv_nc_delay_on;

        "M01 V90_X MovAbso" := NOT "DI OUT P01".V90_X.HALT_01;

        "M01 V90_Y MovAbso" := NOT "DI OUT P01".V90_Y.HALT_01;

        "M01 V90_R MovAbso" := NOT "DI OUT P01".V90_R.HALT_01;

       

    61: // C01 Filter gripper HP placing filter on C03 QA-Pusher

        "DI MAIN P01".SEQ1.HMI_Start_QA := "DI OUT P01".C01.VLV_OC.CmdExe_WP := FALSE;

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

        IF "DI OUT P01".C01.FB_HP AND "E01 C03 FltrPlaced" THEN

            "DI MAIN GLB".Interface.FilterPlaced_QaPusher := #SSM1.S.stepd := TRUE;

            #SSM1.S.stepnew := 1;

        END_IF;

       

    70: // XYZRaxis MovAbso towards Pos.11 SEQ1 Done

        #PosIndex := 11;

        "FC POS REACHED P01"(START := #SSM1.S.stepfc,

                             TARGET_POS := "DI OUT P01".MANUAL.XYZR_TrgtPos[#PosIndex],

                             SET_VELO_Z := "DI OUT P01".MANUAL.XYZRaxisVelo_2,

                             SET_VELO_XYR := "DI OUT P01".MANUAL.XYZRaxisVelo_3,

                             PRECISION := 9.0,

                             TARGET_REACHED => "M01 SEQ1 Done");

        "M01 V90_Z MovAbso" := NOT "DI OUT P01".V90_Z.HALT_01;

        "M01 V90_X MovAbso" := NOT "DI OUT P01".V90_X.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

        "M01 V90_Y MovAbso" := NOT "DI OUT P01".V90_Y.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

        "M01 V90_R MovAbso" := NOT "DI OUT P01".V90_R.HALT_01 AND "DI OUT P01".V90_Z.drv_nc_delay_on;

END_CASE;

 

 

[previous page..]