Summe und arithmetischen Mittelwert einer Datentabelle mit UDINT-Zahlen berechnen
Dieser FP-Befehl berechnet die Summe und den arithmetischen Mittelwert von UDINT-Zahlen in der Datentabelle von s1_Start bis s2_End. Die Summe aller Elemente der Datentabelle wird am Ausgang d1_Sum und der arithmetische Mittelwert über alle Elemente der Datentabelle am Ausgang d2_Mean zurückgegeben. Wenn der arithmetische Mittelwert keine ganze Zahl ergibt, wird nur der Vorkommawert zurückgegeben.
Eingang
Anfang der Datentabelle
Ende der Datentabelle
Ausgang
Summe aller in der Datentabelle spezifizierten Elemente
Mittelwert aller in der Datentabelle spezifizierten Elemente
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn s1_Start >s2_End
wenn s1_Start und s2_End zu verschiedenen Datenbereichen gehören
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn s1_Start >s2_End
wenn s1_Start und s2_End zu verschiedenen Datenbereichen gehören
Verwandte F-Befehle: F275_MEAN, F276_DMEAN, F352_FMEAN
Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden.Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.
VAR
bStart: BOOL:=FALSE;
(*activates the function*)
audiDataField: ARRAY [0..4] OF UDINT:=[31111,42440,55555,61000,87778];
udiSum: UDINT:=0;
(*the sum of all elements of
data_array; here: 161688*)
uiMean: UINT:=0;
(*the arithmetic mean of all
elements of data_array;
here: 32337*)
END_VAR
Wenn die Variable bStart auf TRUE gesetzt wird, wird die Funktion ausgeführt.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_CONTACT,,bStart,6,2,8,4,);
B(B_VARIN,,audiDataField[0],8,3,10,5,);
B(B_VARIN,,audiDataField[4],8,4,10,6,);
B(B_VAROUT,,udiSum,24,3,26,5,);
B(B_VAROUT,,uiMean,24,4,26,6,);
B(B_F,FP_DATA_MEAN_SUM_UDINT0!,,10,1,24,6,,?DEN?Ds1_Start?Ds2_End?AENO?Cd1_Sum?Cd2_Mean);
L(1,3,6,3);
L(8,3,10,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF bStart then
FP_DATA_MEAN_SUM_UDINT0(s1_Start := audiDataField[0],
s2_End := audiDataField[4],
d1_Sum => udiSum,
d2_Mean => udiMean);
END_IF;