L #Eingang //ungeglätteter Eingang REAL
L #HW_Mittelwert //Hilfswort REAL
+R
T #HW_Mittelwert
L #Ausgang //geglätteter Ausgang REAL
-R
T #HW_Mittelwert
L #HW_Mittelwert
L #Faktor //Faktor REAL für Glättung z.B. 500.0
/R
T #Ausgang
@vierlagig: ...bitte in deutsch..was ist "AUD" fifo (first in first out.. was meinst du mit fifo... was für ein Baustein?
*
FUNCTION_BLOCK "AVERAGING_BLOCK_LIM_SYNC"
TITLE =AVERAGING BLOCK WITH LIMIT AND SYNCHRO
//if the rInput inside the range and xSynchro on then calculate the average from
//an 8 value shift register every xTrigger-time else the rOutput are the old
//output
//without synchro the accu will be filled
//reset will zeroing the FIFO
//
//DATE: 19.02.2008
//AUTHOR: 4lagig
//VERSION: V0.1 BasicVer
AUTHOR : '4lagig'
FAMILY : RealGF
VERSION : 0.1
VAR_INPUT
xTrigger : BOOL ;
xSynchro : BOOL ;
xReset : BOOL ;
rInput : REAL ;
rLowCut : REAL ;
rDelta : REAL ;
END_VAR
VAR_OUTPUT
rOutput : REAL ;
END_VAR
VAR
xHelpFlag : BOOL ;
rAccu1 : REAL ;
rAccu2 : REAL ;
rAccu3 : REAL ;
rAccu4 : REAL ;
rAccu5 : REAL ;
rAccu6 : REAL ;
rAccu7 : REAL ;
rAccu8 : REAL ;
rOutpuAux : REAL ;
rHighX : REAL ;
rLowX : REAL ;
END_VAR
BEGIN
NETWORK
TITLE =
//
//_______INITIALIZATOR_______//
U #xReset;
SPB _004;
L #rInput;
L #rLowCut;
<R ;
ON #xSynchro;
SPB _005;
//_______RANGE LIMITS_______//
L #rOutpuAux;
L #rDelta;
+R ;
T #rHighX; // High limit
L #rOutpuAux;
L #rDelta;
-R ;
T #rLowX; // Low limit
//_______TRIGGER_______//
U #xTrigger;
FP #xHelpFlag; // One shot pulse
SPBN _006; // Do NOT jump if there is a pulse
//_______HIGH FILTER_______//
L #rInput;
L #rHighX;
>R ;
SPB _006; // Jump if input is too HIGH
//_______LOW FILTER_______//
L #rInput;
L #rLowX;
<R ;
SPB _006; // Jump if input is too LOW
//_______SHIFTER_______//
_005: L #rAccu7;
T #rAccu8;
L #rAccu6;
T #rAccu7;
L #rAccu5;
T #rAccu6;
L #rAccu4;
T #rAccu5;
L #rAccu3;
T #rAccu4;
L #rAccu2;
T #rAccu1;
L #rAccu1;
T #rAccu2;
L #rInput;
T #rAccu8;
SPA _006;
//_______ZEROING_______//
_004: L 0.000000e+000;
T #rAccu1;
T #rAccu2;
T #rAccu3;
T #rAccu4;
T #rAccu5;
T #rAccu6;
T #rAccu7;
T #rAccu8;
//_______AVERAGE VALUE CALCULATION_______//
_006: L #rAccu1;
L #rAccu2;
+R ;
L #rAccu3;
+R ;
L #rAccu4;
+R ;
L #rAccu5;
+R ;
L #rAccu6;
+R ;
L #rAccu7;
+R ;
L #rAccu8;
+R ;
L 8.000000e+000;
/R ;
T #rOutpuAux;
T #rOutput;
//_______EN-EN0 MECHANISM_______//
SET ;
SAVE ;
END_FUNCTION_BLOCK
(das ist das "know-how", das wir momentan zum Nulltarif nach China liefern ...)
Gruß
Feng
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?