FB32 SEQ1 P01 : SEQ1 Building Machine |
|
|
|
Netzwerk 1: Programme choice IF "DI MAIN GLB".M00.ManuCmpltMa_run THEN IF "HMI KEY".Execute.Select_Tire_Type_1 AND NOT "HMI KEY".Execute.Tire_Type_1_Selected THEN "DI MAIN P01".SEQ1.Non_Pneumatic_Tire := "HMI KEY".Machine.Tire_Typ1_Radius; // Data set block move "HMI KEY".Execute.Tire_Type_1_Selected := TRUE; "HMI KEY".Execute.Tire_Type_2_Selected := "HMI KEY".Execute.Tire_Type_3_Selected := FALSE; ELSIF "HMI KEY".Execute.Select_Tire_Type_2 AND NOT "HMI KEY".Execute.Tire_Type_2_Selected THEN "DI MAIN P01".SEQ1.Non_Pneumatic_Tire := "HMI KEY".Machine.Tire_Typ2_Radius; // Data set block move "HMI KEY".Execute.Tire_Type_2_Selected := TRUE; "HMI KEY".Execute.Tire_Type_1_Selected := "HMI KEY".Execute.Tire_Type_3_Selected := FALSE; ELSIF "HMI KEY".Execute.Select_Tire_Type_3 AND NOT "HMI KEY".Execute.Tire_Type_3_Selected THEN "DI MAIN P01".SEQ1.Non_Pneumatic_Tire := "HMI KEY".Machine.Tire_Typ3_Radius; // Data set block move "HMI KEY".Execute.Tire_Type_3_Selected := TRUE; "HMI KEY".Execute.Tire_Type_1_Selected := "HMI KEY".Execute.Tire_Type_2_Selected := FALSE; END_IF; END_IF; |
|
|
|
Netzwerk 2: Pre-Setting "DI MAIN P01".M00.RdyToStart := "DI MAIN GLB".M00.HomPosSR AND "DI MAIN GLB".M00.AutoCmpltMa_run AND ("HMI KEY".Execute.Tire_Type_1_Selected OR "HMI KEY".Execute.Tire_Type_2_Selected OR "HMI KEY".Execute.Tire_Type_3_Selected); |
|
|
|
Netzwerk 3: Define last step #SSM(LAST_STEP := 6); |
|
|
|
Netzwerk 4: Step Switching Mechanism (SSM) CASE #SSM.S.stepact OF 0: // Waiting for Tyre_Type Pre-Setting "DI MAIN P01".M00.SEQ1_Busy := FALSE; IF #SSM.S.steps THEN IF "DI OUT P01".S120_S.DRV.Support.ActPos <> 0.0 OR NOT "DI MAIN P01".M00.RdyToStart THEN "DI MAIN GLB".M00.AutoCmpltMa_run := FALSE; END_IF; IF "HMI KEY".Execute.Tire_Type_1_Selected THEN #Extrusion_Speed := "HMI KEY".Machine.Tire_Typ1_Radius[0].Current_Value; // G120 extrusion speed #Array_upper_bound := LREAL_TO_UINT("HMI KEY".Machine.Tire_Typ1_Radius[13].Current_Value); // upper bound "DI OUT P01".CAM_DISC.CAM.MC_CamIn.SlaveScaling := "HMI KEY".Machine.Tire_Typ1_Radius[14].Scaling; // Slave Scaling "HMI KEY".Message.Current_Strap_Weight := "HMI KEY".Machine.Tire_Type1.Strap_weight; ELSIF "HMI KEY".Execute.Tire_Type_2_Selected THEN #Extrusion_Speed := "HMI KEY".Machine.Tire_Typ2_Radius[0].Current_Value; // G120 extrusion speed #Array_upper_bound := LREAL_TO_UINT("HMI KEY".Machine.Tire_Typ2_Radius[13].Current_Value); // upper bound "DI OUT P01".CAM_DISC.CAM.MC_CamIn.SlaveScaling := "HMI KEY".Machine.Tire_Typ2_Radius[14].Scaling; // Slave Scaling "HMI KEY".Message.Current_Strap_Weight := "HMI KEY".Machine.Tire_Type2.Strap_weight; ELSIF "HMI KEY".Execute.Tire_Type_3_Selected THEN #Extrusion_Speed := "HMI KEY".Machine.Tire_Typ3_Radius[0].Current_Value; // G120 extrusion speed #Array_upper_bound := LREAL_TO_UINT("HMI KEY".Machine.Tire_Typ3_Radius[13].Current_Value); // upper bound "DI OUT P01".CAM_DISC.CAM.MC_CamIn.SlaveScaling := "HMI KEY".Machine.Tire_Typ3_Radius[14].Scaling; // Slave Scaling "HMI KEY".Message.Current_Strap_Weight := "HMI KEY".Machine.Tire_Type3.Strap_weight; END_IF; "HMI KEY".Message.Programme_Tire_Type1_Done := "HMI KEY".Message.Programme_Tire_Type2_Done := "HMI KEY".Message.Programme_Tire_Type3_Done := FALSE; #SSM.S."1_FAULT_00_15".%X0 := NOT "DI MAIN P01".M00.RdyToStart; #SSM.S.stepd := "DI MAIN P01".M00.RdyToStart; "DI OUT P01".CAM_DISC.CAM.Support.Get_Cam_No := 1; #Lap_No := 0; #SSM.S.DlyOff.PT := t#1000ms; "DI OUT P01".CAM_DISC.CAM.Support.Write_Index := "DI OUT P01".CAM_DISC.CAM.Support.Read_Index := "DI OUT P01".CAM_DISC.CAM.Support.Output_Index := 0; "HMI KEY".Measuring_InputPos := #tmp_del_measuring_inputpos; // block move END_IF;
1: // Waiting for rubber strap to be bound IF #SSM.S.stepfc THEN #SSM.S.c1.set := LREAL_TO_INT(IN := ABS("HMI KEY".Machine.Distance_to_CamStart / #Extrusion_Speed) * 10); // extrusion speed "DI OUT P01".G120C.DRV.Support.SetVelo := "DI OUT P01".G120.DRV.MC_MoveVelocity.Velocity := #Extrusion_Speed; //extrusion speed ELSE #SSM.S.c2.set := "DI MAIN P02".SEQ1.Temperature_Holding_Time; #SSM.S.c2.start := "HMI KEY".Message.Required_Temperature_Reached; #SSM.S.c1.start := "DI OUT P01".G120C.DRV.MC_MoveJog.InVelocity; #SSM.S.stepd := #SSM.S.c1.done AND #SSM.S.c2.done; "DI OUT P01".G120.DRV.Support.Cmd_MoveAbso := "DI OUT P01".G120.DRV.Support.Epos_Enabled AND NOT #SSM.S.stepd AND "HMI KEY".Message.Required_Temperature_Reached AND #SSM.S.c2.done AND #SSM.S.stepa; "DI OUT P01".G120C.DRV.Support.Cmd_MoveJogWP := "DI OUT P01".G120C.DRV.Support.Epos_Enabled AND "DI OUT P01".G120.DRV.MC_MoveVelocity.InVelocity; END_IF;
2: // Process Cam_No 1 IF #SSM.S.stepfc AND #Lap_No < #Array_upper_bound THEN #Lap_No := #Lap_No + 1; IF "HMI KEY".Execute.Tire_Type_1_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ1_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ1_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // scaled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ1_Radius[#Lap_No].Current_Value; ELSIF "HMI KEY".Execute.Tire_Type_2_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ2_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ2_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // sculled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ2_Radius[#Lap_No].Current_Value; ELSIF "HMI KEY".Execute.Tire_Type_3_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ3_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ3_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // scaled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ3_Radius[#Lap_No].Current_Value; END_IF; ELSIF "DI OUT P01".S120_S.DRV.Support.LampOFF THEN "DI OUT P01".CAM_DISC.CAM.Support.Get_Cam_No := 1; "DI MAIN P01".M00.SEQ1_Busy := TRUE; END_IF; "DI OUT P01".CAM_DISC.CAM.MC_MeasuringInput.Execute := "HMI KEY".P01.CAM_DISC.F11_Enable_HP AND "DI OUT P01".CAM_DISC.CAM.Support.ReadTo_ReStart; "DI OUT P01".S120_M.DRV.Support.Cmd_MoveJogWP := "DI OUT P01".S120_M.DRV.Support.Epos_Enabled AND "E00 CAM DancDn" AND "E00 CAM DancUp" AND #SSM.S.stepa; "DI OUT P01".G120C.DRV.Support.Cmd_MoveJogWP := "DI OUT P01".G120C.DRV.Support.Epos_Enabled AND #SSM.S.stepa; IF NOT "DI OUT P01".CAM_DISC.CAM.MC_OutputCam.CamOutput AND #SSM.S.stepreg THEN #SSM.S.stepd := TRUE; IF #Lap_No = #Array_upper_bound THEN #SSM.S.stepnew := 5; END_IF; END_IF; #SSM.S.stepreg := "DI OUT P01".CAM_DISC.CAM.MC_OutputCam.CamOutput AND "DI OUT P01".S120_M.DRV.Support.LampON;
3: // Process Cam_No 2 IF #SSM.S.stepfc AND #Lap_No < #Array_upper_bound THEN #Lap_No := #Lap_No + 1; IF "HMI KEY".Execute.Tire_Type_1_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ1_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ1_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // scaled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ1_Radius[#Lap_No].Current_Value; ELSIF "HMI KEY".Execute.Tire_Type_2_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ2_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ2_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // scaled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ2_Radius[#Lap_No].Current_Value; ELSIF "HMI KEY".Execute.Tire_Type_3_Selected THEN "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling := "HMI KEY".Machine.Tire_Typ3_Radius[#Lap_No].Scaling; // current MasterScaling "DI OUT P01".CAM_DISC.CAM.Support.Output_Distance := "HMI KEY".Machine.Tire_Typ3_Radius[11].Current_Value / "DI OUT P01".CAM_DISC.CAM.MC_CamIn.MasterScaling; // scaled Output_Distance "DI OUT P01".S120_M.DRV.Support.SetVelo := #Extrusion_Speed * "HMI KEY".Machine.Velo_Radian_Factor / "HMI KEY".Machine.Tire_Typ3_Radius[#Lap_No].Current_Value; END_IF; ELSIF "DI OUT P01".S120_S.DRV.Support.LampOFF THEN "DI OUT P01".CAM_DISC.CAM.Support.Get_Cam_No := 2; "DI MAIN P01".M00.SEQ1_Busy := TRUE; END_IF; "DI OUT P01".CAM_DISC.CAM.MC_MeasuringInput.Execute := "HMI KEY".P01.CAM_DISC.F11_Enable_HP AND "DI OUT P01".CAM_DISC.CAM.Support.ReadTo_ReStart AND NOT #SSM.S.steplo; "DI OUT P01".S120_M.DRV.Support.Cmd_MoveJogWP := "DI OUT P01".S120_M.DRV.Support.Epos_Enabled AND #SSM.S.stepa; "DI OUT P01".G120C.DRV.Support.Cmd_MoveJogWP := "DI OUT P01".G120C.DRV.Support.Epos_Enabled AND #SSM.S.stepa; IF NOT "DI OUT P01".CAM_DISC.CAM.MC_OutputCam.CamOutput AND #SSM.S.stepreg THEN #SSM.S.stepd := TRUE; IF #Lap_No = #Array_upper_bound THEN #SSM.S.stepnew := 5; END_IF; END_IF; #SSM.S.stepreg := "DI OUT P01".CAM_DISC.CAM.MC_OutputCam.CamOutput AND "DI OUT P01".S120_M.DRV.Support.LampON;
4: // Wait for ReadTo_ReStart processing Cam_No 1 #SSM.S.c1.start := "DI OUT P01".CAM_DISC.CAM.Support.ReadTo_ReStart; #SSM.S.c1.set := 25; #SSM.S.stepnew := 2; #SSM.S.stepd := #SSM.S.c1.done;
5: // Y100 Rubber Cutting Device WP IF #SSM.S.stepfc THEN #SSM.S.c1.set := 30; #SSM.S.stepllo := TRUE; ELSIF "DI OUT P01".Y100.FB_WP AND #SSM.S.stepreg THEN #SSM.S.stepllo := FALSE; END_IF; #SSM.S.stepreg := "DI OUT P01".Y100.FB_WP AND #SSM.S.c1.done; #SSM.S.c1.start := "DI OUT P01".Y100.VLV_O.CmdExe_WP := "HMI KEY".P01.Y100.F12_Enable_WP AND #SSM.S.stepllo AND #SSM.S.stepa; #SSM.S.stepd := NOT #SSM.S.stepllo AND "DI OUT P01".Y100.FB_HP;
6: // Query S120_S Rubber steering device at home position IF #SSM.S.stepfc THEN "DI OUT P01".S120_S.DRV.Support.SetVelo := "HMI KEY".SetValues.Homing_Velocity; "DI OUT P01".S120_S.DRV.MC_MoveAbsolute.Position := 0.0; "DI MAIN P01".M00.ProductCounter.GoodParts := "DI MAIN P01".M00.ProductCounter.GoodParts + 1; ELSE "DI MAIN P01".M00.SEQ1_Done := "DI OUT P01".S120_S.DRV.Support.InPos AND NOT #SSM.S.steplo; "DI OUT P01".S120_S.DRV.Support.Cmd_MoveAbso := "DI OUT P01".S120_S.DRV.Support.Epos_Enabled AND #SSM.S.stepa AND NOT "DI MAIN P01".M00.SEQ1_Done; IF "DI MAIN P01".M00.SEQ1_Done THEN IF "HMI KEY".Execute.Tire_Type_1_Selected THEN "HMI KEY".Message.Programme_Tire_Type1_Done := TRUE; ELSIF "HMI KEY".Execute.Tire_Type_2_Selected THEN "HMI KEY".Message.Programme_Tire_Type2_Done := TRUE; ELSIF "HMI KEY".Execute.Tire_Type_3_Selected THEN "HMI KEY".Message.Programme_Tire_Type3_Done := TRUE; END_IF; END_IF; END_IF; END_CASE; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|