SEQ332 P01 : Programme Choice 1 process pallet sector 2

[hit  <- on your browser to return]

 

 

 

Network 1: Call actual SSM

#SSM(STEP_PLS := "HMI KEY".P01.GLB.F17_StepPls,

     STEP_MNS := "HMI KEY".P01.GLB.F18_StepMns,

     GOTO_STEP := FALSE,

     GOTO_STEP_NO := 0,

     LAST_STEP := 16);

 IF "DI MAIN GLB".M00.CmpltMaOFF_Imp THEN

     #SSM.S.stepin := FALSE;

 END_IF;

 "DI MAIN P01".SEQ1.SSM.S.stepin := #SSM.S.stepin;

 

 

 

Network 2: Pre-Setting

"DI MAIN P01".SEQ1.Support.stepd := #SSM.S.stepd;

 

 

 

Network 3: CASE-Function corresponds to actual SSM

CASE #SSM.S.stepact OF

    0: // Waiting for SEQ to start

        "DI MAIN P01".to_P02_Pallet.Request := #SSM.S.stepa AND NOT #Done;

        #SSM.S.stepd := #SSM.S.steps AND "DI MAIN P02".to_P01_Pallet.ReadyToGo AND "DI MAIN P01".to_P02_Pallet.Request;

       

    1: // V90_A/V90_B MovAbso towards start position, V23Y6/V23Y7 suction valve WP, V28Y12/V28Y34 drive cylinder WP

        IF #SSM.S.stepfc THEN

            "DI MAIN P01".MoDA.RunTimeCntr_seq1 := 0;

           // "DI OUT P02".M32_Pallet_Data := "DI OUT P02".M32_Pallet_Data;

            #Ref_StartPos.X := "DI OUT P02".M32_Pallet_Data.Pallet_Ref_Pos_X;

            #Ref_StartPos.Y := "DI OUT P02".M32_Pallet_Data.Pallet_Ref_Pos_Y;

            IF "DI OUT P02".M32_Pallet_Data.Workpiece_2.NumOfWorkPieces = 0 THEN

                #Done := TRUE;

                RETURN;

            END_IF;

            #MaxParts := "DI OUT P02".M32_Pallet_Data.WorkPiece_1.NumOfWorkPieces + "DI OUT P02".M32_Pallet_Data.Workpiece_2.NumOfWorkPieces;

            "HMI KEY".Message.Index_Position := "HMI KEY".Message.Index_Position + 1;

            #ExecuteCoodinate(INDEX_POS := "HMI KEY".Message.Index_Position,

                              REF_POS := #Ref_StartPos,

                              PLACES_ON_X := "DI OUT P02".M32_Pallet_Data.Workpiece_2.PalletPlaceOn_X,

                              PLACES_ON_Y := "DI OUT P02".M32_Pallet_Data.Workpiece_2.PalletPlaceOn_Y,

                              GAP_FACTOR_X := "DI OUT P02".M32_Pallet_Data.Workpiece_2.Gap_X,

                              GAP_FACTOR_Y := "DI OUT P02".M32_Pallet_Data.Workpiece_2.Gap_Y,

                              TARGET_POS := #TrgtPos);

            "DI OUT P01".S210_Z.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.RapidVelo_Z;

            "DI OUT P01".S210_Z.DRV.MC_MoveAbsolute.Position := 22.8;

            "DI OUT P01".V90_A.DRV.Support.SetVelo := "HMI KEY".SetPointComp_A[0].RapidVelo;

            "DI OUT P01".V90_A.DRV.MC_MoveAbsolute.Position := "HMI KEY".SetPointComp_A[0].Position;

            "DI OUT P01".V90_B.DRV.Support.SetVelo := "HMI KEY".SetPointComp_B[0].RapidVelo; // mm/s

            "DI OUT P01".V90_B.DRV.MC_MoveAbsolute.Position := "HMI KEY".SetPointComp_B[0].Position;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := FALSE;

        ELSE

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

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

            "DI OUT P01".V23Y6.CmdExe_WP := "HMI KEY".P01.V23Y6.F12_Enable_WP AND NOT #tmp_V90_A_inpos AND #SSM.S.stepa;

            "DI OUT P01".V23Y7.CmdExe_WP := "HMI KEY".P01.V23Y7.F12_Enable_WP AND NOT #tmp_V90_B_inpos AND #SSM.S.stepa;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_WP := "HMI KEY".P01.V28Y12.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.MC_MoveAbsolute.Busy AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_WP := "HMI KEY".P01.V28Y34.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.MC_MoveAbsolute.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveAbsolute := "DI OUT P01".V90_A.DRV.Support.Epos_Enabled AND NOT #tmp_V90_A_inpos AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveAbsolute := "DI OUT P01".V90_B.DRV.Support.Epos_Enabled AND NOT #tmp_V90_B_inpos AND #SSM.S.stepa;

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

                             TARGET_POS := #TrgtPos,

                             VELO_X := "DI OUT P02".M32_Pallet_Data.Workpiece_2.RapidVelo_X,

                             VELO_Y := "DI OUT P02".M32_Pallet_Data.Workpiece_2.RapidVelo_Y,

                             ENABLE_X := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled,

                             ENABLE_Y := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled,

                             WINDOW_RANGE := 0.1,

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

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

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

            #SSM.S.stepd := #SSM.S.c1.done AND "DI OUT P01".S210_Z.DRV.Support.InPos AND #tmp_V90_A_inpos AND #tmp_V90_B_inpos;

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

        END_IF;

       

    2: // S210_Z MovAbso towards WP (downward)

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S210_Z.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Z; // mm/s

            "DI OUT P01".S210_Z.DRV.MC_MoveAbsolute.Position := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkPos_Z;

        ELSE

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

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

        END_IF;

       

    3: // S120_Y MovRela distance "01_MovRela_ab"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_WP := "DI OUT P01".V28Y34.VLV_OC.CmdExe_WP := FALSE;

            "DI OUT P01".V90_A.DRV.Support.SetVelo := "HMI KEY".SetPointComp_A[0].WorkVelo;

            "DI OUT P01".V90_B.DRV.Support.SetVelo := "HMI KEY".SetPointComp_B[0].WorkVelo * "HMI KEY".SetPointComp_B[0].MixingRatio / "HMI KEY".SetPointComp_A[0].MixingRatio;

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y; // mm/s

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."01_MovRela_ab".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    4: // S120_X MovRela distance "02_MovRela_bc"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X; // mm/s

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."02_MovRela_bc".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    5: // S120_Y MovRela distance "03_MovRela_cd"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y; // mm/s

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."03_MovRela_cd".Y;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    6: // S120_X MovRela distance "04_MovRela_de"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X;

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."04_MovRela_de".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    7: // S120_Y MovRela distance "05_MovRela_ef"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y; // mm/s

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."05_MovRela_ef".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    8: // S120_X MovRela distance "06_MovRela_fg"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X; // mm/s

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."06_MovRela_fg".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    9: // S120_Y MovRela distance "07_MovRela_gh"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y;

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."07_MovRela_gh".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    10: // S120_X MovRela distance "08_MovRela_hi"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X; // mm/s

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."08_MovRela_hi".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    11: // S120_Y MovRela distance "09_MovRela_ij"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y; // mm/s

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."09_MovRela_ij".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    12: // S120_X MovRela distance "10_MovRela_jk"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X;

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."10_MovRela_jk".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    13: // S120_Y MovRela distance "11_MovRela_kl"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y;

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."11_MovRela_kl".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    14: // S120_X MovRela distance "12_MovRela_lm"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_X.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_X;

            "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."12_MovRela_lm".X;

            "DI OUT P01".S120_X.DRV.Support.SavTrgtPos := "DI OUT P01".S120_X.DRV.Support.ActPos + "DI OUT P01".S120_X.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_X.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_X.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_X.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    15: // S120_Y MovRela distance "14_MovRela_ma"

        IF #SSM.S.stepfc THEN

            "DI OUT P01".S120_Y.DRV.Support.SetVelo := "DI OUT P02".M32_Pallet_Data.Workpiece_2.WorkVelo_Y;

            "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance := "DI OUT P02".M32_Pallet_Data.Workpiece_2."14_MovRela_a".Y;

            "DI OUT P01".S120_Y.DRV.Support.SavTrgtPos := "DI OUT P01".S120_Y.DRV.Support.ActPos + "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Distance;

        ELSE

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

            "DI OUT P01".S120_Y.DRV.Support.Cmd_MoveRelative := "DI OUT P01".S120_Y.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa;

            // (gasketting on)

            "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_A.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P01.V90_B.F12_Enable_WP AND "DI OUT P01".S120_Y.DRV.MC_MoveRelative.Busy AND #SSM.S.stepa;

            "DI OUT P01".V23Y4.CmdExe_WP := "HMI KEY".P01.V23Y4.F12_Enable_WP AND "DI OUT P01".V90_A.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V23Y5.CmdExe_WP := "HMI KEY".P01.V23Y5.F12_Enable_WP AND "DI OUT P01".V90_B.DRV.Support.Cmd_MoveJogWP;

            "DI OUT P01".V28Y12.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y12.F11_Enable_HP AND #SSM.S.stepa;

            "DI OUT P01".V28Y34.VLV_OC.CmdExe_HP := "HMI KEY".P01.V28Y34.F11_Enable_HP AND #SSM.S.stepa;

        END_IF;

       

    16: // Query ending sector 1 if necessary

        IF #SSM.S.stepfc THEN

            "DI MAIN P01".M00.ProductCounter.GoodProducts := "DI MAIN P01".M00.ProductCounter.GoodProducts + 1;

        ELSIF "HMI KEY".Message.Index_Position >= #MaxParts THEN

            #Done := TRUE;

        ELSE

            #SSM.S.stepnew := 1;

            #SSM.S.stepd := TRUE;

        END_IF;

END_CASE;