FB SAFE GLB

Textfeld:

 

Home

 

Erfahrung

 

Referenzen

 

Sondermaschinen

 

MSR-Maschinen

 

SPS-Programmierung

 

Visualisierung HMI

 

Elektro CAD

 

Leistungsprofil

 

Personalia

 

SW-Development

 

Dokumentation

 

 

 

Impressum & DSGVO

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

P02 manual mode

The light blue frame is hidden since manual mode is active. See e.g. P02 automatic or manual mode

FB31 SET P01 SET sequencer P01

 

 

 

Network 1: Query home position P01

#"M01 HomPosIS" :=

"DI OUT P01".Y200.FB_HP AND NOT "E01 S201 VacuOk"

AND "DI OUT P01".Y206.FB_HP

AND "DI OUT P01".Y212.FB_HP

AND "DI OUT P01".C214.FB_HP

AND "E01 S120_X SaftyPlace"

AND "E01 S120_Y SaftyPlace"

AND "E01 S120_Z SaftyPlace"

AND "DI OUT P01".MD_R.DRV.Support.InPos

AND "DI OUT P01".MD_S.DRV.Support.InPos;

 

 

 

Network 2: Step Switching Mechanism (SSM)

"#SSM(LAST_STEP := 10);

 

 

 

Network 3: Sequencer case

CASE #SSM.S.stepact OF

    0: // Waiting for SET start

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

       

    1: // Query S120_X axis home HomDone

        "HMI KEY".P01.S120_X.F5_Set_Ref_Point := NOT "DI OUT P01".S120_X.DRV.Support.HomeDone;

        #SSM.S.stepd := "DI OUT P01".S120_X.DRV.Support.HomeDone AND NOT #SSM.S.DlyOff.Q;

       

    2: // Query S120_Y axis home HomDone

        "HMI KEY".P01.S120_Y.F5_Set_Ref_Point := NOT "DI OUT P01".S120_Y.DRV.Support.HomeDone;

        #SSM.S.stepd := "DI OUT P01".S120_Y.DRV.Support.HomeDone AND NOT #SSM.S.DlyOff.Q;

       

    3: // Query S120_Z axis home HomDone

        "HMI KEY".P01.S120_Z.F5_Set_Ref_Point := NOT "DI OUT P01".S120_Z.DRV.Support.HomeDone;

        #SSM.S.stepd := "DI OUT P01".S120_Z.DRV.Support.HomeDone AND NOT #SSM.S.DlyOff.Q;

       

    4: // Query MD_R gripper rotary axis home HomDone

        "HMI KEY".P01.MD_R.F5_Set_Ref_Point := NOT "DI OUT P01".MD_R.DRV.Support.HomeDone;

        #SSM.S.stepd := "DI OUT P01".MD_R.DRV.Support.HomeDone AND NOT #SSM.S.DlyOff.Q;

       

    5: // Query MD_S gripper swing axis home HomDone

        "HMI KEY".P01.MD_S.F5_Set_Ref_Point := NOT "DI OUT P01".MD_S.DRV.Support.HomeDone;

        #SSM.S.stepd := "DI OUT P01".MD_S.DRV.Support.HomeDone AND NOT #SSM.S.DlyOff.Q;

       

    6: // Off switching WPC transport

        "DI OUT P01"."30M1".DRV.CmdExe_WP :=

        "DI OUT P01"."30M2".DRV.CmdExe_WP := FALSE;

        #SSM.S.stepd := "DI OUT P01"."30M1".DRV.LampHP AND "DI OUT P01"."30M2".DRV.LampHP;

       

    7: // S120_XYZG MovAbos towards SaftyPos 0 (up)

        "DI MAIN P01".SEQ1.IndexPos2 := "DI MAIN P01".SEQ1.IndexPos1 := "DI MAIN P01".SEQ1.PosPointer := 0;

        "FC POS REACHED"(START := #SSM.S.steplo,

                         TARGET_POS := "DI OUT P01".MANUAL.XYZG_TrgtPos["DI MAIN P01".SEQ1.PosPointer],

                         VELO_Z := "DI OUT P01".MANUAL.EposVelo_medium,

                         VELO_XYG := "DI OUT P01".MANUAL.EposVelo_fast,

                         ENABLE_X := NOT "DI OUT P01".S120_X.HALT_01 AND "DI OUT P01".S120_Z.DRV.Support.InPos,

                         ENABLE_Y := NOT "DI OUT P01".S120_Y.HALT_01 AND "DI OUT P01".S120_Z.DRV.Support.InPos,

                         ENABLE_Z := NOT "DI OUT P01".S120_Z.HALT_01,

                         ENABLE_R := NOT "DI OUT P01".MD_R.HALT_01 AND "DI OUT P01".S120_Z.DRV.Support.InPos,

                         ENABLE_S := NOT "DI OUT P01".MD_S.HALT_01 AND "DI OUT P01".S120_Z.DRV.Support.InPos,

                         MOV_TO_POS_X => "DI OUT P01".S120_X.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Y => "DI OUT P01".S120_Y.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_Z => "DI OUT P01".S120_Z.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_R => "DI OUT P01".MD_R.DRV.Support.Cmd_MovAbso,

                         MOV_TO_POS_S => "DI OUT P01".MD_S.DRV.Support.Cmd_MovAbso,

                         PRECISION := 0.1,

                         TARGET_REACHED => #SSM.S.c1.start);

        #SSM.S.stepd := #SSM.S.c1.done;

       

    8: // Y200 gripper vacuum HP Query Gripper PartPresent

        IF "E01 B200 PartPresent" THEN

            "M01 HomPosRun" := FALSE;

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

        ELSE

            "DI OUT P01".Y200.VLV_OC.CmdExe_WP := FALSE;

            "DI OUT P01".Y200.VLV_OC.CmdExe_HP := "HMI KEY".P01.Y200.F11_Enable_HP;

            #SSM.S.stepd := "DI OUT P01".Y200.FB_HP AND NOT "E01 S201 VacuOk";

        END_IF;

       

    9: // Demand puscher HP

        "DI OUT P01".C214.VLV_OC.CmdExe_WP := FALSE;

        "DI OUT P01".C214.VLV_OC.CmdExe_HP := "HMI KEY".P01.C214.F11_Enable_HP;

       

        "DI OUT P01".Y204.VLV_O.CmdExe_WP :=

        "DI OUT P01".Y206.VLV_O.CmdExe_WP :=

        "DI OUT P01".Y210.VLV_O.CmdExe_WP :=

        "DI OUT P01".Y212.VLV_O.CmdExe_WP := FALSE;

       

        "DI OUT P01".Y204.VLV_O.CmdExe_HP := "HMI KEY".P01.Y204.F11_Enable_HP;

        "DI OUT P01".Y206.VLV_O.CmdExe_HP := "HMI KEY".P01.Y206.F11_Enable_HP;

        "DI OUT P01".Y210.VLV_O.CmdExe_HP := "HMI KEY".P01.Y210.F11_Enable_HP;

        "DI OUT P01".Y212.VLV_O.CmdExe_HP := "HMI KEY".P01.Y212.F11_Enable_HP;

        #SSM.S.stepd := "M01 HomPosIS";

       

    10: // Query P01 home position

        "M01 HomPosRun" := NOT "M01 HomPosIS" OR #SSM.S.steplo;

END_CASE;

 

 

 

FB41 SET P02 SET sequencer P02

 

 

 

Network 1: SET query home position

"M01 HomPosIS" :=

"DI MAIN P01".SEQ1.PosPointer = 1

AND "DI OUT P01".V90_X.DRV.Support.InPos

AND "DI OUT P01".V90_Y.DRV.Support.InPos

AND "DI OUT P01".V90_Z.DRV.Support.InPos

AND "DI OUT P01".MD_12.DRV.Support.InPos

AND "DI OUT P01".MD_34.DRV.Support.InPos

AND "DI OUT P01".C01.FB_HP;

 

 

 

Network 2: Reset command move axis

#SSM(LAST_STEP := 6);

 

 

 

Network 3: Sequencer case

CASE #SSM.S.stepact OF

    0: // Waiting for SET start

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

       

    1: // Off switching Box Transport

        "DI OUT P02"."31M1".DRV.CmdExe_WP :=

        "DI OUT P02"."31M2".DRV.CmdExe_WP :=

        "DI OUT P02"."32M1".DRV.CmdExe_HP :=

        "DI OUT P02"."32M1".DRV.CmdExe_WP := FALSE;

        #SSM.S.stepd := NOT ("DI OUT P02"."31M1".DRV.FdBack OR "DI OUT P02"."31M2".DRV.FdBack OR "DI OUT P02"."32M1".DRV.FdBack);

       

    2: // Off switching all stoppers

        "DI OUT P02".Y404.VLV_O.CmdExe_WP :=

        "DI OUT P02".Y406.VLV_O.CmdExe_WP :=

        "DI OUT P02".Y410.VLV_O.CmdExe_WP :=

        "DI OUT P02".Y412.VLV_O.CmdExe_WP := FALSE;

       

        "DI OUT P02".Y404.VLV_O.CmdExe_HP := "HMI KEY".P02.Y404.F11_Enable_HP;

        "DI OUT P02".Y406.VLV_O.CmdExe_HP := "HMI KEY".P02.Y406.F11_Enable_HP;

        "DI OUT P02".Y410.VLV_O.CmdExe_HP := "HMI KEY".P02.Y410.F11_Enable_HP;

        "DI OUT P02".Y412.VLV_O.CmdExe_HP := "HMI KEY".P02.Y412.F11_Enable_HP;

        #SSM.S.stepd :=

        "DI OUT P02".Y404.FB_HP AND "DI OUT P02".Y406.FB_HP

        AND "DI OUT P02".Y410.FB_HP AND "DI OUT P02".Y412.FB_HP;

       

    3: // M10 Lift motor pick-up conveyor WP

        "DI OUT P02".M10.DRV.CmdExe_HP := FALSE;

        "DI OUT P02".M10.DRV.CmdExe_WP := "HMI KEY".P02.M10.F12_Enable_WP;

        #SSM.S.stepd := "E02 M10 WP";

       

    4: // C400 Cylinder pick-up conveyor WP

        "DI OUT P02".C400.VLV_OC.CmdExe_HP := FALSE;

        "DI OUT P02".C400.VLV_OC.CmdExe_WP := "HMI KEY".P02.C400.F12_Enable_WP;

        #SSM.S.stepd := "DI OUT P02".C400.FB_WP;

       

    5: // C402 Box fixing unit HP

        "DI OUT P02".C402.VLV_OC.CmdExe_WP := FALSE;

        "DI OUT P02".C402.VLV_OC.CmdExe_HP := "HMI KEY".P02.C402.F11_Enable_HP;

        #SSM.S.stepd := "DI OUT P02".C402.FB_HP;

       

    6: // Query home position P02

        "M02 HomPosRun" := NOT "M02 HomPosIS" OR #SSM.S.steplo;

END_CASE;