FB39 OUT P01 : P01 output stage |
|
|
|
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"); |
|