FB39 OUT P01 : P01 output stage

[hit  <- on your browser to return]

 

 

 

Network 1: Pre-Setting

#Support.T01_Estp_TOF(IN := "M00 GLB Estop", PT := t#1s);

IF "DI MAIN P01".SET.SSM.S.stepfc OR "DI MAIN P01".SEQ1.SSM.S.stepfc THEN

    #S120_X.DRV.Support.Cmd_MovAbso :=

    #S120_X.DRV.Support.Cmd_MovRela :=

    #S120_Y.DRV.Support.Cmd_MovAbso :=

    #S120_Z.DRV.Support.Cmd_MovAbso :=

    #S120_Z.DRV.Support.Cmd_MovRela :=

    #MD_R.DRV.Support.Cmd_MovAbso :=

    #MD_S.DRV.Support.Cmd_MovAbso := FALSE;

END_IF;

 

 

 

Network 2: Call manual operation

#MANUAL(ST_MANU:="M00 ManuCmpltMa run",

        MODULE_HP:="HMI KEY".P01.GLB.F20_HomPos,

        SUPPORT_SEQ:="M01 HomPosRun");

 

 

 

Network 3: S120_X Vacuum gripper X-axis

// Execute reference point

#S120_X.DRV.MC_Home.Execute := #S120_X.DRV.Support.LampOFF AND "HMI KEY".P01.S120_X.F5_Set_Ref_Point AND ("DI MAIN GLB".SET.SSM.S.steps OR "M00 ManuCmpltMa run");

#S120_X.DRV.MC_Power.StartMode := #S120_X.DRV.MC_MoveAbsolute.Direction := 1;

#S120_X.DRV.MC_MoveJog.PosCntrl := TRUE;

// Halt impulse

#tmp_enable_axis := "HMI KEY".P01.S120_X.F11_Enable_HP AND "HMI KEY".P01.S120_X.F12_Enable_WP;

#Support.S120_X_FEg_Halt_Imp := #Support.S120_X_FEg_Halt AND NOT #tmp_enable_axis;

#Support.S120_X_FEg_Halt := #tmp_enable_axis;

// Execute output stage

#S120_X(ENABLE := #Support.T01_Estp_TOF.Q,

        HALT_01 := "HMI KEY".P01.S120_X.F21_HALT_Epos OR "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR #Support.S120_X_FEg_Halt_Imp,

        MCB := "E00 S120_X MCB",

        START_ABSO := #tmp_enable_axis AND (#S120_X.DRV.Support.Cmd_MovAbso AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_X.F17_GoToAbsoPos),

        START_RELA := #tmp_enable_axis AND (#S120_X.DRV.Support.Cmd_MovRela AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_X.F18_GoToRelaPos),

        JOG_WP := #S120_X.DRV.Support.Cmd_MovJogWP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_X.CmdExe_slow_fast_WP,

        JOG_HP := #S120_X.DRV.Support.Cmd_MovJogHP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_X.CmdExe_slow_fast_HP,

        ACK_FLT := "M00 FLT CmpltMaACK REg",

        HOM_MODE := 6, // Encoder type = absolute <Mode> = 0, 1, 6, 7

        AXIS := "+0-S120_X");

 

 

 

Network 4: S120_Y Vacuum gripper Y-axis

// Execute reference point

#S120_Y.DRV.MC_Home.Execute := #S120_Y.DRV.Support.LampOFF AND "HMI KEY".P01.S120_Y.F5_Set_Ref_Point AND ("DI MAIN GLB".SET.SSM.S.steps OR "M00 ManuCmpltMa run");

#S120_Y.DRV.MC_Power.StartMode := #S120_Y.DRV.MC_MoveAbsolute.Direction := 1;

#S120_Y.DRV.MC_MoveJog.PosCntrl := TRUE;

// Halt impulse

#tmp_enable_axis := "HMI KEY".P01.S120_Y.F11_Enable_HP AND "HMI KEY".P01.S120_Y.F12_Enable_WP;

#Support.S120_Y_FEg_Halt_Imp := #Support.S120_Y_FEg_Halt AND NOT #tmp_enable_axis;

#Support.S120_Y_FEg_Halt := #tmp_enable_axis;

// Execute output stage

#S120_Y(ENABLE := #Support.T01_Estp_TOF.Q,

        HALT_01 := "HMI KEY".P01.S120_Y.F21_HALT_Epos OR "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR #Support.S120_Y_FEg_Halt_Imp,

        MCB := "E00 S120_Y MCB",

        START_ABSO := #tmp_enable_axis AND (#S120_Y.DRV.Support.Cmd_MovAbso AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_Y.F17_GoToAbsoPos),

        START_RELA := #tmp_enable_axis AND (#S120_Y.DRV.Support.Cmd_MovRela AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_Y.F18_GoToRelaPos),

        JOG_WP := #S120_Y.DRV.Support.Cmd_MovJogWP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_Y.CmdExe_slow_fast_WP,

        JOG_HP := #S120_Y.DRV.Support.Cmd_MovJogHP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_Y.CmdExe_slow_fast_HP,

        ACK_FLT := "M00 FLT CmpltMaACK REg",

        HOM_MODE := 6, // Encoder type = absolute <Mode> = 0, 1, 6, 7

        AXIS := "+0-S120_Y");

 

 

 

Network 5: S120_Z Vacuum gripper Z-axis

// Execute reference point

#S120_Z.DRV.MC_Home.Execute := #S120_Z.DRV.Support.LampOFF AND "HMI KEY".P01.S120_Z.F5_Set_Ref_Point AND ("DI MAIN GLB".SET.SSM.S.steps OR "M00 ManuCmpltMa run");

#S120_Z.DRV.MC_Power.StartMode := #S120_Z.DRV.MC_MoveAbsolute.Direction := 1;

#S120_Z.DRV.MC_MoveJog.PosCntrl := TRUE;

// Halt impulse

#tmp_enable_axis := "HMI KEY".P01.S120_Z.F11_Enable_HP AND "HMI KEY".P01.S120_Z.F12_Enable_WP;

#Support.S120_Z_FEg_Halt_Imp := #Support.S120_Z_FEg_Halt AND NOT #tmp_enable_axis;

#Support.S120_Z_FEg_Halt := #tmp_enable_axis;

// Execute output stage

#S120_Z(ENABLE := #Support.T01_Estp_TOF.Q,

        HALT_01 := "HMI KEY".P01.S120_Z.F21_HALT_Epos OR "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR #Support.S120_Z_FEg_Halt_Imp,

        MCB := "E00 S120_Z MCB",

        START_ABSO := #tmp_enable_axis AND (#S120_Z.DRV.Support.Cmd_MovAbso AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_Z.F17_GoToAbsoPos),

        START_RELA := #tmp_enable_axis AND (#S120_Z.DRV.Support.Cmd_MovRela AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.S120_Z.F18_GoToRelaPos),

        JOG_WP := #S120_Z.DRV.Support.Cmd_MovJogWP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_Z.CmdExe_slow_fast_WP,

        JOG_HP := #S120_Z.DRV.Support.Cmd_MovJogHP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.S120_Z.CmdExe_slow_fast_HP,

        ACK_FLT := "M00 FLT CmpltMaACK REg",

        HOM_MODE := 6, // Encoder type = absolute <Mode> = 0, 1, 6, 7

        AXIS := "+0-S120_Z");

 

 

 

Network 6: MD_R Vacuum gripper R-axis

// Execute reference point

#MD_R.DRV.MC_Home.Execute := #MD_R.DRV.Support.LampOFF AND "HMI KEY".P01.MD_R.F5_Set_Ref_Point AND ("DI MAIN GLB".SET.SSM.S.steps OR "M00 ManuCmpltMa run");

#MD_R.DRV.MC_Power.StartMode := #MD_R.DRV.MC_MoveAbsolute.Direction := 1;

#MD_R.DRV.MC_MoveJog.PosCntrl := TRUE;

// Halt impulse

#tmp_enable_axis := "HMI KEY".P01.MD_R.F11_Enable_HP AND "HMI KEY".P01.MD_R.F12_Enable_WP;

#Support.MD_R_FEg_Halt_Imp := #Support.MD_R_FEg_Halt AND NOT #tmp_enable_axis;

#Support.MD_R_FEg_Halt := #tmp_enable_axis;

// Execute output stage

#MD_R(ENABLE := #Support.T01_Estp_TOF.Q,

      HALT_01 := "HMI KEY".P01.MD_R.F21_HALT_Epos OR "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR #Support.MD_R_FEg_Halt_Imp,

      MCB := "E00 MD_R MCB",

      START_ABSO := #tmp_enable_axis AND (#MD_R.DRV.Support.Cmd_MovAbso AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.MD_R.F17_GoToAbsoPos),

      START_RELA := #tmp_enable_axis AND (#MD_R.DRV.Support.Cmd_MovRela AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.MD_R.F18_GoToRelaPos),

      JOG_WP := #MD_R.DRV.Support.Cmd_MovJogWP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.MD_R.CmdExe_slow_fast_WP,

      JOG_HP := #MD_R.DRV.Support.Cmd_MovJogHP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.MD_R.CmdExe_slow_fast_HP,

      ACK_FLT := "M00 FLT CmpltMaACK REg",

      HOM_MODE := 0, // incremental encoder <Mode> = 0, 1, 2, 3, 5, 8, 10

      AXIS := "+0-MD_R");

 

 

 

Network 7: MD_S Vacuum gripper S-axis

// Execute reference point

#MD_S.DRV.MC_Home.Execute := #MD_S.DRV.Support.LampOFF AND "HMI KEY".P01.MD_S.F5_Set_Ref_Point AND ("DI MAIN GLB".SET.SSM.S.steps OR "M00 ManuCmpltMa run");

#MD_S.DRV.MC_Power.StartMode := #MD_S.DRV.MC_MoveAbsolute.Direction := 1;

#MD_S.DRV.MC_MoveJog.PosCntrl := TRUE;

// Halt impulse

#tmp_enable_axis := "HMI KEY".P01.MD_S.F11_Enable_HP AND "HMI KEY".P01.MD_S.F12_Enable_WP;

#Support.MD_S_FEg_Halt_Imp := #Support.MD_S_FEg_Halt AND NOT #tmp_enable_axis;

#Support.MD_S_FEg_Halt := #tmp_enable_axis;

// Execute output stage

#MD_S(ENABLE := #Support.T01_Estp_TOF.Q,

      HALT_01 := "HMI KEY".P01.MD_S.F21_HALT_Epos OR "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR #Support.MD_S_FEg_Halt_Imp,

      MCB := "E00 MD_S MCB",

      START_ABSO := #tmp_enable_axis AND (#MD_S.DRV.Support.Cmd_MovAbso AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.MD_S.F17_GoToAbsoPos),

      START_RELA := #tmp_enable_axis AND (#MD_S.DRV.Support.Cmd_MovRela AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR "HMI KEY".P01.MD_S.F18_GoToRelaPos),

      JOG_WP := #MD_S.DRV.Support.Cmd_MovJogWP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.MD_S.CmdExe_slow_fast_WP,

      JOG_HP := #MD_S.DRV.Support.Cmd_MovJogHP AND ("M00 AutoCmpltMa run" OR "M01 HomPosRun" OR "DI MAIN P01".SEQ1.SSM.S.stepin) OR #MANUAL.MD_S.CmdExe_slow_fast_HP,

      ACK_FLT := "M00 FLT CmpltMaACK REg",

      HOM_MODE := 0, // incremental encoder <Mode> = 0, 1, 2, 3, 5, 8, 10

      AXIS := "+0-MD_S");

 

 

 

Network 8: 30M1 WPC Pump securing plate conveyor

IF "M00 CmpltMaRun Imp" AND ("M00 AutoCmpltMa run" OR "M00 InchCmpltMa run") THEN

    #"30M1".DRV.CmdExe_WP := TRUE;

END_IF;

#"30M1"(CMD_ONOFF := FALSE,

        HALT_01:= "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR NOT "M00 GLB Estop",

        MCB := "E00 30M1 MCB",

        ACK_FLT := "M00 FLT CmpltMaACK Imp",

        IO_ADDRESS := 36);

 

 

 

Network 9: 30M2 WPC Pump case + securing plate conveyor

IF "M00 CmpltMaRun Imp" AND ("M00 AutoCmpltMa run" OR "M00 InchCmpltMa run") THEN

    #"30M2".DRV.CmdExe_WP := TRUE;

END_IF;

#"30M2"(CMD_ONOFF := FALSE,

        HALT_01 := "DI MAIN GLB".TOF_CmpltMaOFF_Pulse.Q OR NOT "M00 GLB Estop",

        MCB := "E00 30M2 MCB",

        ACK_FLT := "M00 FLT CmpltMaACK Imp",

        IO_ADDRESS := 38);

 

 

 

Network 10: Y200 Gripper vacuum valve

#Y200(CMD_HP := FALSE,

      CMD_WP := FALSE,

      FB_HP := "E01 Y200 HP",

      FB_WP := "E01 Y200 WP",

      RLS := "E02 S417 AirPrsOk",

      VALV_HP => "A01 Y200 HP",

      VALV_WP => "A01 Y200 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");

 

 

 

Network 11: Y204 WPC pre-stopper pump securing plate conveyor (30M1)

IF "E01 B251 Y204 AfterPos" THEN

    #Y204.VLV_O.CmdExe_WP := FALSE;

ELSIF "M00 CmpltMaRun Imp" OR #Y206.VLV_O.Vacant_FEg_Imp THEN

    #Y204.VLV_O.CmdExe_WP := TRUE;

END_IF;

#Y204(CMD_WP := FALSE,

      FB_HP := "E01 Y204 HP",

      FB_WP := "E01 Y204 WP",

      RLS := TRUE,

      VALV_WP => "A01 Y204 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");

 

 

 

Network 12: Y206 WPC stopper pump securing plate conveyor (30M1)

// create raising edge to close stopper when occupied

#Y206.VLV_O.Occupied_REg_Imp := "E01 B243 Y206 occupied" AND NOT #Y206.VLV_O.Occupied_REg;

#Y206.VLV_O.Occupied_REg := "E01 B243 Y206 occupied";

// create falling edge to open pre-stopper when stopper vacant

#Y206.VLV_O.Vacant_FEg_Imp := NOT "E01 B250 Y206 AfterPos" AND #Y206.VLV_O.Vacant_FEg;

#Y206.VLV_O.Vacant_FEg := "E01 B250 Y206 AfterPos";

// close stopper

IF "M00 CmpltMaRun Imp" OR "E01 B250 Y206 AfterPos" OR #Y206.VLV_O.Occupied_REg_Imp THEN

    #Y206.VLV_O.CmdExe_WP := FALSE;

END_IF;

#Y206(CMD_WP := FALSE,

      FB_HP := "E01 Y206 HP",

      FB_WP := "E01 Y206 WP",

      RLS := TRUE,

      VALV_WP => "A01 Y206 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");

 

 

 

Network 13: Y210 WPC pre-stopper pump case conveyor (30M2)

IF "E01 B253 Y210 AfterPos" THEN

    #Y210.VLV_O.CmdExe_WP := FALSE;

ELSIF "M00 CmpltMaRun Imp" OR #Y212.VLV_O.Vacant_FEg_Imp THEN

    #Y210.VLV_O.CmdExe_WP := TRUE;

END_IF;

#Y210(CMD_WP := FALSE,

      FB_HP := "E01 Y210 HP",

      FB_WP := "E01 Y210 WP",

      RLS := TRUE,

      VALV_WP => "A01 Y210 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");

 

 

 

Network 14: Y212 WPC stopper pump case conveyor (30M2)

// create raising edge to close stopper when occupied

#Y212.VLV_O.Occupied_REg_Imp := "E01 B245 Y212 occupied" AND NOT #Y212.VLV_O.RdyToTakeIn;

#Y212.VLV_O.RdyToTakeIn := "E01 B245 Y212 occupied";

// create falling edge to open pre-stopper when stopper vacant

#Y212.VLV_O.Vacant_FEg_Imp := NOT "E01 B252 Y212 AfterPos" AND #Y212.VLV_O.Occupied_REg;

#Y212.VLV_O.Occupied_REg := "E01 B252 Y212 AfterPos";

// close stopper

IF "M00 CmpltMaRun Imp" OR "E01 B252 Y212 AfterPos" OR #Y212.VLV_O.Occupied_REg_Imp THEN

    #Y212.VLV_O.CmdExe_WP := FALSE;

END_IF;

#Y212(CMD_WP := FALSE,

      FB_HP := "E01 Y212 HP",

      FB_WP := "E01 Y212 WP",

      RLS := TRUE,

      VALV_WP => "A01 Y212 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");

 

 

 

Network 15: C214 Pusher NOK slide

#C214(CMD_HP := FALSE,

      CMD_WP := FALSE,

      FB_HP := "E01 C214 HP",

      FB_WP := "E01 C214 WP",

      RLS := "E02 S417 AirPrsOk",

      VALV_HP => "A01 C214 HP",

      VALV_WP => "A01 C214 WP",

      ACK_FLT := "M00 FLT CmpltMaACK Imp");