```pascal FUNCTION "BlenderPIDCtrl_SaveValve" : Void { S7_Optimized_Access := 'FALSE' } AUTHOR : 'Author' FAMILY : TASK1 NAME : 'Name' VERSION : 1.0 VAR_TEMP ValBinTmr138 : Word; ValBcdTmr138 : S5Time; Timer138En : Bool; END_VAR VAR CONSTANT "Time" : S5Time := S5T#40s; END_VAR BEGIN (* classic code: IF ABS("Blender_Variables".gActual_Prod_SP - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate) < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate * 0.1 THEN*) IF ABS("Blender_Variables".gActual_Prod_SP - "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate) < "HMI_Blender_Parameters".Actual_Recipe_Parameters._ProductionRate * REAL#0.1 THEN #Timer138En := TRUE; #ValBcdTmr138:= S_ODT (T_NO := "mSpeedConstTmr", S := #Timer138En, TV := #Time, R := "AUX FALSE", BI => #ValBinTmr138, Q => "mSpeedConstTmr.Q"); ELSE #Timer138En := FALSE; END_IF; IF "mSpeedConstTmr.Q" THEN "HMI_Variables_Cmd".Recipe_Updates.ValvesUpdate := TRUE ; #Timer138En := FALSE ; END_IF; END_FUNCTION ```