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

3.3 KiB

// Block Type: FC
// Block Number: 2040
// Original Network Languages: LAD

FUNCTION "BlenderRun_ProdTime" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1

VAR_TEMP
  m1MinONS : Bool;
  m1HourONS : Bool;
  Buffer : Bool;
  mRunMin : Bool;
  mRunHr : Bool;
  I_DIRunning_sec : DInt;
  I_DIRunning_min : DInt;
  MOD60 : DInt;
END_VAR

  #_60 : Bool; // Auto-generated temporary
BEGIN

  // Network 1: Seconds (Original Language: LAD)

  IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" THEN
    "Blender_Variables_Pers"."gSLIM_Sec" := "Blender_Variables_Pers"."gSLIM_Sec" + 1;
  END_IF;

  // Network 2: Reset Hours (Original Language: LAD)

  IF "SLIM_Variables"."ResetHour" THEN
    "Blender_Variables_Pers"."gSLIM_Sec" := 0;
  END_IF;

  // Network 3: Seconds Counter (Original Language: LAD)

  IF "CLK_1.0S" AND "gBlenderBlending" THEN
    "Blender_Variables_Pers"."gProdSec" := "Blender_Variables_Pers"."gProdSec" + 1;
  END_IF;

  // Network 4: Minute (Original Language: LAD)

  "m1MinONS" := Eq("Blender_Variables_Pers"."gProdSec", 60);

  // Network 5: Minute Counter (Original Language: LAD)

  IF "m1MinONS" THEN
    "Blender_Variables_Pers"."gProdSec" := 0;
    "Blender_Variables_Pers"."gProdMin" := "Blender_Variables_Pers"."gProdMin" + 1;
  END_IF;

  // Network 6: Hour (Original Language: LAD)

  "m1HourONS" := Eq("Blender_Variables_Pers"."gProdMin", 60);

  // Network 7: Hour Counter (Original Language: LAD)

  IF "m1HourONS" THEN
    "Blender_Variables_Pers"."gProdMin" := 0;
    "Blender_Variables_Pers"."gProdHour" := "Blender_Variables_Pers"."gProdHour" + 1;
    "Blender_Variables_Pers"."gBlendingMaintHour" := "Blender_Variables_Pers"."gBlendingMaintHour" + 1;
  END_IF;

  // Network 8: Counter reset (Original Language: LAD)

  IF "gBlenderCIPMode" OR "gBlenderRinseMode" THEN
    "Blender_Variables_Pers"."gProdSec" := 0;
    "Blender_Variables_Pers"."gProdMin" := 0;
    "Blender_Variables_Pers"."gProdHour" := 0;
  END_IF;

  // Network 9: Running Seconds (Original Language: LAD)

  IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" THEN
    "Blender_Variables_Pers"."gRunningSeconds" := "Blender_Variables_Pers"."gRunningSeconds" + 1;
  END_IF;

  // Network 10: Running Minutes (Original Language: LAD)

  "I_DIRunning_sec" := "Blender_Variables_Pers"."gRunningSeconds";

  "MOD60" := "I_DIRunning_sec" MOD DINT#60;

  IF "Procedure_Variables"."Blender_Run"."Running" AND "CLK_1.0S" AND Eq("MOD60", DINT) THEN
    "Blender_Variables_Pers"."gRunningMinutes" := "Blender_Variables_Pers"."gRunningMinutes" + 1;
  END_IF;

  // Edge Logic handled by Coil 42
  "M19012" := Eq("MOD60", DINT); // P_TRIG(Eq("MOD60", DINT)) - Mem: "M19012"

  "mRunMin" := NOT "M19012" AND Eq("MOD60", DINT);
  "M19012" := Eq("MOD60", DINT); // P_TRIG(Eq("MOD60", DINT)) - Mem: "M19012"

  // Network 11: Running Hours for Maintenance (Original Language: LAD)

  IF "mRunMin" THEN
    "I_DIRunning_min" := "Blender_Variables_Pers"."gRunningMinutes";
  END_IF;

  IF "mRunMin" THEN
    "MOD60" := "I_DIRunning_min" MOD DINT#60;
  END_IF;

  IF Eq("MOD60", DINT) THEN
    "Blender_Variables_Pers"."gRunningMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour" + 1;
  END_IF;

  // Network 12: Running Hours for Maintenance (Original Language: LAD)

  "HMI_Variables_Status"."System"."BlendingMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour";

END_FUNCTION