FB42 SEQ1 P02 SEQ1 Feeding pick & place

 

 

 

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; // scalled 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; // scalled 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; // scalled 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; // scalled 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; // scalled 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;

 

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO