FB30 MAIN P01 : Call main program P01 |
|
|
|
Network 1: P01 Initialisation IF "M01 Init" OR NOT "M00 OB1 FirstCycle" THEN #STEP_BITS := 0; IF "M01 Init" THEN "M01 MD30" := "M01 MD34" := 0; "M01 HomPosRun" := TRUE; "DatOfMod".P01.CrntModule := 101; END_IF; END_IF; |
|
|
|
Network 2: P01 SET execute home position IF "M01 HomPosRun" AND #SET.S.step0 THEN #SET.S.steps := TRUE; ELSIF NOT "M01 HomPosRun" OR "HMI KEY".SYS.GLB.F8_Stop OR "HMI KEY".P01.GLB.F8_Stop THEN #SET.S.steps := "M01 HomPosRun" := FALSE; END_IF; #SET.S.steph := "M01 FLT ModuleStpSR"; #SET(); |
|
|
|
Network 3: P01 SEQ1 start, stop, hold #SEQ1.S.steph := NOT "M00 AutoCmpltMa run" AND "M01 SEQ1 Start"; #SEQ1.S.steps := NOT "M01 HomPosRun" AND "M01 SEQ1 Start";
IF "M00 CmpltMaOFF Imp" THEN #SEQ1.S.stepin := FALSE; END_IF; #SEQ1(); |
|
|
|
Network 4: P01 FLT faults monitoring #FLT(FLT_MODULE := "M01 FLT ModuleIS"); |
|
|
|
Network 5: P01 STEP.SEQ1_Start IF "M00 CmpltMaRun Imp" AND ("M00 AutoCmpltMa run" XOR "M00 InchCmpltMa run") THEN #STEP.SEQ1_Start := TRUE; RETURN; ELSIF #STEP.SEQ1_Start THEN IF NOT ("M01 HomPosRun" OR "M01 SEQ1 Active") THEN "M01 SEQ1 Start" := TRUE; ELSIF "M01 SEQ1 Active" THEN #MoDa.RunTimeCntr_seq1 := 0; #STEP_BITS := 0; #STEP.SEQ1_Running := TRUE; END_IF; END_IF; |
|
|
|
Network 6: P01 STEP.SEQ1_Running IF #STEP.SEQ1_Running THEN IF "M01 SEQ1 Done" THEN "M01 SEQ1 Start" := FALSE; #STEP_BITS := 0; #STEP.SEQ1_Done := TRUE; RETURN; END_IF; END_IF; |
|
|
|
Network 7: P01 STEP.Done IF #STEP.SEQ1_Done THEN "M01 SEQ1 Done" := FALSE; #STEP_BITS := 0; #STEP.SEQ1_Write := TRUE; // Save actual data "DatOfMod".P01.STS.RunTimeCntr_seq1 := #MoDA.RunTimeCntr_seq1; "DatOfMod".P01.STS.WPC_Ok := "M01 SEQ1 DoWP1" AND "M01 SEQ1 WP1 DnOK"; "DatOfMod".P01.STS.Current_WP_Ok := "M01 SEQ1 WP1 DnOK" AND NOT "M01 SEQ1 WP1 DnNOK"; "DatOfMod".P01.TrgtModule := 102; // If necessary, changing drive direction to module 103 IF NOT "DatOfMod".P01.STS.Current_WP_Ok THEN "DatOfMod".P01.TrgtModule := 103; END_IF; "DatOfPLC".P01 := "DatOfMod".P01; // BLKMOV END_IF; |
|
|
|
Network 8: P01 STEP. Write IF #STEP.SEQ1_Write THEN "M01 SEQ1 WP1 DnOK" := FALSE; "M01 TCP/IP Wrt start" := TRUE; IF "M01 TCP/IP Wrt done" THEN "M01 TCP/IP Wrt start" := "M01 TCP/IP Wrt done" := FALSE; #STEP_BITS := 0; RETURN; END_IF; END_IF; |
|
|
|
Network 9: P01 Run-Time "M01 Enabled" := "M00 AutoCmpltMa run" AND NOT "M01 FLT ModuleStpSR"; IF #STEP.SEQ1_Running THEN IF "M00 Imp 10Hz" AND "M01 Enabled" THEN #MoDa.RunTimeCntr_seq1 := #MoDa.RunTimeCntr_seq1 + 1; END_IF; ELSE IF NOT "M01 Active" AND "M00 AutoCmpltMa run" THEN #STEP.SEQ1_Start := TRUE; END_IF; END_IF; |
|
|
|
Network 10: P01 SEQ1 active "M01 Active" := #STEP.SEQ1_Start AND "M01 SEQ1 Active" OR #STEP.SEQ1_Running OR #STEP.SEQ1_Done OR #STEP.SEQ1_Write; |
|
|
|
Network 11: P01 Assign signal IF "M01 FLT ModuleIS" THEN "M01 FLT ModuleStpSR" := true; END_IF; IF "M01 FLT ModuleStpSR" AND NOT "M01 FLT ModuleStpACK" THEN IF "M00 FLT CmpltMaACK Imp" THEN "M01 FLT ModuleStpACK" := true; END_IF; ELSIF NOT "M01 FLT ModuleIS" AND "M01 FLT ModuleStpACK" THEN "M01 FLT ModuleStpSR" := "M01 FLT ModuleStpACK" := FALSE; END_IF; |
|
|
|
Network 12: P01 Assign Products counter IF "DatOfMod".P01.STS.ProductCounter.Flag12 AND "DatOfMod".P01.STS.ProductCounter.Flag22 THEN "DatOfMod".P01.STS.ProductCounter.GoodParts := "DatOfMod".P01.STS.ProductCounter.GoodParts + 1; "DatOfMod".P01.STS.ProductCounter.Flag12 := "DatOfMod".P01.STS.ProductCounter.Flag22 := FALSE; ELSIF "M01 SEQ1 Active" AND #SEQ1.SSM.S.stepact = 28 THEN "DatOfMod".P01.STS.ProductCounter.Flag12 := TRUE; ELSIF "DatOfMod".P01.STS.ProductCounter.Flag12 AND #SEQ1.SSM.S.stepact = 29 THEN "DatOfMod".P01.STS.ProductCounter.Flag22 := TRUE; END_IF; // Good set / reset parts counter "DatOfMod".P01.STS.ProductCounter.DlyOnReset(IN := "DatOfMod".P01.STS.ProductCounter.ResetGoodParts, PT := "DatOfMod".P01.STS.ProductCounter.DlyOnReset.PT); IF "DatOfMod".P01.STS.ProductCounter.DlyOnReset.Q THEN "DatOfMod".P01.STS.ProductCounter.GoodParts := "DatOfMod".P01.STS.ProductCounter.SetCounter; END_IF; |
|