author | etisserant |
Sun, 04 Jan 2009 17:21:33 +0100 | |
changeset 162 | 60a124678842 |
parent 0 | fb772792efd1 |
permissions | -rwxr-xr-x |
FUNCTION_BLOCK LAG1 VAR_INPUT RUN : BOOL ; (* 1 = run, 0 = reset *) XIN : REAL ; (* Input variable *) TAU : TIME ; (* Filter time constant *) CYCLE : TIME ; (* Sampling time interval *) END_VAR VAR_OUTPUT XOUT : REAL ; END_VAR (* Filtered output *) VAR K : REAL ; (* Smoothing constant, 0.0<=K<1.0 *) END_VAR IF RUN THEN XOUT := XOUT + K * (XIN - XOUT) ; ELSE XOUT := XIN ; K := TIME_TO_REAL(CYCLE) / TIME_TO_REAL(CYCLE + TAU) ; END_IF ; END_FUNCTION_BLOCK