Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

FB42 SEQ1 P02 SEQ1 Feeding pick & place

 

 

 

Netzwerk 1: Pre-Setting

"DI MAIN P02".M00.RdyToStart := NOT "DI MAIN P02".M00.HomPosRun AND "DI MAIN GLB".M00.HomPosSR AND "DI MAIN GLB".M00.AutoCmpltMa_run;

 

 

 

Netzwerk 2: Define last step

#SSM(LAST_STEP := 5);

 

 

 

Netzwerk 3: Step Switching Mechanism (SSM)

CASE #SSM.S.stepact OF

    0: // Waiting for SEQ1 to start

        #SSM.S.stepd := #SSM.S.steps;

        "DI MAIN P02".M00.SEQ1_Busy :=

        "DI MAIN P02".to_P01_Handling.Request := FALSE;

       

    1: // P02_to_P01_Handling.Request

        IF #SSM.S.stepfc THEN

            "DI MAIN P02".to_P01_Handling.Done := FALSE;

        ELSE

            #SSM.S.stepd := "DI MAIN P02".to_P01_Handling.Request := "DI MAIN P02".M00.RdyToStart AND "DI MAIN P01".to_P02_Feeding.Request;

        END_IF;

       

    2: // Query Syringe LightBar, and Carrier atPos

        IF NOT "E02 M200 Syringe LightBar" THEN

            "DI MAIN P02".M00.SEQ1_Busy := TRUE;

            "DI OUT P02".M200.DRV.CmdExe_WP := "HMI KEY".P02.M200.F12_Enable_WP AND #SSM.S.stepa;

        ELSIF "E02 M200 Syringe LightBar" THEN

            "DI OUT P02".M200.DRV.CmdExe_WP := FALSE;

            IF NOT "DI OUT P02".M200.FD_BACK AND "E02 M200 Carrier atPos" THEN

                #SSM.S.stepd := "DI MAIN P02".M00.SEQ1_WP1_DnOK := TRUE;

                #RunTimeCountr := 0;

            END_IF;

        END_IF;

        IF #RunTimeCountr > #RunTimeSetVal THEN

            #SSM.S."1_FAULT_00_15".%X0 := TRUE;

        END_IF;

       

    3: // P02_to_P01_Handling.EnabledToMove

        "DI MAIN P02".to_P01_Handling.EnabledToMove := "DI MAIN P01".to_P02_Feeding.Request;

        IF "DI OUT P01".C100.FB_HP AND "DI OUT P01".V100.FB_WP AND "DI MAIN P01".to_P02_Feeding.EnabledToMove THEN

            #SSM.S.stepd := "DI MAIN P02".to_P01_Handling.Done := TRUE;

        END_IF;

       

    4: // Waiting for P01.to_P02_Feeding.Done

        IF "DI MAIN P01".to_P02_Feeding.Done THEN

            "DI MAIN P02".to_P01_Handling.EnabledToMove := "DI MAIN P01".to_P02_Feeding.EnabledToMove := FALSE;

            #SSM.S.stepd := TRUE;

        END_IF;

       

    5: // Waiting for Handling and Feeding Done

        IF #SSM.S.stepfc THEN

            #SSM.S.c1.set := 20;

            "DI MAIN P02".to_P01_Handling.Request := FALSE;

        ELSE

            #SSM.S.c1.start := "DI MAIN P01".to_P02_Feeding.Done AND "DI MAIN P02".to_P01_Handling.Done;

            "DI OUT P02".M201.DRV.CmdExe_WP := "HMI KEY".P02.M201.F12_Enable_WP AND #SSM.S.c1.start AND #SSM.S.stepa;

            IF #SSM.S.c1.done THEN

                "DI OUT P02".M201.DRV.CmdExe_WP := "DI MAIN P01".to_P02_Feeding.Done := "DI MAIN P02".to_P01_Handling.Done := FALSE;

                IF NOT "DI OUT P02".M201.FD_BACK THEN

                    #RunTimeCountr := 0;

                    IF ("DI MAIN P01".M00.ProductCounter.GoodParts) MOD "HMI KEY".TargetValues.BlisterMatrix.NumOfRows = 0 THEN

                        "DI MAIN P02".M00.ProductCounter.GoodParts := "DI MAIN P02".M00.ProductCounter.GoodParts + 1; // Blister counter

                        "DI MAIN P02".M00.SEQ1_Done := TRUE;

                    END_IF;

                    #SSM.S.stepd := NOT "DI MAIN P02".M00.SEQ1_Done;

                END_IF;

            END_IF;

        END_IF;

END_CASE;