



|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
FB42 SEQ1 P02: Roller Picker 3D SSM |
|
|
|
|
|
Network 1: Pre-Setting "DI MAIN P02".M00.ReadyToStart := "DI MAIN P02".M00.HomePosition_IS AND "DI MAIN GLB".M00.AutomaticEntirePlant_run; |
|
|
|
|
|
Network 2: Define last step #SSM(LAST_STEP := 9); |
|
|
|
|
|
Network 3: Step Switching Mechanism (SSM) CASE #SSM.S.stepact OF 0: // Waiting for SEQ to start "DI OUT P02".CAMERA.Recording.Done := "DI MAIN P02".M00.SEQ1_Busy := FALSE; "DI MAIN P02".to_P01.Request := "DI MAIN P02".M00.ReadyToStart; #SSM.S.stepd := #SSM.S.steps AND "DI MAIN P02".M00.ReadyToStart AND "DI MAIN P01".to_P02.Request;
1: // ROBOT_3D MoveLinearAbsolute - WCS Start Up Behind [1] IF #SSM.S.stepfc THEN "DI MAIN P02".M00.SEQ1_Busy := TRUE; #RunTimeCounter := 0; #Num := 1; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 0; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.DynamicAdaption := -1; // Default "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.BufferMode := 1; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Velocity := "DI OUT P01".WINDER.Web.Master_Work_Velocity; // -1.0; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis; ELSE #SSM.S.stepd := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo; "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
2: // ROBOT_3D MC_MoveLinearAbsolute - WCS Down to Peforating Start [2] IF #SSM.S.stepfc THEN #Num := 2; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis; ELSE #SSM.S.stepd := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo; "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
3: // Waiting for CAMERA.Recording.Done IF #SSM.S.stepfc THEN "DI OUT P02".TRACK_CONVEYOR.DRV.Support.Enable_ReMeasuring := TRUE; ELSIF "DI MAIN P01".to_P02.ReadyToEnd THEN #SSM.S.stepnew := 9; #SSM.S.stepd := TRUE; ELSIF "DI MAIN P01".to_P02.EnabledToRun THEN #SSM.S.stepd := "DI OUT P02".CAMERA.Recording.Done; "DI OUT P02".CAMERA.Execute_ON := NOT #SSM.S.stepd AND "DI OUT P01".S120M.DRV.Support.LampON AND "DI OUT P02".TRACK_CONVEYOR.DRV.MC_MeasuringInput.Execute; "DI OUT P02".CAMERA.Recording_Axis[4] := 90.0; END_IF;
4: // S120M Move Indentation towards Perforating Start IF #SSM.S.steplo THEN "DI OUT P02".TRACK_CONVEYOR.DRV.Support.Measuring_Shift_Distance := "HMI KEY".Plantinfo_P02.Track_Conveyor.Measuring_Shift_Distance + "HMI KEY".Plantinfo_P02.Track_Conveyor.Object_Offset; ELSIF ABS("DI OUT P01".WINDER.Interface.MasterLine.READ.Position - "DI OUT P02".TRACK_CONVEYOR.DRV.Support.InitialObjectPosition_x) < "HMI KEY".Plantinfo_P02.Track_Conveyor.Window THEN #SSM.S.stepd := TRUE; END_IF;
5: // MC_TrackConveyorBelt.Execute IF #SSM.S.stepfc THEN "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.DynamicAdaption := 0; // no adaption "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 1; // OCS1 "DI OUT P02".TRACK_CONVEYOR.DRV.MC_TrackConveyorBelt.Execute := TRUE; ELSE #SSM.S.stepd := "DI OUT P02".TRACK_CONVEYOR.DRV.MC_TrackConveyorBelt.Done; END_IF;
6: // ROBOT_3D MC_MoveLinearAbsolute - OCS1 Perforating Track Conveyor [3] IF #SSM.S.stepfc THEN #Num := 3; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis; IF "DI OUT P02".CAMERA.Recording.Product_A THEN "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] + "DI OUT P02".CAMERA.Recording_Axis[2]; ELSIF "DI OUT P02".CAMERA.Recording.Product_C THEN "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] - "DI OUT P02".CAMERA.Recording_Axis[2]; END_IF; ELSE #SSM.S.stepd := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo; "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
7: // ROBOT_3D MC_MoveLinearAbsolute - OCS1 End Front Up [4] 1 synchronous UP IF #SSM.S.stepfc THEN #Num := 4; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis; IF "DI OUT P02".CAMERA.Recording.Product_A THEN "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] + "DI OUT P02".CAMERA.Recording_Axis[2]; ELSIF "DI OUT P02".CAMERA.Recording.Product_C THEN "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position[2] := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis[2] - "DI OUT P02".CAMERA.Recording_Axis[2]; END_IF; ELSE #SSM.S.stepd := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo; "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT #SSM.S.stepd AND #SSM.S.stepa; END_IF;
8: // Query ROBOT_3D Re-Start IF NOT "DI MAIN P01".to_P02.ReadyToEnd THEN #SSM.S.c1.set := 5; #SSM.S.c1.start := TRUE; #SSM.S.stepnew := 0; #SSM.S.stepd := #SSM.S.c1.done; ELSE #SSM.S.stepd := TRUE; END_IF;
9: // ROBOT_3D MC_MoveLinearAbsolute HomePosition [0] IF #SSM.S.stepfc THEN #Num := 0; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.BufferMode := 1; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.CoordSystem := 0; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Velocity := -1.0; "DI OUT P02".ROBOT_3D.DRV.MC_MoveLinearAbsolute.Position := "HMI KEY".Plantinfo_P02.Robot_3D.Target.Position[#Num].Axis; ELSE "DI MAIN P02".M00.SEQ1_Done := "DI MAIN P01".to_P02.Done; "DI MAIN P02".to_P01.Done := "DI OUT P02".ROBOT_3D.DRV.Support.InPosition AND NOT #SSM.S.steplo; "DI OUT P02".ROBOT_3D.DRV.Support.MoveLinearAbsolute := "DI OUT P02".ROBOT_3D.DRV.Support.KINEMATICS_Enabled AND NOT "DI MAIN P02".M00.SEQ1_Done AND "HMI KEY".Plantinfo_P01.Coil_Slitting_Done AND #SSM.S.stepa; END_IF; END_CASE; |
|