2.4 KiB
2.4 KiB
FUNCTION "BlenderPID_FlowMeterErro" : Real
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : 'Author'
FAMILY : TASK1
NAME : 'Name'
VERSION : 1.0
VAR_TEMP
mWaterMaxFlow : Real;
mWaterMinFlow : Real;
mSyrupMaxFlow : Real;
mSyrupMinFlow : Real;
mMinRatio : Real;
mMaxRatio : Real;
mBevBrixMax : Real;
mBevBrixMin : Real;
END_VAR
BEGIN
IF "Blender_Variables".gSP_H2O <> 0 THEN
"Blender_Variables".gWaterVFMCalcError := "Blender_Variables".gWaterVFMMeasError / 100 * "Blender_Variables".gSP_H2O ;
END_IF;
IF "Blender_Variables".gSP_SYR <> 0 THEN
"Blender_Variables".gSyrupMFMCalcError := ("Blender_Variables".gSyrupMFMMeasError / 100 + ("Blender_Variables".gSyrupMFMZeroStab / ("Blender_Variables".gSP_SYR * 60)) / 100) * "Blender_Variables".gSP_SYR ;
END_IF;
IF "Blender_Variables".gSP_CO2 <>0 THEN
"Blender_Variables".gCO2MFMCalcError := ("Blender_Variables".gCO2MFMMeasError / 100 + ("Blender_Variables".gCO2MFMZeroStab / ("Blender_Variables".gSP_CO2 * 60 / 1000)) / 100) * "Blender_Variables".gSP_CO2 ;
END_IF;
#mWaterMaxFlow := "Blender_Variables".gSP_H2O + "Blender_Variables".gWaterVFMCalcError ;
#mWaterMinFlow := "Blender_Variables".gSP_H2O - "Blender_Variables".gWaterVFMCalcError ;
IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN
#mSyrupMaxFlow := ("Blender_Variables".gSP_SYR + "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ;
#mSyrupMinFlow := ("Blender_Variables".gSP_SYR - "Blender_Variables".gSyrupMFMCalcError) / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity ;
END_IF;
IF #mSyrupMaxFlow <> 0 THEN
#mMinRatio := #mWaterMinFlow / #mSyrupMaxFlow ;
END_IF;
IF #mSyrupMinFlow <> 0 THEN
#mMaxRatio := #mWaterMaxFlow / #mSyrupMinFlow ;
END_IF;
IF "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity <> 0 THEN
#mBevBrixMax := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / ((#mMinRatio / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1) ;
#mBevBrixMin := "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupBrix / ((#mMaxRatio / "HMI_Blender_Parameters".Actual_Recipe_Parameters._SyrupDensity) + 1) ;
END_IF;
"Blender_Variables".gBlenderBlendMaxError := #mBevBrixMax - #mBevBrixMin ;
#BlenderPID_FlowMeterErro := "Blender_Variables".gBlenderBlendMaxError ;
END_FUNCTION