FB32 SEQ1 P01 SEQ1 automatic mode

 

 

 

Netzwerk 1: SEQ1 Pre-Setting

    #LiftStartUp := "E01 1M1 LB" AND "DI OUT P01".Support."1M2 EndLimUp";

    #LiftStartDn := NOT "E01 1M1 LB" AND "DI OUT P01".Support."1M2 EndLimDown";

 

 

 

Netzwerk 2: Execute SEQ1

    #SEQ1(STEP_PLS := "HMI KEY".P01.GLB.F17_StepPls,

          STEP_MNS := "HMI KEY".P01.GLB.F18_StepMns,

          GOTO_STEP := "HMI KEY".P01.GLB.F19_GoToStep,

          GOTO_STEP_NO := "HMI KEY".P01.GLB.GoToStep,

          MAX_STEP := 4);

    #ACT_STEP := #SEQ1.S.stepact;

 

 

 

Netzwerk 3: Step jump distributor

    CASE #SEQ1.S.stepact OF

        0: // Waiting for SEQ1 enable

            "M01 SEQ1 Active" := FALSE;

            "M01 MW38" := 0;

            #SEQ1.S.stepd := "M01 HomPos" AND #SEQ1.S.steps;

           

        1:  // 1M1 Loading drive set value

            IF #SEQ1.S.stepfc THEN

                "M01 SEQ1 Active" := TRUE;

                IF #LiftStartUp THEN

                    "DI OUT P01"."1M1".DRV.SetTrgtPos := "DI OUT P01".MANUAL.Support."1M1".Set_TchInPos_1;

                    RETURN;

                ELSIF #LiftStartDn THEN

                    "DI OUT P01"."1M1".DRV.SetTrgtPos := "DI OUT P01".MANUAL.Support."1M1".Set_TchInPos_0;

                    RETURN;

                END_IF;

            ELSE

                #SEQ1.S.stepd := NOT "DI OUT P01"."1M1".DRV.SetPoReach;

            END_IF;

           

        2:  // If lift is up 1M1 WP (RTT-Takt)

            IF "DI OUT P01".Support."1M2 EndLimUp" THEN

                IF "DI OUT P01"."1M1".DRV.SetPoReach THEN

                    #SEQ1.S.c1.start := "HMI KEY".P01."1M1".F5_Set_Ref_Point := "M01 ToRTT SetPoReach" := TRUE;

                    #SEQ1.S.c1.set := 15;

                    "M01 Enbl RTT" := FALSE;

                END_IF;

               

                "M01 1M1 GoToPos" := NOT #SEQ1.S.c1.start AND "HMI KEY".P01."1M1".Enable_WP AND "M01 Enbl RTT";

               

                IF #SEQ1.S.c1.done THEN

                    "HMI KEY".P01."1M1".F5_Set_Ref_Point := FALSE;

                    #SEQ1.S.stepnew := 4;

                    #SEQ1.S.stepd := NOT "E01 1M1 LB" AND "DI OUT P01"."1M1".DRV.ReferenceOK AND "DI OUT P01"."1M1".DRV.CrntPos = 0.0;

                    IF NOT #SEQ1.S.stepd THEN

                        #FLT."1M1_WP" := TRUE;

                    END_IF;

                END_IF;

            END_IF;

           

            // If lift is down 1M1 HP (unloading)         

            IF "DI OUT P01".Support."1M2 EndLimDown" THEN

                "M01 ToRTT SetPoReach" := TRUE;

                "M01 Enbl RTT" := FALSE;

               

                IF "DI OUT P01"."1M1".DRV.SetPoReach THEN

                    #SEQ1.S.c1.start := "HMI KEY".P01."1M1".F5_Set_Ref_Point := "HMI KEY".P01."1M3".F5_Set_Ref_Point := TRUE;

                    #SEQ1.S.c1.set := 15;

                END_IF;

               

                "M01 1M1 GoToPos" := NOT #SEQ1.S.c1.start AND "HMI KEY".P01."1M1".Enable_HP AND "DI MAIN P03".SEQ1.WP_PLACE.%X3;

               

                "DI OUT P01".MANUAL.Support."1M3".CmdExe_slow_WP := "HMI KEY".P01."1M3".Enable_HP := "M01 1M1 GoToPos";

               

                IF #SEQ1.S.c1.done THEN

                    "HMI KEY".P01."1M1".F5_Set_Ref_Point := "HMI KEY".P01."1M3".F5_Set_Ref_Point := FALSE;

                    #SEQ1.S.stepd := "E01 1M1 LB" AND "DI OUT P01"."1M1".DRV.CrntPos = 0.0 AND "DI OUT P01"."1M3".DRV.CrntPos = 0.0;

                    IF NOT #SEQ1.S.stepd THEN

                        #FLT."1M1_HP" := TRUE;

                    END_IF;

                END_IF;

            END_IF;

           

        3: // Lift 1M2 WP (up)

            IF #SEQ1.S.stepfc THEN

                "DI OUT P01"."1M2".DRV.SetTrgtPos := "DI OUT P01".MANUAL.Support."1M2".Set_TchInPos_0;

                #SEQ1.S.c2.start := TRUE;

                #SEQ1.S.c2.set := 15;

                RETURN;

            ELSE

                "M01 1M2 GoToPos" := "HMI KEY".P01."1M2".Enable_WP;

            END_IF;

            IF "DI OUT P01"."1M2".DRV.SetPoReach AND #SEQ1.S.c2.done THEN

                "M01 1M2 GoToPos" := FALSE;

                #SEQ1.S.c1.start := TRUE;

                #SEQ1.S.c1.set := 15;

                "M01 SEQ1 Done" := "DI MAIN P01".SEQ1.LiftStartUp;

                IF NOT "M01 SEQ1 Done" AND #SEQ1.S.c1.done THEN

                    #FLT."1M2_WP" := TRUE;

                END_IF;

            END_IF;

           

        4: // Lift 1M2 HP (down)

            IF #SEQ1.S.stepfc THEN

                "DI OUT P01"."1M2".DRV.SetTrgtPos := "DI OUT P01".MANUAL.Support."1M2".Set_TchInPos_1;

                #SEQ1.S.c2.start := TRUE;

                #SEQ1.S.c2.set := 15;

                RETURN;

            ELSE

                "M01 1M2 GoToPos" := "HMI KEY".P01."1M2".Enable_HP;

            END_IF;

            IF "DI OUT P01"."1M2".DRV.SetPoReach AND #SEQ1.S.c2.done THEN

                "M01 1M2 GoToPos" := FALSE;

                #SEQ1.S.c1.start := TRUE;

                #SEQ1.S.c1.set := 15;

                "M01 SEQ1 Done" := "DI MAIN P01".SEQ1.LiftStartDn;

                IF NOT "M01 SEQ1 Done" AND #SEQ1.S.c1.done THEN

                    #FLT."1M2_HP" := TRUE;

                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