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