366 lines
12 KiB
Plaintext
366 lines
12 KiB
Plaintext
// Block Name (Original): BlenderCtrl__Main
|
|
// Block Number: 2000
|
|
// Original Language: LAD
|
|
|
|
FUNCTION_BLOCK "BlenderCtrl__Main"
|
|
{ S7_Optimized_Access := 'TRUE' }
|
|
VERSION : 0.1
|
|
|
|
VAR_RETURN
|
|
Ret_Val : Void;
|
|
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)
|
|
|
|
"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 NOT "Disable_Bit") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND "HMI_Digital"."_PAL_S11"."Filtered" AND NOT "gWorkshop_Co2_Presence" AND NOT "gWorkshop_CIP_Signals") OR ("gIN_VoltageOk" AND "gWorkshopTest" AND NOT "gWorkshop_Co2_Presence" AND NOT "gWorkshop_CIP_Signals" AND NOT "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" := 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" AND "Blender_Variables_Pers"."gWaterRecipe" AND NOT "Blender_Variables_Pers"."gCarboStillRecipe") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_ByPassDeair" AND "Blender_Variables_Pers"."gWaterRecipe" AND NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_Deaireation" AND NOT "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 "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_BlendFillSystem" AND NOT "Blender_Variables_Pers"."gCarboStillRecipe";
|
|
|
|
// Network 14: Manual Syrup Drain Valve Open - Operator Alarm (Original Language: LAD)
|
|
|
|
"gHVP301_Open" := ("gSyrupRoomEn" AND "gBlenderCIPMode" AND "gIN_CIP_CIPRunning" AND "Procedure_Variables"."Blender_Run"."Running" AND NOT "gIN_HVP301_Aux") OR ("gSyrupRoomEn" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND NOT "gIN_HVP301_Aux" AND NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND NOT "Procedure_Variables"."Syr_RunOut"."Done");
|
|
|
|
// 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)
|
|
|
|
"gProductionONS" := "gBlenderProdMode" AND NOT "mDelayPowerOnTmr" AND NOT "M19001";
|
|
|
|
// Network 26: Blender Prod Mode Init (Original Language: LAD)
|
|
|
|
IF ("gProductionONS" AND NOT "Blender_Variables_Pers"."gBlenderStarted") 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)
|
|
|
|
"gRinseONS" := "HMI_Variables_Status"."System"."Blender_Prod_CIP" AND NOT "mDelayPowerOnTmr" AND NOT "M19002";
|
|
|
|
// Network 28: CIP ONS (Original Language: LAD)
|
|
|
|
"gCIPONS" := "gBlenderCIPMode" AND NOT "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 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;
|
|
|
|
// 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 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)
|
|
|
|
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 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;
|
|
IF "T_Pulse_Recipe_Edit" AND "T_Pulse_Recipe_Edit".Q 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
|