```pascal // 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 ```