(* @PATH := '\/TASK2_ControlMain\/Blender_Procedure\/System Run Out' *) (* @SYMFILEFLAGS := '59392' *) PROGRAM ProductAvailable VAR mSyrupAvailable_Line : REAL; mSyrupAvailable_Tank : REAL; mSyrupTankProductAvailable: BOOL; mSyrupProductAvailable : REAL; END_VAR VAR_OUTPUT EN_Out : BOOL ; END_VAR (* @END_DECLARATION := '0' *) IF NOT gFastChangeOverActivated THEN gContainerSize := gH_A_Recipe_BottleSize ; CASE gH_A_Recipe_BottleShape OF 0: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 2100 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 2100 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From 1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 2100 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 2100 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 2100 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 2100 ; gProdAvailToFillerRunOut := 1000 ; END_CASE 1: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 3300 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 2800 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From 1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 1600 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 1650 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 1750 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 1750 ; gProdAvailToFillerRunOut := 1000 ; END_CASE 2: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 3333 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 2990 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From 1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 2450 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 2000 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 1200 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 1200 ; gProdAvailToFillerRunOut := 1000 ; END_CASE 3: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 4000 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 3500 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From 1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 2230 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 2100 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 1999 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 1999 ; gProdAvailToFillerRunOut := 1000 ; END_CASE 4: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 2300 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 1960 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From 1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 1700 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 1500 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 1200 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 1200 ; gProdAvailToFillerRunOut := 1000 ; END_CASE 5: ; CASE TRUNC (gContainerSize*2.0) * 5 OF 0: gTotalEmptyContainer := 4500 ; (* From 0 to 0.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 5: gTotalEmptyContainer := 2100 ; (* From 0.5 to 0.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 10: gTotalEmptyContainer := 3400 ; (* From 1 to 1.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 15: gTotalEmptyContainer := 2100 ; (* From .1.5 to 1.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 20: gTotalEmptyContainer := 3290 ; (* From 2 to 2.49 Liters *) gProdAvailToFillerRunOut := 1000 ; 25: gTotalEmptyContainer := 3000 ; (* From 2.5 to 2.99 Liters *) gProdAvailToFillerRunOut := 1000 ; 30: gTotalEmptyContainer := 2690 ; (* From 3 to 3.49 Liters *) gProdAvailToFillerRunOut := 1000 ; ELSE gTotalEmptyContainer := 2690 ; gProdAvailToFillerRunOut := 1000 ; END_CASE ELSE ; END_CASE END_IF IF NOT gFillerRanOut AND NOT gH_Blender_OPT_BlendFillSystem THEN gFillerProductAvailable := gFillerProductAvailableAmount ; ELSE gFillerProductAvailable := 0.0 ; END_IF mSyrupAvailable_Line := LIMIT (0, gH_ProcessSetup_SyrupRunOutLiters - gH_SyrupRunOutCount, gH_ProcessSetup_SyrupRunOutLiters) ; IF gH_Blender_OPT_SyrupLevel THEN mSyrupAvailable_Tank := LIMIT (0,gSyrupTankBottomVol + (gSyrupTankVolume - gSyrupTankBottomVol) * gSyrupTankLevel / 100,gSyrupTankVolume) ; ELSE mSyrupAvailable_Tank := gSyrupTankSyrupAmount ; END_IF IF NOT (gSyrRunOut_Done OR gProdTankRunOut_Latch) THEN IF gSugarBeverage THEN gSyrupProductAvailable := (mSyrupAvailable_Line + mSyrupAvailable_Tank) * (gActualSP_RatioVol + 1) ; ELSE gSyrupProductAvailable := mSyrupAvailable_Line * (gActualSP_RatioVol + 1) ; END_IF ELSE gSyrupProductAvailable := 0.0 ; END_IF IF NOT gProdTankRunOut_Done THEN gTankProductAvailable := ProductLiterInTank(i_TankLevel:=gProductTankLevel) ; ELSE gTankProductAvailable := 0.0 ; END_IF gPrdPipeProductAvailable := LIMIT(0, gProdPipeRunOutProdAmount - gProdPipeRunOutPushCount, gProdPipeRunOutProdAmount) ; gTotalProductAvailable := (gTankProductAvailable + gSyrupProductAvailable + gPrdPipeProductAvailable + gFillerProductAvailable) ; gH_SyrupProductAvailable := gSyrupProductAvailable ; gH_PrdTankProductAvailable := gTankProductAvailable ; gH_PrdPipeProductAvailable := gPrdPipeProductAvailable ; gH_FillerProductAvailable := gFillerProductAvailable ; gH_TotalProductAvailable := gTotalProductAvailableBottle ; gH_TotalEmptyContainer := gTotalEmptyContainer ; IF gContainerSize<>0 THEN gTotalProductAvailableBottle := gTotalProductAvailable / gContainerSize ; END_IF IF (gSyrRunOut_Latch OR gSyrRunOut_Done OR gProdTankRunOut_Latch OR gProdTankRunOut_Done) AND (((gTotalProductAvailable - gFillerProductAvailable)