Implement Mario's suggestions:
- Clean up code replace merge algorithm with a function.
- Fix for_statement setting control variable to not a constant.
- Fix for_statement checking BY expression to get correct value for optimization
branch.
Thanks Mario.
FUNCTION_BLOCK HYSTERESIS (* Boolean hysteresis on difference *) (* of REAL inputs, XIN1 - XIN2 *) VAR_INPUT XIN1, XIN2, EPS : REAL; END_VAR VAR_OUTPUT Q : BOOL := 0; END_VAR IF Q THEN IF XIN1 < (XIN2 - EPS) THEN Q := 0; END_IF ; ELSIF XIN1 > (XIN2 + EPS) THEN Q := 1 ; END_IF ;END_FUNCTION_BLOCK