Summe und arithmetischer Mittelwert einer 32-Bit-Datentabelle
Die Funktion berechnet die Summe und den arithmetischen Mittelwert (beides mit Vorzeichen) von Werten, die in einer 32-Bit-Datentabelle stehen.
Eingang
Anfang der Datentabelle
Ende der Datentabelle
Ausgang
Summe aller in der Datentabelle spezifizierten Elemente
Mittelwert aller in der Datentabelle spezifizierten Elemente
Der Anfang der Datentabelle wird dem Eingang s1_Start und das Ende dem Eingang s2_End übergeben. Die Summe aller Elemente der Datentabelle wird am Ausgang Sum und der arithmetische Mittelwert über alle Elemente der Datentabelle am Ausgang Mean zurückgegeben. Wenn der arithmetische Mittelwert keine ganze Zahl ergibt, wird nur der Vorkommawert zurückgegeben.
wenn der mit dem Index-Modifizierer definierte Bereich größer ist als der zulässige Bereich
wenn die Adresse der Variablen an den Eingängen von s1_Start > s2_End ist.
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 die Adresse der Variablen an den Eingängen von s1_Start > s2_End ist.
wenn s1_Start und s2_End zu verschiedenen Datenbereichen gehören
wenn es zu einem Überlauf bzw. Unterlauf während der Funktionsausführung kommt.
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
start: BOOL:=FALSE;
(*activates the function*)
data_array: ARRAY [0..4] OF DINT:=[4,7,-32,13,5];
sum: ARRAY [0..1] OF DINT:=[2(0)];
(*the sum of all elements of
data_array; here: -3
[16#FFFFFFFF,FFFFFFFD]*)
mean: DINT:=0;
(*the arithmetic mean of all
elements of data_array;
here: 0*)
END_VAR
Wenn die Variable start auf TRUE gesetzt wird, wird die Funktion ausgeführt.
Die Funktion berechnet die Summe aller Elemente des ARRAY data_field (Summe = 2 + 3 + 222222 + (-333333) + 1 = -111105) und übergibt das Ergebnis result an die Variable sum. Zusätzlich berechnet die Funktion den Mittelwert (Mittelwert = Summe/5 = -111105/5 = -22221) und übergibt das Ergebnis result an die Variable mean.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_VARIN,,output,6,1,8,3,);
B(B_VARIN,,data_field[0],6,2,8,4,);
B(B_VARIN,,data_field[4],6,3,8,5,);
B(B_F,F276_DMEAN,,8,0,17,5,,?DEN?D@'s1'?Ds2?AENO?Csum?Cmean);
B(B_VAROUT,,sum,17,2,19,4,);
B(B_VAROUT,,mean,17,3,19,5,);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F276_DMEAN( s1_Start:= data_field[0],
s2_End:= data_field[4],
Sum=> sum,
Mean=> mean);
END_IF;