|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB32 SEQ1 P01: Pick and Place and Batching sequencer |
|
|
|
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;
|
|