13 KiB
13 KiB
// Block Type: FC
// Block Name (Original): BlendFill StartUp_Seq
// Block Number: 1814
// Original Network Languages: LAD, STL
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