Fix datatype analysis of structured variables that contain arrays in their fields (e.g. var.x1[var2 + 42].y1).
FUNCTION_BLOCK DERIVATIVE
VAR_INPUT
RUN : BOOL ; (* 0 = reset *)
XIN : REAL ; (* Input to be differentiated *)
CYCLE : TIME ; (* Sampling period *)
END_VAR
VAR_OUTPUT
XOUT : REAL ; (* Differentiated output *)
END_VAR
VAR X1, X2, X3 : REAL ; END_VAR
IF RUN THEN
XOUT := (3.0 * (XIN - X3) + X1 - X2)
/ (10.0 * TIME_TO_REAL(CYCLE)) ;
X3 := X2 ; X2 := X1 ; X1 := XIN ;
ELSE XOUT := 0.0; X1 := XIN ; X2 := XIN ; X3 := XIN ;
END_IF ;
END_FUNCTION_BLOCK