(* @PATH := '\/TASK2_ControlMain\/Blender_Logic' *) (* @SYMFILEFLAGS := '59392' *) PROGRAM ProductQuality VAR mProdBrixHighRS : RS ; mProdBrixLowRS : RS ; mProdCO2HighRS : RS ; mProdCO2LowRS : RS ; mProdCondLowRS : RS ; mProdCondHighRS : RS ; mDisableBrixHighAlarm : BOOL ; mDisableHighCO2Alarm : BOOL ; mDisableHighCondAlarm : BOOL ; mDisableLowBrixAlarm : BOOL ; mDisableLowCO2Alarm : BOOL ; mDisableLowCondAlarm : BOOL ; mWaterTempHighRS : RS ; mProdTempHighRS : RS ; mWaterTempHighDlyAlm : TON ; mProdTempHighDlyAlm : TON ; mDummy : BOOL ; mTmrCO2High : TON; END_VAR VAR_OUTPUT EN_Out : BOOL ; END_VAR (* @END_DECLARATION := '0' *) _LD_BODY _NETWORKS : 7 _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _EMPTY _EXPRESSION _POSITIV ENABLELIST : 1 _ASSIGN _FUNCTIONBLOCK ??? _BOX_EXPR : 0 _ENABLED _EXPRESSION _POSITIV ProductQuality.Messages _OUTPUTS : 0 _EXPRESSION _POSITIV _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET mDummy ENABLELIST_END _OUTPUTS : 0 _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _EMPTY _EXPRESSION _POSITIV ENABLELIST : 1 _ASSIGN _FUNCTIONBLOCK mProdBrixHighRS _BOX_EXPR : 2 _ENABLED _OPERATOR _BOX_EXPR : 3 _OPERAND _EXPRESSION _POSITIV gH_Message019 _OPERAND _EXPRESSION _POSITIV gFirstProd_Done _OPERAND _EXPRESSION _NEGATIV gWorkshopTest _EXPRESSION _POSITIV AND _OPERATOR _BOX_EXPR : 3 _OPERATOR _BOX_EXPR : 2 _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _POSITIV gProductBrix _OPERAND _EXPRESSION _POSITIV gH_A_Recipe_ProdMeterHighBrix - 0.05 _EXPRESSION _POSITIV LT _OPERAND _EXPRESSION _NEGATIV gH_Message019 _EXPRESSION _POSITIV AND _OPERAND _EXPRESSION _NEGATIV gProductMeterOk _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gProductBrixTooHigh ENABLELIST_END _OUTPUTS : 0 _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _EMPTY _EXPRESSION _POSITIV ENABLELIST : 1 _ASSIGN _FUNCTIONBLOCK mProdBrixLowRS _BOX_EXPR : 2 _ENABLED _OPERATOR _BOX_EXPR : 3 _OPERAND _EXPRESSION _POSITIV gH_Message018 _OPERAND _EXPRESSION _POSITIV gFirstProd_Done _OPERAND _EXPRESSION _NEGATIV gWorkshopTest _EXPRESSION _POSITIV AND _OPERATOR _BOX_EXPR : 3 _OPERATOR _BOX_EXPR : 2 _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _POSITIV gProductBrix _OPERAND _EXPRESSION _POSITIV gH_A_Recipe_ProdMeterLowBrix + 0.05 _EXPRESSION _POSITIV GT _OPERAND _EXPRESSION _NEGATIV gH_Message018 _EXPRESSION _POSITIV AND _OPERAND _EXPRESSION _NEGATIV gProductMeterOk _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gProductBrixTooLow ENABLELIST_END _OUTPUTS : 0 _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _EMPTY _EXPRESSION _POSITIV ENABLELIST : 1 _ASSIGN _FUNCTIONBLOCK mProdCO2HighRS _BOX_EXPR : 2 _ENABLED _FUNCTIONBLOCK mTmrCO2High _BOX_EXPR : 2 _OPERATOR _BOX_EXPR : 4 _OPERAND _EXPRESSION _POSITIV gH_Message021 _OPERAND _EXPRESSION _POSITIV gFirstProd_Done _OPERAND _EXPRESSION _NEGATIV gWorkshopTest _OPERAND _EXPRESSION _NEGATIV gFreezeProductMeter _EXPRESSION _POSITIV AND _OPERAND _EXPRESSION _POSITIV t#8s _EXPRESSION _POSITIV TON _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET _EMPTY _OPERATOR _BOX_EXPR : 3 _OPERATOR _BOX_EXPR : 2 _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _POSITIV gProductCO2 _OPERAND _EXPRESSION _POSITIV gH_A_Recipe_ProdMeterHighCO2 - 0.08 _EXPRESSION _POSITIV LT _OPERAND _EXPRESSION _NEGATIV gH_Message021 _EXPRESSION _POSITIV AND _OPERAND _EXPRESSION _NEGATIV gProductMeterOk _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gProductCO2TooHigh ENABLELIST_END _OUTPUTS : 0 _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _EMPTY _EXPRESSION _POSITIV ENABLELIST : 1 _ASSIGN _FUNCTIONBLOCK mProdCO2LowRS _BOX_EXPR : 2 _ENABLED _OPERATOR _BOX_EXPR : 3 _OPERAND _EXPRESSION _POSITIV gH_Message020 _OPERAND _EXPRESSION _POSITIV gFirstProd_Done _OPERAND _EXPRESSION _NEGATIV gWorkshopTest _EXPRESSION _POSITIV AND _OPERATOR _BOX_EXPR : 3 _OPERATOR _BOX_EXPR : 2 _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _POSITIV gProductCO2 _OPERAND _EXPRESSION _POSITIV gH_A_Recipe_ProdMeterLowCO2 + 0.08 _EXPRESSION _POSITIV GT _OPERAND _EXPRESSION _NEGATIV gH_Message020 _EXPRESSION _POSITIV AND _OPERAND _EXPRESSION _NEGATIV gProductMeterOk _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gProductCO2TooLow ENABLELIST_END _OUTPUTS : 0 _NETWORK _COMMENT water Temperature Too High May be the suction ammonia compresso doesn't work properly. _END_COMMENT _LD_ASSIGN _LD_AND _LD_OPERATOR : 3 _LD_CONTACT gH_Message054 _EXPRESSION _POSITIV _FUNCTIONBLOCK mWaterTempHighDlyAlm _BOX_EXPR : 2 _EMPTY _OPERAND _EXPRESSION _POSITIV t#2m _EXPRESSION _POSITIV TON _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET _EMPTY _FUNCTIONBLOCK mWaterTempHighRS _BOX_EXPR : 2 _EMPTY _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _NEGATIV gH_Message054 _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _EXPRESSION _POSITIV ENABLELIST : 0 ENABLELIST_END _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gWaterTempTooHigh _NETWORK _COMMENT _END_COMMENT _LD_ASSIGN _LD_AND _LD_OPERATOR : 3 _LD_CONTACT gH_Message052 _EXPRESSION _POSITIV _FUNCTIONBLOCK mProdTempHighDlyAlm _BOX_EXPR : 2 _EMPTY _OPERAND _EXPRESSION _POSITIV t#2m _EXPRESSION _POSITIV TON _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET _EMPTY _FUNCTIONBLOCK mProdTempHighRS _BOX_EXPR : 2 _EMPTY _OPERATOR _BOX_EXPR : 2 _OPERAND _EXPRESSION _NEGATIV gH_Message052 _OPERAND _EXPRESSION _POSITIV gSyrRunOut_Done _EXPRESSION _POSITIV OR _EXPRESSION _POSITIV RS _OUTPUTS : 0 _EXPRESSION _POSITIV _EXPRESSION _POSITIV ENABLELIST : 0 ENABLELIST_END _OUTPUTS : 1 _OUTPUT _POSITIV _NO_SET gProdTempTooHigh END_PROGRAM ACTION Messages: IF gH_A_Recipe_ProdMeterHighBrix<>0 THEN mDisableBrixHighAlarm := FALSE ; ELSE mDisableBrixHighAlarm := TRUE ; END_IF IF gH_A_Recipe_ProdMeterLowBrix<>0 THEN mDisableLowBrixAlarm := FALSE ; ELSE mDisableLowBrixAlarm := TRUE ; END_IF IF gH_A_Recipe_ProdMeterHighCO2<>0 THEN mDisableHighCO2Alarm := FALSE ; ELSE mDisableHighCO2Alarm := TRUE ; END_IF IF gH_A_Recipe_ProdMeterLowCO2<>0 THEN mDisableLowCO2Alarm := FALSE ; ELSE mDisableLowCO2Alarm := TRUE ; END_IF IF gH_A_Recipe_ProdHighCond <>0 AND gH_Blender_OPT_ProductConductimeter THEN mDisableHighCondAlarm := FALSE ; ELSE mDisableHighCondAlarm := TRUE ; END_IF IF gH_A_Recipe_ProdLowCond <>0 AND gH_Blender_OPT_ProductConductimeter THEN mDisableLowCondAlarm := FALSE ; ELSE mDisableLowCondAlarm := TRUE ; END_IF IF gProductBrix>gH_A_Recipe_ProdMeterHighBrix AND gProductMeterOk AND NOT mDisableBrixHighAlarm AND gFirstProd_Done AND gSugarBeverage AND NOT gWaterRecipe AND NOT gBlenderRinseMode THEN gH_Message019 := TRUE ; (* High Product Brix *) ELSE gH_Message019 := FALSE ; (* High Product Brix *) END_IF IF gProductBrixgH_A_Recipe_ProdMeterHighCO2 AND gProductMeterOk AND NOT mDisableHighCO2Alarm AND gFirstProd_Done AND (gCarboStillProduct OR gH_Blender_OPT_DoubleDeair) AND NOT gBlenderRinseMode THEN gH_Message021 := TRUE ; (* High Product CO2 *) ELSE gH_Message021 := FALSE ; (* High Product CO2 *) END_IF IF gProductConductivity < gH_A_Recipe_ProdLowCond AND gFirstProd_Done AND NOT gBlenderRinseMode AND NOT mDisableLowCondAlarm THEN gH_Message060 := TRUE ; (* Low Product Conductivity *) ELSE gH_Message060 := FALSE ; (* Low Product Conductivity *) END_IF IF gProductConductivity > gH_A_Recipe_ProdHighCond AND gFirstProd_Done AND NOT gBlenderRinseMode AND NOT mDisableHighCondAlarm THEN gH_Message059 := TRUE ; (* High Product Conductivity *) ELSE gH_Message059 := FALSE ; (* High Product Conductivity *) END_IF IF gTempProd_PV < 1.0 AND gPID_ProdTemp_Enabled AND gFirstProd_Done THEN gH_Message051 := TRUE ; (* Product near to freezing temperature *) ELSE gH_Message051 := FALSE ; END_IF IF gTempProd_PV > (gR_TempProd_SP + 4.0) AND gPID_ProdTemp_Enabled AND gFirstProd_Done THEN gH_Message052 := TRUE ; (* Product temperature too high *) ELSE gH_Message052 := FALSE ; END_IF IF gTempWater_PV < 1.0 AND gPID_WaterTemp_Enabled AND gFirstProd_Done THEN gH_Message053 := TRUE ; (* Water near to freezing temperature *) ELSE gH_Message053 := FALSE ; END_IF IF gTempWater_PV > (gR_TempWater_SP + 4.0) AND gPID_WaterTemp_Enabled AND gFirstProd_Done THEN gH_Message054 := TRUE ; (* Water temperature too high *) ELSE gH_Message054 := FALSE ; END_IF END_ACTION