PLC-API eMode : E_CTRL_MODE; stParams : ST_CTRL_DIGITAL_FILTER_PARAMS; eErrorId : E_CTRL_ERRORCODES; bError : BOOL; fIn : FLOAT := 0; fOut : FLOAT; bInit :
BOOL := TRUE; END_VAR IF bInit THEN (* set values in the local arrays *) ar_CoefficientsArray_a[1] := 0.0; (* not used *) ar_CoefficientsArray_a[2] := 0.2; ar_CoefficientsArray_a[3] := 0.1; ar_CoefficientsArray_b[1] := 0.6; ar_CoefficientsArray_b[2] := 0.4; ar_CoefficientsArray_b[3] := 0.2; (* set values in the parameter struct *) stParams.tTaskCycleTime := T#2ms; stParams.tCtrlCycleTime := T#2ms; stParams.nFilterOrder := 2; (* set the mode *) eMode := eCTRL_MODE_ACTIVE; bInit := FALSE; END_IF (* set addresses *) stParams.pCoefficientsArray_a_ADR := ADR( ar_CoefficientsArray_a); stParams.nCoefficientsArray_a_SIZEOF := SIZEOF( ar_CoefficientsArray_a); stParams.pCoefficientsArray_b_ADR := ADR( ar_CoefficientsArray_b); stParams.nCoefficientsArray_b_SIZEOF := SIZEOF( ar_CoefficientsArray_b); stParams.pDigitalFilterData_ADR := ADR( ar_stDigitalFilterData ); stParams.nDigitalFilterData_SIZEOF := SIZEOF( ar_stDigitalFilterData ); fbDigitalFilter ( fIn := fIn, eMode := eMode, stParams := stParams, fOut => fOut, eErrorId => eErrorId, bError => bError); Requirements 5.5.4 FB_CTRL_MOVING_AVERAGE The function block provides a moving mean value filter in the functional diagram.
The arithmetic mean of the last n values is calculated. TS4100 82 Version: 1.1 Development environment Target system type PLC libraries to be linked TwinCAT v2.8 PC (i386) TcControllerToolbox.lib TwinCAT v2.9, build 947 onwards BC [} 10] TcControllerToolbox.lb6 TwinCAT v2.9, build 956 onwards BX [} 10] TcControllerToolbox.lbx