FUNCTION "DB-Bereich_Auswerten" : VOID
TITLE =
AUTHOR : Lischnew
FAMILY : ARCHIV
NAME : DB_Auswe
VERSION : 1.0
VAR_INPUT
Datenbaustein : BLOCK_DB ; //Datenbaustein der ausgewerten werden soll
Datenanfang : INT ; //erstes Datenwort
Datenende : INT ; //letztes Datenwort
END_VAR
VAR_OUTPUT
Anzahl : INT ; //Anzahl der Datenworte
Min : INT ; //Kleinster Wert aller Datenworte
Max : INT ; //Grösster Wert aller Datenworte
Schnitt : INT ; //Durchschnitt (Mittelwert) aller Datenworte
Summe : DINT ; //Summe aller Werte aller Datenworte
END_VAR
VAR_TEMP
summe_temp : DINT ;
akt_dw : DINT ; //aktuelles Datenwort
akt_wert : INT ; //Wert des akt_dw
END_VAR
BEGIN
NETWORK
TITLE =
AUF #Datenbaustein;
L #Datenende;
L #Datenanfang;
-I ;
L 1;
+I ;
T #Anzahl;
NOP 0;
L #Datenanfang;
T #akt_dw;
L #akt_dw;
SLD 3;
LAR1 ;
L DBW [AR1,P#0.0];
T #Min;
T #Max;
T #Schnitt;
T #Summe;
T #summe_temp;
anf: NOP 0; //schleifenanfang
L #akt_dw;
L 2;
+D ; //nächstes dw
T #akt_dw;
L #Datenende;
>D ;
SPB ende; //Schleifenende erreicht
L #akt_dw;
SLD 3;
LAR1 ;
L DBW [AR1,P#0.0];
T #akt_wert;
// Auswertung kleinster Wert
L #Min;
L #akt_wert;
<I ;
SPB min0;
L #akt_wert;
T #Min;
min0: NOP 0;
// Auswertung grösster Wert
L #Max;
L #akt_wert;
>I ;
SPB max0;
L #akt_wert;
T #Max;
max0: NOP 0;
// Berechnen der Summe
L #summe_temp;
L #akt_wert;
+D ;
T #summe_temp;
SPA anf; //zum Schleifenanfang
ende: NOP 0;
// Berechnen des Durchschnitt
L #summe_temp;
T #Summe;
L #Anzahl;
/D ;
T #Schnitt;
END_FUNCTION