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

13 KiB

// Block Type: FC
// Block Name (Original): BlendFill StartUp_Seq
// Block Number: 1814
// Original Network Languages: STL, LAD

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

VAR_INOUT
  mStep : Int;
  mTimer : Int;
  mTransition : Bool;
  mFillerProdLoadedInit : Real;
  mFillerProdLoading : Real;
  mFillerLoadAgain : Bool;
  mFillerLoadAfterDrain : Bool;
END_VAR

VAR_TEMP
  mAuxCalc : Real;
  mTimeSP : Int;
  mLoad1_End : Bool;
  mNextStep : Int;
  __PlcmigTempFillBits_10B0 : Array[0..7] of Bool;
END_VAR

BEGIN

  // Network 1: STEP CONTROL (Original Language: STL)

  // --- BEGIN STL Network 1 ---
   
     	L	"mStep"
     	JL	LEND
     	JU	ST00
     	JU	ST01
     	JU	ST02
     	JU	ST03
     	JU	ST04
     	JU	ST05
     	JU	ST06
     	JU	ST07
     LEND:   		JU	FULL
     FULL:   		L	0
     	T	"mStep"
     	JU	END
   
  // --- END STL Network 1 ---

  // Network 2: STEP 00 (Original Language: LAD)
  //   Step 0: Wait Buffer Tank Pressurization
  //   With QCO The Filler use an indipendent CO2 valve then the step has been 
  //   bypassed

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN
    "mNextStep" := 4;
  END_IF;

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN
    "mTimeSP" := 0;
  END_IF;

  IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN
    "mNextStep" := 1;
  END_IF;

  IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" THEN
    "mTimeSP" := 6;
  END_IF;

  // Network 3: End Blend Reset (Original Language: LAD)

  IF "AUX FALSE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE;
  END_IF;

  // Network 4: STEP 00 (Original Language: STL)

  // --- BEGIN STL Network 4 ---
   
     	A_BRACK
     	A	"gEqPressOk"
     	A	"gEqPressSelected"
     	O
     	A	"gBlenderTankPress_Ok"
     	AN	"gEqPressSelected"
     	ON	"gBlendFiStillWaterByPass"
     	O	"HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled
     	BRACKET
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A_BRACK
     	O	"gIN_LinePressCO2Ok"
     	O	"HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled
     	BRACKET
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 4 ---

  // Network 5: STEP 01 (Original Language: LAD)
  //   Step 1: Wait from Filler Enable TO Open EV46 - CO2 Valve -
  //   With QCO The Filler use an indipendent CO2 valve then the step has been 
  //   bypassed

  IF "AUX TRUE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE;
  END_IF;

  // Network 6: STEP 01 (Original Language: STL)

  // --- BEGIN STL Network 6 ---
   
     	A	"gIN_Filler_AVM346_En"
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A	"AUX TRUE"
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 6 ---

  // Network 7: STEP 02 (Original Language: LAD)
  //   Step 2: Filler Pipe Flushing
  //   With QCO The Filler use an indipendent CO2 valve then the step has been 
  //   bypassed

  IF "AUX TRUE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE;
  END_IF;

  // Network 8: MIX - Procedure auxiliary variable (Original Language: LAD)

  IF "gIN_Filler_AVM346_En" THEN
    "gSP_AVM346" := TRUE;
  END_IF;

  // Network 9: STEP 02 (Original Language: STL)

  // --- BEGIN STL Network 9 ---
   
     	A	"gIN_FillerEndFlushing"
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A	"AUX TRUE"
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 9 ---

  // Network 10: STEP 03 (Original Language: LAD)
  //   Step 3: BlendFill Pressurization AT Equilibrium Pressure
  //   With QCO The Filler use an indipendent CO2 valve then the step has been 
  //   bypassed

  IF "AUX TRUE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE;
  END_IF;

  // Network 11: STEP 03 (Original Language: LAD)

  IF "gIN_Filler_AVM346_En" THEN
    "gSP_AVM346" := TRUE;
  END_IF;

  // Network 12: STEP 03 (Original Language: STL)

  // --- BEGIN STL Network 12 ---
   
     	A_BRACK
     	A	"gEqPressOk"
     	A	"gEqPressSelected"
     	O
     	A	"gBlenderTankPress_Ok"
     	AN	"gEqPressSelected"
     	ON	"gBlendFiStillWaterByPass"
     	BRACKET
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A	"AUX TRUE"
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 12 ---

  // Network 13: STEP 04 (Original Language: LAD)
  //   Step 4: Wait First Production Completed - OLD -
  //   NEW : Wait Product Tank Stop Level

  "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled";

  // Network 14: STEP 04 (Original Language: LAD)

  IF "gIN_Filler_AVM346_En" THEN
    "gSP_AVM346" := TRUE;
  END_IF;

  // Network 15: STEP 03 (Original Language: LAD)

  IF "gPrdTank_Empty" THEN
    "gSP_AVM313" := TRUE;
  END_IF;

  IF "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN
    "Filler_Head_Variables"."Head_PID_Manual_Value" := "HMI_Blender_Parameters"."ProcessSetup"."_StartUpPPM303Freq";
  END_IF;

  IF ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gWaitLevToHold_TankPress" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderLevelTarget" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "gBlenderStopLevel") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gBlenderLevelTarget" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "Procedure_Variables"."First_Production"."Latch") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "gBlenderStopLevel" AND "Procedure_Variables"."First_Production"."Done") OR ("HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "gPrdTank_Empty" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" AND "Procedure_Variables"."First_Production"."Latch" AND "Procedure_Variables"."First_Production"."Done") THEN
    "gSP_PID_Head_Manual" := TRUE;
  END_IF;

  // Network 16: STEP 04 (Original Language: LAD)

  "mFillerProdLoadedInit" := "System_RunOut_Variables"."TankProductAvailable";

  // Network 17: STEP 04 (Original Language: STL)

  // --- BEGIN STL Network 17 ---
   
     	A	"AUX TRUE"
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A_BRACK
     	A_BRACK
     	A	"gBlenderStopLevel"
     	A	"Procedure_Variables".First_Production.Latch
     	O
     	A	"Procedure_Variables".First_Production.Done
     	A	"gBlenderLevelTarget"
     	BRACKET
     	AN	"HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled
     	O
     	A	"gWaitLevToHold_TankPress"
     	A	"gIN_Filler_AVM362_En"
     	BRACKET
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 17 ---

  // Network 18: STEP 05 (Original Language: LAD)
  //   Step 5: Start TO Load Product TO Filler without P3

  IF "AUX FALSE" THEN
    "gSP_FillerProdLoad" := TRUE;
  END_IF;

  IF "mFillerLoadAfterDrain" AND "AUX FALSE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := TRUE;
  END_IF;

  // Network 19: STEP 05 (Original Language: LAD)

  IF "gIN_Filler_AVM346_En" THEN
    "gSP_AVM346" := TRUE;
  END_IF;

  // Network 20: STEP 05 (Original Language: LAD)

  IF "gIN_Filler_AVM362_En" THEN
    "gSP_AVM362" := TRUE;
  END_IF;

  // Network 21: STEP 05 (Original Language: LAD)

  IF NOT "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" OR NOT "mFillerLoadAfterDrain" OR NOT "mFillerLoadAgain" THEN
    "mAuxCalc" := "HMI_Blender_Parameters"."ProcessSetup"."_FillerProdPipeMass" * 1.0;
  END_IF;

  IF "HMI_Blender_Parameters"."Processor_Options"."Blender_OPT"."_FastChangeOverEnabled" AND "mFillerLoadAfterDrain" AND "mFillerLoadAgain" THEN
    "mAuxCalc" := 1.0;
  END_IF;

  // Network 22: STEP 05 (Original Language: LAD)

  "mFillerProdLoading" := "mFillerProdLoadedInit" - "System_RunOut_Variables"."TankProductAvailable";

  // Network 23: STEP 05 (Original Language: STL)

  // --- BEGIN STL Network 23 ---
   
     	A_BRACK
     	O	"gWorkshopTest"
     	O	"HMI_Device".AVM346.Out
     	BRACKET
     	A_BRACK
     	A	"HMI_Device".AVM362.Out
     	O
     	A	"HMI_Device".AVM363.Out
     	BRACKET
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A_BRACK
     	A_BRACK
     	ON	"HMI_Blender_Parameters".Processor_Options.Blender_OPT._FastChangeOverEnabled
     	O	"mFillerLoadAfterDrain"
     	BRACKET
     	A_BRACK
     	L	"mFillerProdLoading"
     	L	"mAuxCalc"
     	GT_R
     	BRACKET
     	O
     	AN	"mFillerLoadAfterDrain"
     	A	"gBlenderLevelTarget"
     	O	"gIN_FillerEndTankFilling"
     	O	"mFillerFirstLoadTimeOut"
     	BRACKET
     	A	"gBlenderTankPress_Ok"
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 23 ---

  // Network 24: STEP 06 (Original Language: LAD)
  //   Step 6: LOAD 2 with PPM303 Pump in regulation 2/3 m, wait End 
  //   Tank Filling from Filler

  IF "AUX FALSE" THEN
    "gSP_FillerProdLoad" := TRUE;
  END_IF;

  IF "AUX FALSE" THEN
    "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Prod_Load_2" := TRUE;
  END_IF;

  "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := "AUX FALSE" AND "Procedure_Variables"."First_Production"."Done";

  IF "AUX FALSE" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN
    "Filler_Head_Variables"."Head_PID_Manual_Value" := "HMI_PID"."PPM303"."FfOut";
  END_IF;

  IF "AUX FALSE" AND "Procedure_Variables"."BlendFill_StartUp"."Wait" THEN
    "gSP_PID_Head_Manual" := TRUE;
  END_IF;

  // Network 25: STEP 06 (Original Language: LAD)
  //   mPPM303RampSlewMax = mPPM303RampEndFreq / (Time to end ramp in sec)

  "mPPM303RampSlewMax" := "HMI_PID"."PPM303"."FfOut" / 10.0;

  // Network 26: STEP 06 (Original Language: LAD)

  "mPPM303StartUpRamp"(i_Cycle := "Time_50ms", i_InValue := "HMI_PID"."PPM303"."FfOut", i_SlewMax := "mPPM303RampSlewMax", out := "Filler_Head_Variables"."Head_PID_Manual_Value");

  // Network 27: STEP 06 (Original Language: LAD)

  IF "gIN_Filler_AVM346_En" THEN
    "gSP_AVM346" := TRUE;
  END_IF;

  // Network 28: STEP 06 (Original Language: LAD)

  IF "gIN_Filler_AVM362_En" THEN
    "gSP_AVM362" := TRUE;
  END_IF;

  // Network 29: STEP 06 (Original Language: STL)

  // --- BEGIN STL Network 29 ---
   
     	A	"gIN_FillerEndTankFilling"
     	=	"__PlcmigTempFillBits_10B0"[0]
     	BLD	103
     	A	"AUX TRUE"
     	=	"__PlcmigTempFillBits_10B0"[1]
     	BLD	103
     	A	"Procedure_Variables".BlendFill_StartUp.Wait
     	=	"__PlcmigTempFillBits_10B0"[2]
     	BLD	103
     	A	CLK_0.5S
     	=	"__PlcmigTempFillBits_10B0"[3]
     	BLD	103
     	CALL	"_StepMove"
     	A	_Statusword_?
     	JC	END
   
  // --- END STL Network 29 ---

  // Network 30: STEP 07 (Original Language: LAD)

  IF "AUX FALSE" THEN
    "mFillerLoadAgain" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "mFillerLoadAfterDrain" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."EnBlend" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "Interlocking_Variables"."MIXER_FILLER_SEND"."PROD_Prod_Load_2" := FALSE;
  END_IF;

  IF "AUX FALSE" THEN
    "Procedure_Variables"."BlendFill_StartUp"."Done" := TRUE;
  END_IF;

  // Network 31: SEQUENCER END (Original Language: STL)

  // --- BEGIN STL Network 31 ---
   
     END:    		NOP_0
   
  // --- END STL Network 31 ---

END_FUNCTION