F276_DMEAN

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.

Parameter

Eingang

s1_Start (DWORD, DINT, UDINT, DATE, TOD, DT)

Anfang der Datentabelle

s2_End (DWORD, DINT, UDINT, DATE, TOD, DT)

Ende der Datentabelle

Ausgang

Sum (ARRAY [0..1] OF DINT)

Summe aller in der Datentabelle spezifizierten Elemente

Mean (DINT)

Mittelwert aller in der Datentabelle spezifizierten Elemente

Anmerkungen

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.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • 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

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • 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

sys_bIsCarry (wird für einen Zyklus auf TRUE gesetzt)
  • wenn es zu einem Überlauf bzw. Unterlauf während der Funktionsausführung kommt.

Beispiel

POE-Kopf

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

POE-Rumpf

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.

KOP-Rumpf

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

ST-Rumpf

IF start then
    F276_DMEAN( s1_Start:= data_field[0],
         s2_End:= data_field[4],
         Sum=> sum,
         Mean=> mean);
END_IF;

AWL-Rumpf

Letzte Änderung am: 2022-11-11Feedback zu dieser SeitePanasonic Hotline