6.8 KiB
6.8 KiB
// 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 : STRUCT
PT : Time;
ET : Time;
IN : Bool;
Q : Bool;
END_STRUCT;
mProdPipeRunOutTP0 : STRUCT
PT : Time;
ET : Time;
IN : Bool;
Q : Bool;
END_STRUCT;
mFillingHaltedTON : STRUCT
PT : Time;
ET : Time;
IN : Bool;
Q : Bool;
END_STRUCT;
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