3.5 KiB
3.5 KiB
FUNCTION_BLOCK "BlenderPID_BlendingFault"
{ S7_Optimized_Access := 'FALSE' }
AUTHOR : 'Author'
FAMILY : TASK1
NAME : 'Name'
VERSION : 1.0
VAR
Timer132Enable : Bool;
Timer133Enable : Bool;
Timer134Enable : Bool;
END_VAR
VAR_TEMP
ValBinTmr132 : Word;
ValBcdTmr132 : S5Time;
ValBinTmr133 : Word;
ValBcdTmr133 : S5Time;
ValBinTmr134 : Word;
ValBcdTmr134 : S5Time;
END_VAR
BEGIN
IF "Procedure_Variables".First_Production.Latch AND "gBlenderEnToRamp" THEN
#Timer132Enable := TRUE;
#ValBcdTmr132:= S_ODT (T_NO := "mFirstProdBlendErrEnTON",
S := #Timer132Enable,
TV := s5time#20s,
R := "AUX FALSE",
BI => #ValBinTmr132,
Q => "mFirstProdBlendErrEn.Q");
ELSE
#Timer132Enable := FALSE ;
END_IF;
IF (ABS("Blender_Variables".gBlendError) > "HMI_Variables_Status".Analog_Values.MaxBlendError AND "gBlenderBlending") AND ("mFirstProdBlendErrEn.Q" OR "Procedure_Variables".First_Production.Done) THEN
IF "Blender_Variables".gBlendError > 0 THEN
"gBlendErrorLowSyr_Fault" := TRUE ;
ELSE
"gBlendErrorHighSyr_Fault" := TRUE ;
END_IF;
END_IF;
IF ("gBlendErrorLowSyr_Fault" OR "gBlendErrorHighSyr_Fault") AND "gIN_ResetBtn" THEN
"Blender_Variables".gBlendError := 0 ;
"gMaxBlendErrorAfterFault" := TRUE ;
"gBlendErrorLowSyr_Fault" := FALSE ;
"gBlendErrorHighSyr_Fault" := FALSE ;
END_IF;
IF "gMaxBlendErrorAfterFault" AND "gBlenderStableFlow" THEN
#Timer133Enable := TRUE;
END_IF;
#ValBcdTmr133:= S_ODT (T_NO := "mBlendErrorRecTmr",
S := #Timer133Enable,
TV := s5time#10s,
R := "AUX FALSE",
BI => #ValBinTmr133,
Q => "mBlendErrorRecTmr.Q");
IF "mBlendErrorRecTmr.Q" THEN
IF ABS("Blender_Variables".gBlendError) < "HMI_Variables_Status".Analog_Values.MaxBlendError THEN
#Timer133Enable := FALSE ;
"gMaxBlendErrorAfterFault" := FALSE ;
END_IF;
END_IF;
IF (ABS("Blender_Variables".gCarboCO2Error) > "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error AND "gBlenderBlending") AND ("mFirstProdBlendErrEn.Q" OR "Procedure_Variables".First_Production.Done) THEN
IF "Blender_Variables".gCarboCO2Error > 0 THEN
"gCarboCO2Err_L_CO2_Fault" := TRUE ;
ELSE
"gCarboCO2Err_H_CO2_Fault" := FALSE ;
END_IF;
END_IF;
IF ("gCarboCO2Err_L_CO2_Fault" OR "gCarboCO2Err_H_CO2_Fault") AND "gIN_ResetBtn" THEN
"Blender_Variables".gCarboCO2Error := 0 ;
"gMaxCarboErrorAfterFault" := TRUE ;
"gCarboCO2Err_L_CO2_Fault" := FALSE ;
"gCarboCO2Err_H_CO2_Fault" := FALSE ;
END_IF;
IF "gMaxCarboErrorAfterFault" AND "gBlenderStableFlow" THEN
#Timer134Enable := TRUE;
END_IF;
#ValBcdTmr134:= S_ODT (T_NO := "mCarboErrorRecTmr",
S := #Timer134Enable,
TV := s5time#20s,
R := "AUX FALSE",
BI => #ValBinTmr134,
Q => "mCarboErrorRecTmr.Q");
IF "mCarboErrorRecTmr.Q" THEN
IF ABS("Blender_Variables".gCarboCO2Error) < "HMI_Variables_Status".Analog_Values.MaxCarboCO2Error THEN
#Timer134Enable := FALSE ;
"gMaxCarboErrorAfterFault":= FALSE ;
END_IF;
END_IF;
END_FUNCTION_BLOCK