|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB42 SEQ1 P02 : SCARA_3D Robotic Arm |
|
|
|
Network 1: Pre-Setting "DI MAIN P02".M00.RdyToStart := "DI MAIN P02".M00.HomPos_IS AND "DI MAIN GLB".M00.AutoEntirePlant_run; |
|
|
|
Network 2: Define last step #SSM(LAST_STEP := 10); |
|
|
|
Network 3: Step Switching Mechanism (SSM) CASE #SSM.S.stepact OF 0: // Waiting for SEQ to start "DI MAIN P02".to_P01.EnableToGo := "DI MAIN P02".to_P01.Request := "DI MAIN P01".M00.SEQ1_Busy := FALSE; IF #SSM.S.steps THEN IF "HMI KEY".Message.Parts_Production_Done OR "DI MAIN P02".to_P01.Done THEN "DI MAIN GLB".M00.AutoEntirePlant_run := FALSE; ELSE #SSM.S.stepd := "DI MAIN P02".to_P01.Request := "DI MAIN P01".M00.RdyToStart; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.CoordSystem := 100; END_IF; END_IF;
1: // G120C Workpiece Conveyor MoveJogWP IF #SSM.S.steplo THEN #RunTimeCounter := 0; #SSM.S.c1.set := 10; "DI MAIN P01".M00.SEQ1_Busy := TRUE; "DI OUT P02".S210J3.DRV.Support.SetVelo := "DI OUT P02".G120C.DRV.Support.SetVelo := "HMI KEY".Values.SCADA.Axis_Velocity_Fast; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.VelocityFactor := "HMI KEY".Values.SCADA.SCARA_3D_VelocityFactor_Fast; ELSE #SSM.S.c1.start := "DI MAIN P01".to_P02.EnableToGo; #SSM.S.stepd := ("E00 G120C PickUp Pos1" OR "E00 G120C PickUp Pos2") AND #SSM.S.c1.done; "DI OUT P02".G120C.DRV.Support.Cmd_MoveJogWP := "HMI KEY".P02.G120C.F12_Enable_WP AND "DI MAIN P01".to_P02.Request AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
2: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 1/2 - pick IF #SSM.S.stepfc THEN "DI MAIN P01".to_P02.EnableToGo := FALSE; ELSIF "E00 G120C PickUp Pos1" THEN #Pos := 1; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; ELSIF "E00 G120C PickUp Pos2" THEN #Pos := 2; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; END_IF; #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND "DI OUT P02".G120C.DRV.Support.LampOFF AND NOT #SSM.S.stepd AND #SSM.S.stepa;
3: // Y200 Vacuum Gripper CmdExe_WP - pick workpiece "DI OUT P02".Y200.VLV_O.CmdExe_WP := "HMI KEY".P02.Y200.F12_Enable_WP; #SSM.S.stepd := "DI OUT P02".Y200.FB_WP AND "E00 Y200 WorkpieseOn";
4: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 3 - intermediate IF #SSM.S.stepfc THEN #Pos := 3; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; #SSM.S.c1.start := TRUE; ELSE #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.Active AND NOT #SSM.S.steplo; "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa AND #SSM.S.c1.done; END_IF;
5: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 4 - intermediate IF #SSM.S.stepfc THEN #Pos := 4; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; #SSM.S.c1.start := "DI MAIN P02".to_P01.EnableToGo := TRUE; ELSE #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.Active AND NOT #SSM.S.steplo; "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa AND #SSM.S.c1.done; END_IF;
6: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 5 - place workpiece IF #SSM.S.stepfc THEN "DI MAIN P02".M00.ProductCounter.TotalParts += 1; #Pos := 5; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; ELSE #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
7: // Y200 Vacuum Gripper CmdExe_HP - place workpiece IF #SSM.S.stepfc THEN "DI OUT P02".Y200.VLV_O.CmdExe_WP := FALSE; END_IF; #SSM.S.stepd := "DI OUT P02".Y200.FB_HP AND NOT "E00 Y200 WorkpieseOn";
8: // S210J3 Robotic Arm z-axis MoveAbsolute Pos 4 - above IF #SSM.S.stepfc THEN #Pos := 4; "DI OUT P02".S210J3.DRV.MC_MoveAbsolute.Position := "HMI KEY".MoveDirect_WCS[#Pos].Position[3]; ELSE #SSM.S.stepd := "DI OUT P02".S210J3.DRV.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P02".S210J3.DRV.Support.Cmd_MoveAbsolute := "DI OUT P02".S210J3.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
9: // SCARA_3D Robotic Arm MoveDirectAbsolute Pos 3 - intermediate IF #SSM.S.stepfc THEN #Pos := 3; "DI OUT P02".SCARA_3D.KIN.MC_MoveDirectAbsolute.Position := "HMI KEY".MoveDirect_MCS[#Pos].Position; ELSE #SSM.S.stepd := "DI OUT P02".SCARA_3D.KIN.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P02".SCARA_3D.KIN.Support.Cmd_MoveDirect_Absolute := "DI OUT P02".SCARA_3D.KIN.Support.KINpos_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
10: // SCARA_3D Robotic Arm ends or pause before restart IF "DI MAIN P02".M00.ProductCounter.TotalParts >= "DI MAIN P02".M00.ProductCounter.GoodParts THEN "DI MAIN P02".to_P01.Done := TRUE; "HMI KEY".Message.Parts_Production_Done := "DI MAIN P02".to_P01.Done AND "DI MAIN P01".to_P02.Done; "DI MAIN P02".M00.SEQ1_Done := "DI MAIN P01".M00.SEQ1_Done; RETURN; ELSIF #SSM.S.stepfc THEN #SSM.S.stepnew := 1; #SSM.S.c1.set := 5; #SSM.S.c1.start := TRUE; ELSE #SSM.S.stepd := #SSM.S.c1.done; END_IF; END_CASE; |
|