diff options
author | pux <pux@pux.dom> | 2021-01-07 19:39:17 +0100 |
---|---|---|
committer | pux <pux@pux.dom> | 2021-01-07 19:39:17 +0100 |
commit | 39765e002e71a2dd54e932469877acfc1b6fcb67 (patch) | |
tree | 83456425ad35e8c47894dee6660bd9ed574ebfdd /exp/FB_EWMA.EXP | |
parent | bbbba6c698a73fc1a6bd00f7a07c89ba19ce38c5 (diff) | |
download | lib61131aux-39765e002e71a2dd54e932469877acfc1b6fcb67.tar.gz lib61131aux-39765e002e71a2dd54e932469877acfc1b6fcb67.tar.bz2 lib61131aux-39765e002e71a2dd54e932469877acfc1b6fcb67.zip |
Diffstat (limited to 'exp/FB_EWMA.EXP')
-rw-r--r-- | exp/FB_EWMA.EXP | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/exp/FB_EWMA.EXP b/exp/FB_EWMA.EXP new file mode 100644 index 0000000..6496df9 --- /dev/null +++ b/exp/FB_EWMA.EXP @@ -0,0 +1,35 @@ +
+(* @NESTEDCOMMENTS := 'Yes' *)
+(* @PATH := '' *)
+(* @OBJECTFLAGS := '0, 8' *)
+(* @SYMFILEFLAGS := '2048' *)
+FUNCTION_BLOCK FB_EWMA
+VAR_INPUT
+ IN_rN : REAL := 15; (* Filter constant alpha := rN/(rN+1) *)
+ IN_rXk : REAL; (* Input value to smooth *)
+END_VAR
+VAR_OUTPUT
+ OUT_rXk_avg : REAL; (* smoothed output *)
+END_VAR
+VAR
+ rAlpha : REAL;
+ rXk_avg_old : REAL;
+END_VAR
+
+(* Exponentially Weighted Moving Average Filter
+Author: mo
+Date: 2019-02
+
+Filter constant: alpha := n / (n+1)
+EWMA Filter: Xk_avg := alpha*Xk_prev + (1-alpha)*Xk
+
+*)
+(* @END_DECLARATION := '0' *)
+rAlpha := IN_rN/(IN_rN+1);
+
+OUT_rXk_avg := rAlpha * rXk_avg_old
+ + ( (1 - rAlpha) * IN_rXk);
+
+rXk_avg_old := OUT_rXk_avg;
+
+END_FUNCTION_BLOCK
|