Obsidean_VM/04-SIDEL/00 - MASTER/Source/source/Prod_Tank_PressCtrl.md

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