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

13 KiB

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

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

VAR_TEMP
  All_Auto_RETVAL : Int;
  Reset_SP_Word_RETVAL : Int;
  mResetWaterTot : Bool;
  mResetSyrupTot : Bool;
  mResetCO2Tot : Bool;
  mResetProductTot : Bool;
  Block_Move_Err : Int;
END_VAR

  #_1S : Bool; // Auto-generated temporary
  #_2S : Bool; // Auto-generated temporary
BEGIN

  // Network 1: Clock Generation (Original Language: LAD)

  Clock_Signal();

  // Network 2: Machine Init (Original Language: LAD)

  BlenderCtrl_MachineInit();

  // Network 3: Filler Head (Original Language: LAD)

  IF "AUX FALSE" THEN
    "Block_Move_Err" := BLKMOV(SRCBLK := "HMI_PID"."PPM303", DSTBLK => "Filler_Head_Variables"."FillerHead"); // ADVERTENCIA: BLKMOV usado directamente, probablemente no compile!
  END_IF;

  // Network 4: Emergency Pressed (Original Language: LAD)

  // Edge Logic handled by Coil 26
  "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") - Mem: "M19000"

  "gEmergencyPressed" := "M19000" AND NOT "gIN_VoltageOk";
  "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") - Mem: "M19000"

  // Network 5: Air and CO2 pressure ok and auxiliary ok (Original Language: LAD)

  "gBlenderSuppliesOk" := ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_VoltageOk" AND "gIN_LinePressCO2Ok" AND "Disable_Bit") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "gWorkshop_Co2_Presence" AND "gWorkshop_CIP_Signals" AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "gWorkshop_Co2_Presence" AND "gWorkshop_CIP_Signals" AND "Disable_Bit");

  // Network 6: Blender State Num (Original Language: LAD)

  "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 0;

  // Network 7: Delay Power On (Original Language: LAD)

  "mDelayPowerOnTmr"(IN := "FirstScan", PT := S5T#2S); // TODO: Declarar "mDelayPowerOnTmr" : TP;

  // Network 8: Production Mode (Original Language: LAD)

  "gBlenderProdMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP";

  // Network 9: CIp Mode (Original Language: LAD)

  "gBlenderCIPMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP";

  IF "HMI_Variables_Status"."System"."Blender_Prod_CIP" THEN
    "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 19;
  END_IF;

  // Network 10: Error Faults (Original Language: LAD)

  IF "AUX FALSE" THEN
    "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "gmPDS2000_Error_Fault" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "gNoFreezeProductMeter" := FALSE;
  END_IF;

  // Network 11: Filler Bottle Count Used to push Product (Original Language: LAD)

  "System_RunOut_Variables"."ProdPipeRunOutFillerBott" := "System_RunOut_Variables"."ProdPipeRunOutWaterCount";

  // Network 12: Water Bypass Enable (Original Language: LAD)

  "gStillWaterByPassEn" := ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillRecipe");

  // Network 13: Still Water Bypass (Original Language: LAD)

  "gBlendFiStillWaterByPass" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem";

  // Network 14: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD)

  "gHVP301_Open" := ("gSyrupRoomEn" AND "gIN_HVP301_Aux" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "Procedure_Variables"."Syr_RunOut"."Done") OR ("gSyrupRoomEn" AND "gIN_HVP301_Aux" AND "gBlenderCIPMode" AND "gIN_CIP_CIPRunning" AND "Procedure_Variables"."Blender_Run"."Running");

  // Network 15: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD)

  "mHVM302_Dly"(IN := "gIN_HVM302_Aux", PT := S5T#1S); // TODO: Declarar "mHVM302_Dly" : TON;

  "gHVM302_Open" := "mHVM302_Dly".Q;

  // Network 16: Maselli Control (Original Language: LAD)

  IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 6) THEN
    Maselli_PA_Control();
  END_IF;

  // Network 17: mPDS Control (Original Language: LAD)

  IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 5) THEN
    mPDS_PA_Control();
  END_IF;

  // Network 18: mPDS Syrup Control (Original Language: LAD)

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_SyrBrixMeter" THEN
    mPDS_SYR_PA_Control();
  END_IF;

  // Network 19: Co2 Analog Input (Original Language: LAD)
  //   GetProdBrixCO2_FromAnalogIn
  //         CALL  "GetProdBrixCO2_FromAn"
  //         NOP   0

  IF Eq("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType", 3) THEN
    GetProdBrixCO2_Anal_Inpt();
  END_IF;

  // Network 20: Quality (Original Language: LAD)

  ProductQuality();

  // Network 21: Input Data (Original Language: LAD)

  "Input_Data"();

  // Network 22: Sel Brix Source Check (Original Language: LAD)

  SelCheckBrixSource();

  // Network 23: Check Water Cooling System Temperature (Original Language: LAD)

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_InverterRecirPumpPPM306" THEN
    CTRLCoolingSystem();
  END_IF;

  // Network 24: Tank Level (Original Language: LAD)

  TankLevel();

  // Network 25: Production ONS (Original Language: LAD)

  // PBox SymPy processed, logic in consumer
  "M19001" := "gBlenderProdMode"; // P_TRIG("gBlenderProdMode") - Mem: "M19001"

  "gProductionONS" := "gBlenderProdMode" AND "mDelayPowerOnTmr" AND NOT "M19001";

  // Network 26: Blender Prod Mode Init (Original Language: LAD)

  IF ("gProductionONS" AND "Blender_Variables_Pers"."gBlenderStarted") OR ("Procedure_Variables"."Blender_Rinse"."ONS_Done" AND "Blender_Variables_Pers"."gBlenderStarted") THEN
    BlenderCtrl_ProdModeInit();
  END_IF;

  // Network 27: Rinse ONS (Original Language: LAD)

  // PBox SymPy processed, logic in consumer
  "M19002" := "HMI_Variables_Status"."System"."Blender_Prod_CIP"; // P_TRIG("HMI_Variables_Status"."System"."Blender_Prod_CIP") - Mem: "M19002"

  "gRinseONS" := "mDelayPowerOnTmr" AND "HMI_Variables_Status"."System"."Blender_Prod_CIP" AND NOT "M19002";

  // Network 28: CIP ONS (Original Language: LAD)

  // PBox SymPy processed, logic in consumer
  "M19003" := "gBlenderCIPMode"; // P_TRIG("gBlenderCIPMode") - Mem: "M19003"

  "gCIPONS" := "gBlenderCIPMode" AND "mDelayPowerOnTmr" AND NOT "M19003";

  // Network 29: CIp Mode Init (Original Language: LAD)

  IF "gCIPONS" THEN
    BlenderCtrl_CIPModeInit();
  END_IF;

  // Network 30: Reset SPWords (Original Language: LAD)

  BlenderCtrl_ResetSPWord();

  // Network 31: Blender Run Control (Original Language: LAD)

  BlenderRun__Control();

  // Network 32: Tank Pressure Control (Original Language: LAD)

  Prod_Tank_PressCtrl();

  // Network 33: Balaiage (Original Language: LAD)

  Baialage();

  // Network 34: First Production (Original Language: LAD)

  "FirstProduction_Data"();

  // Network 35: CIP MAIN Calling (Original Language: LAD)

  CIPMain();

  // Network 36: Blender Rinse (Original Language: LAD)

  BlenderRinse();

  // Network 37: Safeties (Original Language: LAD)

  Safeties();

  // Network 38: Instrument Scanner (Original Language: LAD)

  Instrument_Scanner();

  // Network 39: Vacuum Control (Original Language: LAD)

  VacuumCtrl();

  // Network 40: Syrup Room Control (Original Language: LAD)

  SyrupRoomCtrl();

  // Network 41: Blend Procedure Data (Original Language: LAD)

  IF "mDelayPowerOnTmr" THEN
    "Blender_Procedure Data"();
  END_IF;

  // Network 42: Pneumatic Valve Control (Original Language: LAD)

  Pneumatic_Valve_Ctrl();

  // Network 43: Pumps Control (Original Language: LAD)

  PumpsControl();

  // Network 44: Prod Report Manager (Original Language: LAD)

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Report" THEN
    ProdReportManager();
  END_IF;

  // Network 45: Outputs (Original Language: LAD)

  Output();

  // Network 46: SLIM BLOCK (Original Language: LAD)

  SLIM_Block();

  // Network 47: Interlocking Panel 1 (Original Language: LAD)

  Interlocking_Panel_1();

  // Network 48: Filler Control (Original Language: LAD)

  FillerControl();

  // Network 49: Blender Ctrl Update PWORD (Original Language: LAD)

  BlenderCtrl_UpdatePWord();

  // Network 50: ResetTotalizer (Original Language: LAD)

  "mResetTotalizerTmr"(IN := "gBlendResetTotalizer", PT := S5T#2S); // TODO: Declarar "mResetTotalizerTmr" : TP;

  // Network 51: ResetWaterTot (Original Language: LAD)

  "mResetFTN301TotTmr"(IN := "gFTN301_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTN301TotTmr" : TP;

  "mResetWaterTot" := "mResetFTN301TotTmr".Q;

  // Network 52: Water VFM Reset Totalizer (Original Language: LAD)

  IF "gFTN301_ResetTot" THEN
    "gFTN301_ResetTot" := FALSE;
  END_IF;

  // Network 53: ResetCO2Tot (Original Language: LAD)

  "mResetFTP302TotTmr"(IN := "mResetTotalizerTmr" OR "gFTP302_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTP302TotTmr" : TP;

  "mResetSyrupTot" := "gSyrupRoomEn" AND "mResetFTP302TotTmr".Q;

  // Network 54: Syrup MFM Reset Totalizer (Original Language: LAD)

  IF "gFTP302_ResetTot" THEN
    "gFTP302_ResetTot" := FALSE;
  END_IF;

  // Network 55: ResetProductTot (Original Language: LAD)

  "mResetFTM303TotTmr"(IN := "mResetTotalizerTmr" OR "gFTM303_ResetTot", PT := S5T#2S); // TODO: Declarar "mResetFTM303TotTmr" : TP;

  "mResetCO2Tot" := "mResetFTM303TotTmr".Q;

  // Network 56: CO2 MFM Reset Tot (Original Language: LAD)

  IF "gFTM303_ResetTot" THEN
    "gFTM303_ResetTot" := FALSE;
  END_IF;

  // Network 57: ResetCO2Tot (Original Language: LAD)

  "mResetProductTotTmr"(IN := "mResetTotalizerTmr" OR "gProductMFMResetTot", PT := S5T#2S); // TODO: Declarar "mResetProductTotTmr" : TP;

  "mResetProductTot" := "mResetProductTotTmr".Q;

  // Network 58: Reset Totalizer (Original Language: LAD)

  IF "gProductMFMResetTot" THEN
    "gProductMFMResetTot" := FALSE;
  END_IF;

  // Network 59: Reset Totalizer (Original Language: LAD)

  IF "gBlendResetTotalizer" THEN
    "gBlendResetTotalizer" := FALSE;
  END_IF;

  // Network 60: Blender Ctrl Command (Original Language: LAD)

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation" THEN
    BlenderCtrl_MFM_Command(mResetCO2Tot := "mResetCO2Tot", mResetProductTot := "mResetProductTot", mResetSyrupTot := "mResetSyrupTot", mResetWaterTot := "mResetWaterTot");
  END_IF;

  // Network 61: DP Global Diag (Original Language: LAD)

  CPU_DP_Global_Diag();

  // Network 62: Profibus (Original Language: LAD)

  Profibus_Network();

  // Network 63: Valve Fault (Original Language: LAD)

  ModValveFault();

  // Network 64: All Auto (Original Language: LAD)

  // NBox SymPy processed, logic in consumer
  "M19011" := "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable"; // N_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") - Mem: "M19011"

  IF ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command") OR ("M19011" AND NOT "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") THEN
    BlenderCtrl_All_Auto();
  END_IF;

  "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Light" := "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable";

  // Network 65: Ctrl HMI Manual Active (Original Language: LAD)

  BlenderCtrl_ManualActive();

  // Network 66: Mod Copy Recipe (Original Language: LAD)

  "mAux_FP_M700_1" := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "mFP_Recip_Main_Page";

  "mFP_Recip_Main_Page" := "HMI_Variables_Cmd"."Recipe"."Main_Page";

  IF "mAux_FP_M700_1" THEN
    "HMI_Variables_Cmd"."Recipe"."Edit" := TRUE;
  END_IF;

  // Network 67: to HMI - Recipe Management (Original Language: LAD)

  IF "AUX TRUE" THEN
    "RecipeManagement_Data"(Active_Recipe_Req := "HMI_Variables_Cmd"."Recipe"."Active_Request", Active_Recipe_Running := "HMI_Variables_Cmd"."Recipe"."Active_Recipe_Running", Active_Recipe_Start := "HMI_Variables_Cmd"."Recipe"."Active_Recipe_Start", Copy := "HMI_Variables_Cmd"."Recipe"."Copy", Copy_to := "HMI_Variables_Cmd"."Recipe"."Copy_Request", Delete := "HMI_Variables_Cmd"."Recipe"."Delete", Download := "HMI_Variables_Cmd"."Recipe"."Download", Edit := "HMI_Variables_Cmd"."Recipe"."Edit", HMI_Recipe_Main_Page := "HMI_Variables_Cmd"."Recipe"."Main_Page", HMI_Recipe_Page_Running := "HMI_Variables_Cmd"."Recipe"."Page_Running", Max_Recipe_Number := 50, Read := "HMI_Variables_Cmd"."Recipe"."Read", Upload := "HMI_Variables_Cmd"."Recipe"."Upload", UploadPC := "HMI_Variables_Cmd"."Recipe"."UploadPC", Work_Recipe := "HMI_Variables_Cmd"."Recipe"."Edit_Request", Write := "HMI_Variables_Cmd"."Recipe"."Write");
  END_IF;

  // Network 68: Recipe Calculation (Original Language: LAD)

  RecipeCalculation();

END_FUNCTION