// Block Name (Original): BlenderCtrl__Main // Block Number: 2000 // Original Language: LAD FUNCTION_BLOCK "BlenderCtrl__Main" { S7_Optimized_Access := 'TRUE' } VERSION : 0.1 VAR_INPUT END_VAR VAR_OUTPUT END_VAR VAR_IN_OUT END_VAR 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 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) // Logic moved to Coil 26 "gEmergencyPressed" := NOT "gIN_VoltageOk" AND "M19000"; "M19000" := "gIN_VoltageOk"; // N_TRIG("gIN_VoltageOk") // Network 5: Air and CO2 pressure ok and auxiliary ok (Original Language: LAD) "gBlenderSuppliesOk" := (("gIN_LinePressCO2Ok" OR ("gWorkshopTest" AND (NOT "gWorkshop_Co2_Presence")) AND (NOT "gWorkshop_CIP_Signals")) AND "HMI_Digital"."_PAL_S11"."Filtered") OR ("gIN_LinePressCO2Ok" OR ("gWorkshopTest" AND (NOT "gWorkshop_Co2_Presence")) AND (NOT "gWorkshop_CIP_Signals")) AND (NOT "Disable_Bit") AND "gIN_VoltageOk"; // 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; en VAR_STAT o VAR // Network 8: Production Mode (Original Language: LAD) "gBlenderProdMode" := "HMI_Variables_Status"."System"."Blender_Prod_CIP"; // Network 9: CIp Mode (Original Language: LAD) "gBlenderCIPMode" := (NOT "HMI_Variables_Status"."System"."Blender_Prod_CIP"); IF (NOT "HMI_Variables_Status"."System"."Blender_Prod_CIP") THEN "HMI_Variables_Status"."Procedures"."BlenderStateNum" := 19; END_IF; // Network 10: Error Faults (Original Language: LAD) IF (NOT "AUX FALSE") THEN "HMI_Variables_Status"."Meters"."QTM3012_PRD_Fault" := FALSE; END_IF; IF (NOT "AUX FALSE") THEN "gmPDS2000_Error_Fault" := FALSE; END_IF; IF (NOT "AUX FALSE") THEN "HMI_Variables_Status"."Meters"."QTM3012_PRD_Run" := FALSE; END_IF; IF (NOT "AUX FALSE") THEN "gNoFreezeProductMeter" := FALSE; END_IF; // Network 11: Filler Bottle Count Used to push Product (Original Language: LAD) "System_RunOut_Variables"."ProdPipeRunOutFillerBott" := (NOT "System_RunOut_Variables"."ProdPipeRunOutWaterCount"); // Network 12: Water Bypass Enable (Original Language: LAD) "gStillWaterByPassEn" := (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND (NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation"))) AND "Blender_Variables_Pers"."gWaterRecipe") AND (NOT "Blender_Variables_Pers"."gCarboStillRecipe"); // Network 13: Still Water Bypass (Original Language: LAD) "gBlendFiStillWaterByPass" := (("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_StillWaterByPass") AND "Blender_Variables_Pers"."gWaterRecipe") AND (NOT "Blender_Variables_Pers"."gCarboStillRecipe"); // Network 14: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD) "gHVP301_Open" := (("gSyrupRoomEn" AND (NOT "gIN_HVP301_Aux")) AND (NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled") AND "Procedure_Variables"."FTP302Line_Preparation"."Done") AND (NOT "Procedure_Variables"."Syr_RunOut"."Done") OR (((("gSyrupRoomEn" AND (NOT "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; en VAR_STAT o VAR "gHVM302_Open" := "mHVM302_Dly".Q; // Network 16: Maselli Control (Original Language: LAD) IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_MeterType" = 6 THEN Maselli_PA_Control(); END_IF; // Network 17: mPDS Control (Original Language: LAD) IF "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 "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 Logic moved to consumer Coil "gProductionONS" := ("gBlenderProdMode" AND NOT "M19001") AND (NOT "mDelayPowerOnTmr"); // Network 26: Blender Prod Mode Init (Original Language: LAD) IF ("gProductionONS" OR "Procedure_Variables"."Blender_Rinse"."ONS_Done") AND (NOT "Blender_Variables_Pers"."gBlenderStarted") THEN BlenderCtrl_ProdModeInit(); END_IF; // Network 27: Rinse ONS (Original Language: LAD) // PBox Logic moved to consumer Coil "gRinseONS" := ("HMI_Variables_Status"."System"."Blender_Prod_CIP" AND NOT "M19002") AND (NOT "mDelayPowerOnTmr"); // Network 28: CIP ONS (Original Language: LAD) // PBox Logic moved to consumer Coil "gCIPONS" := ("gBlenderCIPMode" AND NOT "M19003") AND (NOT "mDelayPowerOnTmr"); // 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 (NOT "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; en VAR_STAT o VAR // Network 51: ResetWaterTot (Original Language: LAD) "mResetFTN301TotTmr"(IN := "gFTN301_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTN301TotTmr" : TP; en VAR_STAT o VAR "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 := "gFTP302_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTP302TotTmr" : TP; en VAR_STAT o VAR "mResetSyrupTot" := "mResetFTP302TotTmr".Q AND "gSyrupRoomEn"; // 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 := "gFTM303_ResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetFTM303TotTmr" : TP; en VAR_STAT o VAR "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 := "gProductMFMResetTot" OR "mResetTotalizerTmr", PT := S5T#2S); // TODO: Declarar "mResetProductTotTmr" : TP; en VAR_STAT o VAR "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 (NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Simulation") THEN BlenderCtrl_MFM_Command(); 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 Logic moved to consumer Coil IF NOT ("HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Command" AND "HMI_Variables_Cmd"."Commands_From_HMI"."F7_DeviceControl"."Enable") AND "M19011" 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 (NOT "mFP_Recip_Main_Page"); "mFP_Recip_Main_Page" := "HMI_Variables_Cmd"."Recipe"."Main_Page"; "T_Pulse_Recipe_Edit"(IN := "HMI_Variables_Cmd"."Recipe"."Main_Page" AND "HMI_Variables_Cmd"."Recipe"."Edit", PT := S5T#500ms); // TODO: Declarar "T_Pulse_Recipe_Edit" : TP; en VAR_STAT o VAR IF "T_Pulse_Recipe_Edit".Q AND "T_Pulse_Recipe_Edit" THEN "HMI_Variables_Cmd"."Recipe"."Edit" := FALSE; END_IF; 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"(); END_IF; // Network 68: Recipe Calculation (Original Language: LAD) RecipeCalculation(); END_FUNCTION_BLOCK