F354_FSCAL

Linearinterpolation diskreter REAL-Werte

Die Funktion ermittelt an der Stelle X den Funktionswert Y durch lineare Interpolation zwischen den benachbarten Stützstellen. Die Funktion kann REAL-Zahlen verarbeiten.

Parameter

Eingang

x (REAL)

Eingangswert X

xy_data (benutzerdefinierter SDT)

Ordnen Sie diesem Eingang das erste Element des benutzerdefinierten SDT zu, d.h. die Anzahl der xy-Werte. Siehe Beschreibung der SDT-Struktur unten.

Ausgang

y (REAL)

Ausgangswert Y

Anmerkungen

Wir empfehlen, anstelle von diesem F-Befehl den entsprechenden FP7-Befehl zu verwenden: FP_SCALE

Weitere Informationen zu dieser Funktion enthalten die Hilfetexte zu: F282_SCAL und F283_DSCAL.

Fehleralarmmerker

sys_bIsOperationErrorHold (wird auf TRUE gesetzt und bleibt TRUE)
  • wenn die mit Indexmodifizierern definierte Adresse den zulässigen Bereich überschreitet.

  • wenn für x eine nicht-reelle Zahl eingegeben wird

  • wenn die Zahl der Wertepaare (erstes SDT-Element) <2 oder >99 ist.

  • wenn für xy_data ein nicht-reeller Wert (xt, yt) angegeben wird

  • wenn die für xy_data angegebenen Werte nicht der aufsteigenden Reihenfolge der x-Werte entsprechen

  • wenn die Werte für xy_data den zulässigen Bereich überschreiten

  • wenn es bei der Interpolation zu einem Berechnungsüberlauf kommt.

sys_bIsOperationErrorNonHold (wird für einen Zyklus auf TRUE gesetzt)
  • wenn die mit Indexmodifizierern definierte Adresse den zulässigen Bereich überschreitet.

  • wenn für x eine nicht-reelle Zahl eingegeben wird

  • wenn die Zahl der Wertepaare (erstes SDT-Element) <2 oder >99 ist.

  • wenn für xy_data ein nicht-reeller Wert (xt, yt) angegeben wird

  • wenn die für xy_data angegebenen Werte nicht der aufsteigenden Reihenfolge der x-Werte entsprechen

  • wenn die Werte für xy_data den zulässigen Bereich überschreiten

  • wenn es bei der Interpolation zu einem Berechnungsüberlauf kommt.

Beispiel

SDT

Der SDT wird im SDT-Pool definiert.

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
		CalculateY: BOOL:=FALSE;
		X_value: REAL:=4.0;
		Y_value: REAL:=0.0;
		XY_values: XY_DUT;
		@'': @'';
	END_VAR
	VAR_EXTERNAL
		ProcessData: ProcessDataStructure;
	END_VAR
	VAR
		@'': @'';
	END_VAR

POE-Rumpf

Wenn die Variable CalculateY auf TRUE gesetzt wird, wird die Funktion ausgeführt.

KOP-Rumpf

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
        ACTIVE_NETWORK := 0 ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 5 ;
        NETWORK_BODY
B(B_VARIN,,CalculateY,10,1,12,3,);
B(B_VARIN,,X_value,10,2,12,4,);
B(B_VARIN,,XY_values.Number,10,3,12,5,);
B(B_VAROUT,,Y_value,19,2,21,4,);
B(B_F,F354_FSCAL!,Instance,12,0,19,5,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST-Rumpf

IF start then
    F354_FSCAL(x := X_value, xy_data := XY_values.Number, y => Y_value);
END_IF;

Letzte Änderung am: 2021-07-28Feedback zu dieser SeitePanasonic Hotline