7.6 KiB
7.6 KiB
// Block Type: FC
// Block Name (Original): Prod Tank PressCtrl
// Block Number: 2016
// Original Network Languages: LAD
FUNCTION "Prod_Tank_PressCtrl" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1
VAR_TEMP
mLatchONS : Bool;
PrdTankErrorABS : Real;
PrdTankPressIst_2 : Real;
CO2_Press : Real;
CO2_Press_ABS : Real;
mPress_Request : Bool;
mAuxPress_ONS : Bool;
SP : Real;
SP_Max : Real;
SP_Min : Real;
END_VAR
#_1M : Bool; // Auto-generated temporary
#_1S : Bool; // Auto-generated temporary
#_300MS : Bool; // Auto-generated temporary
#_6S : Bool; // Auto-generated temporary
BEGIN
// Network 1: Qualifier (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Qualifier" := ("System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."Balaiage"."Latch") OR ("gBlenderProdMode" AND "gIN_VoltageOk" AND "gCO2LowPress_Fault" AND "Procedure_Variables"."Balaiage"."Latch") OR ("gBlenderRinseMode" AND "gIN_VoltageOk" AND "gCO2LowPress_Fault" AND "Procedure_Variables"."Balaiage"."Latch");
// Network 2: Request (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Request" := ("Procedure_Variables"."TM301_Pressure"."Latch" AND "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") OR ("Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."FTP302Line_Preparation"."Latch");
// Network 3: Reset (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Reset" := "Procedure_Variables"."TM301_Pressure"."Qualifier";
// Network 4: Request (Original Language: LAD)
// Edge Logic handled by Coil 26
"Press_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") - Mem: "Press_Request"
"mPress_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq" AND NOT "Press_Request";
"Press_Request" := "HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq"; // P_TRIG("HMI_Variables_Cmd"."Commands_From_HMI"."CMD_TM301PressReq") - Mem: "Press_Request"
// Network 5: PRESSURE - Pressure control enable during first productio (Original Language: LAD)
"gFirstProdPressHold" := "Procedure_Variables"."TM301_Drain"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND "gFinalPressureOk" AND "gWaitLevToHold_TankPress";
// Network 6: Wait (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Wait" := "gFirstProdPressHold" OR "gIN_LinePressCO2Ok";
// Network 7: Latch (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Latch" := ("Procedure_Variables"."TM301_Pressure"."Request" AND "FirstScan" AND "Procedure_Variables"."TM301_Pressure"."Done" AND "Procedure_Variables"."TM301_Pressure"."Reset") OR ("mPress_Request" AND "FirstScan" AND "Procedure_Variables"."TM301_Pressure"."Done" AND "Procedure_Variables"."TM301_Pressure"."Reset");
// Network 8: Latch ONS (Original Language: LAD)
// Edge Logic handled by Coil 26
"M19026" := "Procedure_Variables"."TM301_Pressure"."Latch"; // P_TRIG("Procedure_Variables"."TM301_Pressure"."Latch") - Mem: "M19026"
"mLatchONS" := "Procedure_Variables"."TM301_Pressure"."Latch" AND NOT "M19026";
"M19026" := "Procedure_Variables"."TM301_Pressure"."Latch"; // P_TRIG("Procedure_Variables"."TM301_Pressure"."Latch") - Mem: "M19026"
// Network 9: Product Tank Pressure Running (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Running" := "Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."TM301_Pressure"."Wait";
"HMI_Variables_Status"."Procedures"."TM301PressRun" := "Procedure_Variables"."TM301_Pressure"."Latch";
// Network 10: PrdTankPressFault (Original Language: LAD)
"mRVM301_Fault"(IN := "Procedure_Variables"."TM301_Drain"."Latch" AND "gBlenderRinseMode" AND "Procedure_Variables"."TM301_Pressure"."Running" AND "gPTM304_OkToRun", PT := S5T#1M); // TODO: Declarar "mRVM301_Fault" : TON;
"gPrdTank_Press_Fault" := "mRVM301_Fault".Q;
// Network 11: Pressure Ok (Original Language: LAD)
// PrdTankPressError = Press_SP - Press_PV
// Network 11 did not produce printable SCL code.
// Network 12: Product Tank Pressure OK To Run (Original Language: LAD)
// Pressure OK To Blend
IF "gBlenderProdMode" AND "gBlenderRinseMode" THEN
"PrdTankPressIst_2" := "Blender_Constants"."gTM301PressIst" * 10.0;
END_IF;
IF "gBlenderProdMode" AND "gBlenderRinseMode" THEN
"PrdTankPressIst_2" := 0.8;
END_IF;
IF "gBlenderCIPMode" THEN
"PrdTankPressIst_2" := 3.5;
END_IF;
"gPTM304_OkToRun" := ("gEqPressSelected" AND "gEqPressOk") OR ("PrdTankErrorABS" < "PrdTankPressIst_2");
// Network 13: CO2MainValveDelay (Original Language: LAD)
"mCO2MainValveDelay"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "Procedure_Variables"."Blender_Run"."Running" AND "System_RunOut_Variables"."ProdPipe_RunOut"."Latch" AND "gCO2LowPress_Fault" AND ("Blender_Variables"."gPrdTankPressError" < 0.0), PT := S5T#6S); // TODO: Declarar "mCO2MainValveDelay" : TON;
"gCloseMainCO2Valve" := "mCO2MainValveDelay".Q;
// Network 14: Product Tank Pressure High Limit - PRESSURE - (Original Language: LAD)
"CO2_Press" := "HMI_Blender_Parameters"."Actual_Recipe_Parameters"."_ProdTankPress" - "HMI_PID"."RVM301"."Pv";
// Network 15: Selected (Original Language: LAD)
IF ("gEqPressOk" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND Eq("HMI_PID"."RVM301"."Sp", "Blender_Variables"."gCO2EqPressure")) OR ("gWaitLevToHold_TankPress" AND "Blender_Variables_Pers"."gCarboStillRecipe" AND Eq("HMI_PID"."RVM301"."Sp", "Blender_Variables"."gCO2EqPressure")) THEN
"gEqPressSelected" := TRUE;
END_IF;
// Network 16: EqPressOk (Original Language: LAD)
"mEqPressOk"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gPTM304_OkToRun", PT := S5T#1S); // TODO: Declarar "mEqPressOk" : TON;
// Network 17: FinalPressOk (Original Language: LAD)
"mFinalPressOk"(IN := "Procedure_Variables"."TM301_Pressure"."Latch" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND (("gBlenderBlending" AND ("gPTM304_HighLimit" OR "gWorkshopTest")) OR ("gBlenderStopLevel" AND ("gPTM304_HighLimit" OR "gWorkshopTest"))), PT := S5T#300MS); // TODO: Declarar "mFinalPressOk" : TON;
"gFinalPressureOk" := "mFinalPressOk".Q;
// Network 18: Not Selected (Original Language: LAD)
IF "gEqPressSelected" AND "gFinalPressureOk" AND "Procedure_Variables"."First_Production"."Latch" THEN
"gEqPressSelected" := FALSE;
END_IF;
// Network 19: Waiting tank pressure (Original Language: LAD)
"HMI_Alarms"."gH_Status" := ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gPTM304_OkToRun" AND "Procedure_Variables"."First_Production"."Done") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gEqPressOk" AND "Procedure_Variables"."First_Production"."Latch") OR ("gBlenderProdMode" AND "gBlenderRinseMode" AND "gEqPressSelected" AND "gPTM304_OkToRun" AND "Procedure_Variables"."First_Production"."Latch");
// Network 20: Pressure Not Ok (Original Language: LAD)
IF "gRinseDrainRunning" THEN
LIMIT_R(IN := "HMI_Blender_Parameters"."ProcessSetup"."_DrainTM301Press", MN := 0.0, MX := 1.0);
END_IF;
IF "gRinseDrainRunning" THEN
"SP_Min" := "SP" - 0.1;
END_IF;
IF "gRinseDrainRunning" THEN
"SP_Max" := "SP" + 0.2;
END_IF;
"gDrainPressNotOK" := ("SP_Max" >= "HMI_Instrument"."PTM304"."PVFiltered") OR ("HMI_Instrument"."PTM304"."PVFiltered" <= "SP_Min");
// Network 21: Done (Original Language: LAD)
"Procedure_Variables"."TM301_Pressure"."Done" := "gBlenderCIPMode" OR "Procedure_Variables"."Blender_Rinse"."Done";
END_FUNCTION