|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
To go to next HMI image use the touch buttons; some of them are interactive. |
FB32 SEQ1 P01 : P01 sequencer 1 |
|
|
|
Network 3: Execute Pick and Place Blister Tray (2/2)
30: // XYZaxis MovAbso towards Pos.13 plase palette 2 (down/closed) IF #SSM.S.stepfc THEN #IndexPos2 := #IndexPos2 + 1; #PosPointer := 13; #ExecuteCoodinate(INDEX_POS := #IndexPos2, PLACES_ON_X := "ModulDa".P01.MaPa.WPC2_NumOfPos_X, PLACES_ON_Y := "ModulDa".P01.MaPa.WPC2_NumOfPos_Y, REF_POS := "ModulDa".P01.MaPa.WPC2_RefPos, GAP_ON_X := "ModulDa".P01.MaPa.WPC2_Gap_X, GAP_ON_Y := "ModulDa".P01.MaPa.WPC2_Gap_Y, TARGET_POS := #TrgtPos2); #TrgtPos2.Z := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].Z; #TrgtPos2.G12 := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].G12; #TrgtPos2.G34 := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].G34; ELSE "FC POS REACHED"(START := #SSM.S.steplo, TARGET_POS := #TrgtPos2, VELO_Z := "DI OUT P01".MANUAL.XYZGaxisVelo_1, VELO_XYG := "DI OUT P01".MANUAL.XYZGaxisVelo_1, ENABLE_X := NOT "DI OUT P01".V90_X.HALT_01, ENABLE_Y := NOT "DI OUT P01".V90_Y.HALT_01, ENABLE_Z := NOT "DI OUT P01".V90_Z.HALT_01 AND "DI OUT P01".V90_X.DRV.Support.InPos AND "DI OUT P01".V90_Y.DRV.Support.InPos AND "DI OUT P01".V90_X.NexDrv_DlyOn, MOV_TO_POS_X => "DI OUT P01".V90_X.DRV.Support.Cmd_MovAbso, MOV_TO_POS_Y => "DI OUT P01".V90_Y.DRV.Support.Cmd_MovAbso, MOV_TO_POS_Z => "DI OUT P01".V90_Z.DRV.Support.Cmd_MovAbso, PRECISION := 5.0, TARGET_REACHED => #SSM.S.c1.start); "DI OUT P01".MD_12.DRV.Support.Cmd_MovAbso := NOT "DI OUT P01".MD_12.HALT_01 AND #SSM.S.c1.done; "DI OUT P01".MD_34.DRV.Support.Cmd_MovAbso := NOT "DI OUT P01".MD_34.HALT_01 AND #SSM.S.c1.done; #SSM.S.stepd := "DI OUT P01".MD_12.DRV.Support.InPos AND "DI OUT P01".MD_34.DRV.Support.InPos AND #SSM.S.c1.done; END_IF;
31: // Zaxis MovAbso towards Pos.1 SafetyPos (up/closed) IF #SSM.S.stepfc THEN #PosPointer := 1; "DI OUT P01".V90_Z.DRV.Support.SetVelo := "DI OUT P01".MANUAL.XYZGaxisVelo_1; "DI OUT P01".V90_Z.DRV.MC_MoveAbsolute.Position := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].Z; ELSE #SSM.S.stepd := "DI OUT P01".V90_Z.DRV.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P01".V90_Z.DRV.Support.Cmd_MovAbso := NOT "DI OUT P01".V90_Z.HALT_01; IF #IndexPos1 < #MaxPos1 AND #IndexPos2 < #MaxPos2 AND #IndexPos2 < "ModulDa".P01.MaPa.SetBatchParts THEN #SSM.S.stepnew := 2; IF #SSM.S.stepd AND "M01 SEQ2 DoWP2" THEN "DI MAIN P01".ProdCounter.GoodProducts := "DI MAIN P01".ProdCounter.GoodProducts + 1; END_IF; END_IF; END_IF;
32: // C01 Lifting gate HP (up/closed) IF #SSM.S.steplo THEN #PosPointer := 1; "DI OUT P01".MD_12.DRV.Support.SetVelo := "DI OUT P01".MANUAL.XYZGaxisVelo_1; "DI OUT P01".MD_12.DRV.MC_MoveAbsolute.Position := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].G12; "DI OUT P01".MD_34.DRV.Support.SetVelo := "DI OUT P01".MANUAL.XYZGaxisVelo_1; "DI OUT P01".MD_34.DRV.MC_MoveAbsolute.Position := "DI OUT P01".MANUAL.XYZG_TrgtPos[#PosPointer].G34; ELSE "DI OUT P01".MD_12.DRV.Support.Cmd_MovAbso := NOT "DI OUT P01".MD_12.HALT_01; "DI OUT P01".MD_34.DRV.Support.Cmd_MovAbso := NOT "DI OUT P01".MD_34.HALT_01; END_IF; "DI OUT P01".C01.VLV_O.CmdExe_WP := FALSE; #SSM.S.stepd := "DI OUT P01".C01.FB_HP AND "DI OUT P01".MD_12.DRV.Support.InPos AND "DI OUT P01".MD_34.DRV.Support.InPos;
33: // Query homing reached Pos.1 SafetyPos (up/opened) "M01 SEQ1 Done" := "M01 HomPosIS"; END_CASE;
|
|