FB30 MAIN P01 : P01 Main programme management |
|
|
|
Network 1: P01 Initialisation IF #M00.Init OR NOT "M00_OB1_FirstCycle" THEN #STEP_BITS := 0; IF #M00.Init THEN #M00.SEQ1_Start := #M00.Init := FALSE; #M00.HomPosRun := TRUE; "ModuleData".P01.CrntModule := 101; END_IF; END_IF; |
|
|
|
Network 2: P01 SET execute home position #SET.SSM.S.steps := #SET.SSM.S.stepa; IF NOT #M00.HomPosRun OR "HMI KEY".P00.GLB.F8_Stop OR "HMI KEY".P01.GLB.F8_Stop OR #M00.FLT_ModuleStpSR THEN #SET.SSM.S.stepa := #M00.HomPosRun := FALSE; ELSIF #M00.HomPosRun AND #SET.SSM.S.step0 THEN #SET.SSM.S.stepa := TRUE; END_IF; #SET(); |
|
|
|
Network 3: P01 SEQ1 start, stop, hold #SEQ1.SSM.S.steph := NOT ("DI MAIN GLB".M00.AutoCmpltMa_run OR "DI MAIN GLB".M00.ManuCmpltMa_run) AND #M00.SEQ1_Start; // not default!! #SEQ1.SSM.S.steps := #SEQ1.SSM.S.stepa; #SEQ1.SSM.S.stepa := NOT #M00.HomPosRun AND #M00.SEQ1_Start; IF "DI MAIN GLB".M00.CmpltMaOFF_Imp THEN #SEQ1.SSM.S.stepin := FALSE; END_IF; #SEQ1(); |
|
|
|
Network 4: P01 FLT faults monitoring #FLT(FLT_MODULE := #M00.FLT_ModuleIS); |
|
|
|
Network 5: P01 STEP.SEQ1_Start IF "DI MAIN GLB".M00.CmpltMaRun_Imp AND ("DI MAIN GLB".M00.AutoCmpltMa_run XOR "DI MAIN GLB".M00.ManuCmpltMa_run THEN // not default!! #STEP.SEQ1_Start := TRUE; RETURN; ELSIF #STEP.SEQ1_Start THEN IF NOT (#M00.HomPosRun OR #M00.SEQ1_Busy) THEN #M00.SEQ1_Start := TRUE; ELSIF #M00.SEQ1_Busy THEN #STEP_BITS := 0; #STEP.SEQ1_Running := TRUE; END_IF; END_IF; |
|
|
|
Network 6: P01 STEP.SEQ1_Running IF #STEP.SEQ1_Running THEN IF #M00.SEQ1_Done THEN #M00.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 #M00.SEQ1_Done := FALSE; #STEP_BITS := 0; #STEP.SEQ1_Write := TRUE; // Save actual data "ModuleData".P01.STS.RunTimeCounter_seq1 := #SEQ1.RunTimeCounter; "ModuleData".P01.STS.WPC_Ok := #M00.SEQ1_DoWP1 AND #M00.SEQ1_WP1_DnOK; "ModuleData".P01.STS.Current_WP_Ok := #M00.SEQ1_WP1_DnOK AND NOT #M00.SEQ1_WP1_DnNOK; "ModuleData".P01.TrgtModule := 102; // If necessary, changing drive direction to module 105 IF NOT "ModuleData".P01.STS.Current_WP_Ok THEN "ModuleData".P01.TrgtModule := 103; END_IF; "AdminPC".P01 := "ModuleData".P01; // BLKMOV END_IF; |
|
|
|
Network 8: P01 STEP.Write IF #STEP.SEQ1_Write THEN #M00.SEQ1_WP1_DnOK := FALSE; #M00.TCPIP_Wrt_start := TRUE; IF #M00.TCPIP_Wrt_done THEN "DI MAIN GLB".M00.AutoCmpltMa_run := #M00.TCPIP_Wrt_start := #M00.TCPIP_Wrt_done := FALSE; #STEP_BITS := 0; RETURN; END_IF; END_IF; |
|
|
|
Network 9: P01 Run-Time and Re-Start #M00.Enabled := "DI MAIN GLB".M00.AutoCmpltMa_run AND NOT #M00.FLT_ModuleStpSR; IF #STEP.SEQ1_Running THEN IF "M00_Imp_10Hz" AND #M00.Enabled THEN "ModuleData".P01.STS.RunTimeCounter_seq1 := #SEQ1.RunTimeCounter += 1; END_IF; ELSIF NOT #M00.Busy AND "DI MAIN GLB".M00.AutoCmpltMa_run THEN #STEP.SEQ1_Start := TRUE; END_IF; |
|
|
|
Network 10: P01 SEQ1 busy #M00.Busy := #STEP.SEQ1_Start AND #M00.SEQ1_Busy OR #STEP.SEQ1_Running OR #STEP.SEQ1_Done OR #STEP.SEQ1_Write; |
|
|
|
Network 11: P01 Assign SLC signals IF #M00.FLT_ModuleIS THEN #M00.FLT_ModuleStpSR := TRUE; END_IF; IF #M00.FLT_ModuleStpSR AND NOT #M00.FLT_ModuleStpACK THEN IF "DI MAIN GLB".M00.FLT_CmpltMaACK_Imp THEN #M00.FLT_ModuleStpACK := TRUE; END_IF; ELSIF NOT #M00.FLT_ModuleIS AND #M00.FLT_ModuleStpACK THEN #M00.FLT_ModuleStpSR := #M00.FLT_ModuleStpACK := FALSE; END_IF; #M00.SLC_Lamp_RD := #M00.FLT_ModuleStpSR AND NOT #M00.FLT_ModuleStpACK AND "M00_Clock_1Hz" OR #M00.FLT_ModuleStpSR AND #M00.FLT_ModuleStpACK; |
|
|
|
Network 12: P01 Set/Reset Products counter value #M00.ProductCounter.DlyOnReset(IN := #M00.ProductCounter.SetGoodParts, PT := #M00.ProductCounter.DlyOnReset.PT); IF #M00.ProductCounter.DlyOnReset.Q THEN "ModuleData".P01.STS.ProductCounter_GoodParts := #M00.ProductCounter.GoodParts := #M00.ProductCounter.SetCounter; END_IF; |
|