Correctly handle structured variables that include FB and external FBs (example: FB1.FB2.extFB3.FB4.extFB5.extFB6.structvar.field1 := 42;) (this commit fixes only ST code. TODO: IL and SFC)
FUNCTION_BLOCK INTEGRAL
VAR_INPUT
RUN : BOOL ; (* 1 = integrate, 0 = hold *)
R1 : BOOL ; (* Overriding reset *)
XIN : REAL ; (* Input variable *)
X0 : REAL ; (* Initial value *)
CYCLE : TIME ; (* Sampling period *)
END_VAR
VAR_OUTPUT
Q : BOOL ; (* NOT R1 *)
XOUT : REAL ; (* Integrated output *)
END_VAR
Q := NOT R1 ;
IF R1 THEN XOUT := X0 ;
ELSIF RUN THEN XOUT := XOUT + XIN * TIME_TO_REAL(CYCLE);
END_IF ;
END_FUNCTION_BLOCK