```pascal // Block Type: FB // Block Number: 1825 // Original Network Languages: LAD FUNCTION_BLOCK "ProductPipeRunOut" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_STAT mStepNum : Int; mTimeStep : Int; mTransition : Bool; mAuxONS : Bool; mProdPipeRunOutTPON : Bool; mProdPipeRunOutTP0ON : Bool; mFillingHaltedTONON : Bool; mProdPipeRunOutTP : "TP_TIME:v1.0"; mProdPipeRunOutTP0 : "TP_TIME:v1.0"; mFillingHaltedTON : "TON_TIME:v1.0"; END_VAR VAR_TEMP mProdPushDone : Bool; mFillingPaused : Bool; mProdPipeRunOutHalted : Bool; mAuxCalc1 : Real; mAuxCalc2 : Real; END_VAR #_40S : Bool; // Auto-generated temporary #TON_INSTANCE_30 : Bool; // Auto-generated temporary BEGIN // Network 1: Qualifier (Original Language: LAD) "System_RunOut_Variables"."ProdPipe_RunOut"."Qualifier" := "gBlenderProdMode" AND "gBlenderSuppliesOk" AND "Procedure_Variables"."TM301_RunOut"."Done"; // Network 2: ProductTempRunOut (Original Language: LAD) // Network 2 did not produce printable SCL code. // Network 3: Reset (Original Language: LAD) // PBox SymPy processed, logic in consumer "ProdPipeRunOutReset" := "HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated"); // P_TRIG("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated")) - Mem: "ProdPipeRunOutReset" "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" := "gBlenderCIPMode" OR ("HMI_Variables_Cmd"."System_Run_Out"."CMD"."_ProdPipeRunOutReq" AND NOT "ProdPipeRunOutReset") OR ("Procedure_Variables"."TM301_RunOut"."Done" AND "System_RunOut_Variables"."FastChangeOverActivated" AND NOT "ProdPipeRunOutReset"); // Network 4: Wait (Original Language: LAD) "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" := "gBlenderStopLevel"; // Network 5: Reset (Original Language: LAD) IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN "mStepNum" := 0; "mTimeStep" := 0; END_IF; IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN "System_RunOut_Variables"."ProdPipe_RunOut"."Done" := FALSE; END_IF; IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN "gRinseClose_RMM301" := FALSE; END_IF; IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN "gRinseClose_RMP302" := FALSE; END_IF; IF "System_RunOut_Variables"."ProdPipe_RunOut"."Reset" THEN "System_RunOut_Variables"."FillerRanOut" := FALSE; END_IF; // Network 6: Latch (Original Language: LAD) "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" := ("System_RunOut_Variables"."ProdPipe_RunOut"."Reset" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Request" AND "FirstScan" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done") OR ("System_RunOut_Variables"."ProdPipe_RunOut"."Reset" AND "FirstScan" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"); // Network 7: Running (Original Language: LAD) "System_RunOut_Variables"."ProdPipe_RunOut"."Running" := "System_RunOut_Variables"."ProdPipe_RunOut"."Wait" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; // Network 8: Totalizer (Original Language: LAD) SEL_R(G := "System_RunOut_Variables"."RMM301_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTN301_Tot"); SEL_R(G := "System_RunOut_Variables"."RMP302_OV_ProdPipeRunOut" > 0.0, IN0 := 0.0, IN1 := "Profibus_Variables"."gFTP302_Tot"); "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer" := "mAuxCalc1" + "mAuxCalc2"; // Network 9: Push Count Init (Original Language: LAD) IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer"; END_IF; IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Done" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; END_IF; // Network 10: Push Count (Original Language: LAD) "mProdPushDone" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" > "System_RunOut_Variables"."ProdPipeRunOutProdAmount"; // Network 11: Push Count (Original Language: LAD) IF "System_RunOut_Variables"."ProdPipeRunOutWaterCount" THEN "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" := "System_RunOut_Variables"."Prod_Pipe_RunOut"."Totalizer" - "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init"; END_IF; // Network 12: Push Count (Original Language: LAD) IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN "mAuxCalc1" := "System_RunOut_Variables"."FillerBottleCount" * "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_BottleSize"; END_IF; IF "System_RunOut_Variables"."ProdPipeRunOutFillerBott" THEN "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count" := "mAuxCalc1" - "System_RunOut_Variables"."Prod_Pipe_RunOut"."Push_Count_Init"; END_IF; // Network 13: Push Count (Original Language: LAD) "mFillingPaused" := "Blender_Variables"."gEstimateFillerSpeed" <= 0.0; // Network 14: Filler Halted (Original Language: LAD) #TON_INSTANCE_30(IN := "mFillingPaused" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Running", PT := T#40S); // TODO: Declarar #TON_INSTANCE_30 : TON; "mProdPipeRunOutHalted" := ("System_RunOut_Variables"."ProdPipeRunOutWaterCount" AND "System_RunOut_Variables"."ProdPipeRunOutFillerBott") OR ("mFillingHaltedTONON" AND #TON_INSTANCE_30.Q); // Network 15: Product Tank Run Out Running (Original Language: LAD) "HMI_Variables_Status"."System_Run_Out"."ProductPipeRunOutRun" := "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; "HMI_Alarms"."gH_Status" := "System_RunOut_Variables"."ProdPipe_RunOut"."Latch"; IF "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" THEN ProductPipeRunOut_Seq(mProdPipeRunOutHalted := "mProdPipeRunOutHalted", mProdPushDone := "mProdPushDone", mStep := "mStepNum", mTime := "mTimeStep", mTransition := "mTransition"); END_IF; // Network 16: ToFillerStartPipeRunOut (Original Language: LAD) "HMI_Variables_Status"."System_Run_Out"."ProductPipeRunOutDone" := "System_RunOut_Variables"."ProdPipe_RunOut"."Done"; END_FUNCTION_BLOCK ```