Änderungen

Gleitendes Mittel AWL

3.060 Byte hinzugefügt, 13:05, 26. Okt. 2013
Die Seite wurde neu angelegt: „== Grundlage == Kopiert aus dem [http://www.sps-forum.de SPS-Forum]. Speichern von 10 Messwerten in einem FIFO FUNCTION FC 100 : VOID TITLE =FIFO AUTHOR …“
== Grundlage ==

Kopiert aus dem [http://www.sps-forum.de SPS-Forum].

Speichern von 10 Messwerten in einem FIFO

FUNCTION FC 100 : VOID
TITLE =FIFO
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : FIFO
VERSION : 1.0

VAR_INPUT
DB_Werte : BLOCK_DB ;
Anzahl_Werte : INT ;
Wert : REAL ;
END_VAR
VAR_TEMP
DB_Register : WORD ;
AR1_Register : DWORD ;
Zwischenwert : REAL ;
Schleife : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Register sichern

L DBNO; // DB-Register
T #DB_Register;

TAR1 ; // AR1-Register
T #AR1_Register;

NETWORK
TITLE =FIFO

AUF #DB_Werte; // DB-Werte

L #Wert; // Wert
T #Zwischenwert; // Zwischenwert

L P#0.0;
LAR1 ;

L #Anzahl_Werte; // Anzahl Werte
M01: T #Schleife;

L DBD [AR1,P#0.0]; // Wert
L #Zwischenwert; // Zwischenwert
T DBD [AR1,P#0.0]; // Zwischenwert -> Wert
TAK ;
T #Zwischenwert; // Wert -> Zwischenwert

L P#4.0;
+AR1 ;

L #Schleife;
LOOP M01;

NETWORK
TITLE =Register wiederherstellen

AUF DB [#DB_Register]; // DB-Register

L #AR1_Register; // AR1-Register
LAR1 ;

END_FUNCTION

Und die Berechnung des Mittelwertes

FUNCTION FC 110 : VOID
TITLE =Mittelwert
AUTHOR : KAI
FAMILY : SPSFORUM
NAME : FIFO
VERSION : 1.0

VAR_INPUT
DB_Werte : BLOCK_DB ;
Anzahl_Werte : INT ;
END_VAR
VAR_OUTPUT
Mittelwert : REAL ;
END_VAR
VAR_TEMP
DB_Register : WORD ;
AR1_Register : DWORD ;
Zwischenwert : REAL ;
Zaehler : REAL ;
Schleife : INT ;
END_VAR
BEGIN
NETWORK
TITLE =Register sichern

L DBNO; // DB-Register
T #DB_Register;

TAR1 ; // AR1-Register
T #AR1_Register;

NETWORK
TITLE =Mittelwert
//Mittelwert
//
//M = LM + ((Z - LM) / N) = LM + Z / N - LM / N
//
//M = Mittelwert
//LM = Letzter Mittelwert
//Z = Wert
//N = Anzahl Werte
//

AUF #DB_Werte; // DB-Werte

L 0.000000e+000;
T #Zwischenwert; // M Mittelwert

L 1.000000e+000;
T #Zaehler; // N Anzahl Werte

L P#0.0;
LAR1 ;

L #Anzahl_Werte; // Anzahl Werte
M01: T #Schleife;

L DBD [AR1,P#0.0]; // Z Wert
L #Zwischenwert; // LM Letzter Mittelwert
-R ;
L #Zaehler; // N Anzahl Werte
/R ;
L #Zwischenwert; // LM Letzter Mittelwert
+R ;
T #Zwischenwert; // M Mittelwert

L #Zaehler; // N Anzahl Werte
L 1.000000e+000;
+R ;
T #Zaehler; // N Anzahl Werte

L P#4.0;
+AR1 ;

L #Schleife;
LOOP M01;

L #Zwischenwert; // M Mittelwert
T #Mittelwert; // Mittelwert

NETWORK
TITLE =Register wiederherstellen

AUF DB [#DB_Register]; // DB-Register

L #AR1_Register; // AR1-Register
LAR1 ;

END_FUNCTION
175
Bearbeitungen