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

11 KiB

// Block Type: FC
// Block Number: 2015
// Original Network Languages: STL, LAD

FUNCTION "BlenderRun__Control" : Void
{ S7_Optimized_Access := 'TRUE' }
VERSION : 0.1

VAR_TEMP
  Buffer : Bool;
  mInitBlendError : Bool;
  gRunningMaintHour : DInt;
  MOD_DI_OUT_Seg31 : DInt;
  gCheckOilModValves : DInt;
  gCheckOilWaterPumpMotor : DInt;
  MOD_DI_OUT_Seg33 : DInt;
  mRealEnRecPHE01 : Real;
  mRealEnRecPHE02 : Real;
  __PlcmigTempFillBits_30B0 : Array[0..7] of Bool;
END_VAR

  #_2S : Bool; // Auto-generated temporary
  #_2m : Bool; // Auto-generated temporary
  #_3S : Bool; // Auto-generated temporary
  #_4M : Bool; // Auto-generated temporary
  #_5M : Bool; // Auto-generated temporary
  #_5m : Bool; // Auto-generated temporary
BEGIN

  // Network 1: Buffer (Original Language: LAD)

  BlenderRun_SelectConstan();

  BlenderRun_ProdTime();

  "Buffer" := TRUE;

  // Network 2: Qualifier (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Qualifier" := ("gBlenderProdMode" AND "gProductionONS" AND "gHighPriorityAlarm" AND "Procedure_Variables"."Blender_Rinse"."ONS_Done") OR ("gBlenderProdMode" AND "gProductionONS" AND "gHighPriorityAlarm" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gBlenderCIPMode" AND "gCIPONS" AND "gHighPriorityAlarm" AND "Procedure_Variables"."Blender_Rinse"."ONS_Done") OR ("gBlenderCIPMode" AND "gCIPONS" AND "gHighPriorityAlarm" AND "System_RunOut_Variables"."FastChangeOverActivated");

  // Network 3: Blender Run Stopping (Original Language: LAD)

  BlenderRun_Stopping();

  // Network 4: Reset (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Reset" := ("gBlenderProdMode" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "System_RunOut_Variables"."System_RunOut"."Reset" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."TM301_RunOut"."Done" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated") OR ("gBlenderProdMode" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "System_RunOut_Variables"."System_RunOut"."Reset" AND "gBlenderRinseMode" AND "Procedure_Variables"."TM301_RunOut"."Latch") OR ("gBlenderProdMode" AND "HMI_Variables_Status"."System_Run_Out"."SystemRunOutEnabled" AND "gBlenderRinseMode" AND "System_RunOut_Variables"."FastChangeOverActivated" AND "Procedure_Variables"."TM301_RunOut"."Latch");

  // Network 5: Request (Original Language: LAD)

  // PBox SymPy processed, logic in consumer
  "M19007" := "gIN_StartBtn" AND "mEnableStartTmr"; // P_TRIG("gIN_StartBtn" AND "mEnableStartTmr") - Mem: "M19007"

  "Procedure_Variables"."Blender_Run"."Request" := "gIN_StartBtn" AND "mEnableStartTmr" AND "Procedure_Variables"."Blender_Run"."Qualifier" AND NOT "M19007";

  // Network 6: Running (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Latch" := ("Procedure_Variables"."Blender_Run"."Qualifier" AND "Procedure_Variables"."Blender_Run"."Request" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done") OR ("Procedure_Variables"."Blender_Run"."Qualifier" AND "DI_PB_Machine_Start" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done");

  "HMI_Variables_Status"."System"."Blender_Running" := ("Procedure_Variables"."Blender_Run"."Qualifier" AND "Procedure_Variables"."Blender_Run"."Request" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done") OR ("Procedure_Variables"."Blender_Run"."Qualifier" AND "DI_PB_Machine_Start" AND "FirstScan" AND "Procedure_Variables"."Blender_Run"."Reset" AND "Procedure_Variables"."Blender_Run"."Done");

  // Network 7: EnableStart (Original Language: LAD)

  // Network 7 did not produce printable SCL code.

  // Network 8: Blender Stopping (Original Language: LAD)

  // Network 8 did not produce printable SCL code.

  // Network 9: Wait (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Wait" := ("gBlenderProdMode" AND "Blender_Variables_Pers"."gWaterRecipe" AND "Procedure_Variables"."FTP302Line_Preparation"."Done" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Latch" AND "gPTM304_OkToRun" AND "gEqPressSelected" AND "gBlenderRinseMode") OR ("gBlenderProdMode" AND "Procedure_Variables"."First_Production"."Latch" AND "gEqPressOk" AND "gEqPressSelected" AND "gBlenderRinseMode");

  // Network 10: Running (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Running" := "Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Run"."Wait";

  // Network 11: Pumps Start (Original Language: LAD)

  "gBlenderStartPumps" := "Procedure_Variables"."Blender_Run"."Running";

  // Network 12: Pumps Start ONS (Original Language: LAD)

  // Edge Logic handled by Coil 26
  "M19010" := "gBlenderStartPumps"; // P_TRIG("gBlenderStartPumps") - Mem: "M19010"

  "gBlenderStartPumpsONS" := "gBlenderStartPumps" AND NOT "M19010";
  "M19010" := "gBlenderStartPumps"; // P_TRIG("gBlenderStartPumps") - Mem: "M19010"

  // Network 13: Blend Error Reset (Original Language: LAD)

  IF "Procedure_Variables"."First_Production"."Latch" AND "gBlenderStartPumpsONS" AND "gProductChillerEn" THEN
    "HMI_Variables_Status"."Analog_Values"."BlendError" := 0.0;
  END_IF;

  // Network 14: Carbo Co2 Error Reset (Original Language: LAD)

  IF "Procedure_Variables"."First_Production"."Latch" AND "gBlenderStartPumpsONS" AND "gProductChillerEn" AND "AUX FALSE" THEN
    "Blender_Variables"."gCarboCO2Error" := 0.0;
  END_IF;

  // Network 15: Blend Error (Original Language: LAD)

  "mInitBlendError" := "gBlenderBlending" AND "gHighPriorityAlarm";

  // Network 16: Blend Error (Original Language: LAD)

  IF "mInitBlendError" AND "gStopBlendCarboError" THEN
    "Blender_Variables"."gBlendError" := "Blender_Variables"."gBlendError" + "Blender_Constants"."gBlendErrorAfterAlarm";
  END_IF;

  // Network 17: Reset Started (Original Language: LAD)

  IF "gBlenderCIPMode" OR "gBlenderRinseMode" THEN
    "Blender_Variables_Pers"."gBlenderStarted" := FALSE;
  END_IF;

  // Network 18: Started (Original Language: LAD)

  IF "gBlenderProdMode" AND "gBlenderCIPMode" AND "gBlenderRinseMode" AND "Blender_Variables_Pers"."gFirstProdLatched" THEN
    "Blender_Variables_Pers"."gBlenderStarted" := TRUE;
  END_IF;

  // Network 19: DelayBlendEn (Original Language: LAD)
  //   Water Pump Rise Pressure TIME = 2.6 sec

  "mDelayBlendEn"(IN := "gBlenderProdMode" AND "gBlenderRinseMode" AND "gBlenderStartPumps", PT := S5T#3S); // TODO: Declarar "mDelayBlendEn" : TON;

  "gBlenderBlending" := "mDelayBlendEn".Q;

  // Network 20: Stable Flow (Original Language: LAD)

  "mWaitStableFlow"(IN := "gBlenderBlending", PT := S5T#2S); // TODO: Declarar "mWaitStableFlow" : TON;

  "gBlenderStableFlow" := "mWaitStableFlow".Q;

  // Network 21: Flow Filter Enable (Original Language: LAD)
  //   gBlenderFlowFltEn: Enables the Product Flow Filter, in order TO disable the 
  //   filter itself during product ramp-up AND down

  "gBlenderFlowFltEn" := "gBlenderStableFlow" OR ("Procedure_Variables"."Blender_Stop"."Latch" AND "gBlenderStopping" AND "gBlenderFlowFltEn");

  // Network 22: EnToRamp (Original Language: LAD)

  "mEnToRamp"(IN := "gBlenderStableFlow", PT := S5T#3S); // TODO: Declarar "mEnToRamp" : TON;

  "gBlenderEnToRamp" := "mEnToRamp".Q;

  // Network 23: EnCooler (Original Language: LAD)

  "mEnCooler"(IN := "gBlenderProdMode" AND "gBlenderStartPumps", PT := S5T#2m); // TODO: Declarar "mEnCooler" : TON;

  "PID_Variables"."PID_RVM319_H2O_EnInt" := "mEnCooler".Q;

  "PID_Variables"."PID_RVM319_PRD_EnInt" := "mEnCooler".Q;

  // Network 24: DlyOffRecirc (Original Language: LAD)

  // Network 24 did not produce printable SCL code.

  // Network 25: EnRecircPHE (Original Language: LAD)

  "m_StartRecircPHE"(IN := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl" >= 2, PT := S5T#5M); // TODO: Declarar "m_StartRecircPHE" : TON;

  IF "m_StartRecircPHE".Q THEN
    "gEnRecircPHE" := TRUE;
  END_IF;

  // Network 26: EnRecircPHE01 (Original Language: STL)

  // --- BEGIN STL Network 26 ---
   
     	L	"HMI_PID".RVM319_PRD.KP
     	L	0.0
     	NE_R
     	=	"__PlcmigTempFillBits_30B0"[0]
     	A	"__PlcmigTempFillBits_30B0"[0]
     	JNB	_004
     	L	"HMI_PID".RVM319_PRD.KP
     	T	"mRealEnRecPHE01"
     _004:   		NOP_0
     	A	"__PlcmigTempFillBits_30B0"[0]
     	NEG
     	JNB	_005
     	L	1
     	T	"mRealEnRecPHE01"
     _005:   		NOP_0
   
  // --- END STL Network 26 ---

  // Network 27: EnRecircPHE02 (Original Language: LAD)

  "mRealEnRecPHE02" := "HMI_PID.RVM319.Error" / "mRealEnRecPHE01";

  // Network 28: EnRecircPHE Reset (Original Language: LAD)

  "m_StopRecircPHE"(IN := "gEnRecircPHE", PT := S5T#5M); // TODO: Declarar "m_StopRecircPHE" : TON;

  "mTON_Reset_RecircPHE_Goo"(IN := "mRealEnRecPHE02" <= 1.0, PT := S5T#4M); // TODO: Declarar "mTON_Reset_RecircPHE_Goo" : TON;

  IF "HMI_Device"."AVM381"."Config" OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_CoolerControl" <= 1) THEN
    "gEnRecircPHE" := FALSE;
  END_IF;

  // Network 29: EnStopFromFiller (Original Language: LAD)

  "mEnStopFromFillerTmr"(IN := "gBlenderBlending", PT := S5T#5m); // TODO: Declarar "mEnStopFromFillerTmr" : TON;

  // Network 30: DelayToRestart (Original Language: LAD)

  // Network 30 did not produce printable SCL code.

  // Network 31: Check Oil in Modulating Valve (Original Language: LAD)
  //   Check Oil in Modulating Valve Recirculating Balls Screw

  "gRunningMaintHour" := "Blender_Variables_Pers"."gRunningMaintHour";

  "gCheckOilModValves" := "Blender_Constants"."gCheckOilModValves";

  "MOD_DI_OUT_Seg31" := "gRunningMaintHour" MOD "gCheckOilModValves";

  // Network 32: Check Oil in Modulating Valve (Original Language: LAD)
  //   Check Oil in Modulating Valve Recirculating Balls Screw

  "HMI_Alarms"."gH_Message" := Ne(0, "Blender_Variables_Pers"."gRunningMaintHour");

  // Network 33: Check Oil in Water Pump Motor (Original Language: LAD)
  //   Check Oil in Water Pump Motor

  "gCheckOilWaterPumpMotor" := "Blender_Constants"."gCheckOilWaterPumpMotor";

  "MOD_DI_OUT_Seg33" := "gRunningMaintHour" MOD "gCheckOilWaterPumpMotor";

  // Network 34: Check Oil in Water Pump Motor (Original Language: LAD)
  //   Check Oil in Water Pump Motor

  "HMI_Alarms"."gH_Message" := Ne(0, "Blender_Variables_Pers"."gRunningMaintHour");

  // Network 35: Done (Original Language: LAD)

  "Procedure_Variables"."Blender_Run"."Done" := ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Done" AND "Procedure_Variables"."Blender_Stop"."Latch") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "Procedure_Variables"."Blender_Stop"."Done" AND "gBlenderStopping") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "Procedure_Variables"."Blender_Stop"."Latch" AND "gBlenderCIPMode") OR ("Procedure_Variables"."Blender_Run"."Latch" AND "Procedure_Variables"."Blender_Stop"."Request" AND "gBlenderCIPMode" AND "gBlenderStopping");

END_FUNCTION