Obsidean_VM/04-SIDEL/06 - E5.007363 - Modifica O.../Source/source/ProductPipeRunOut.md

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