F354_FSCAL

Interpolation linéaire des valeurs REAL discrètes

Cette fonction exécute une mise à l’échelle (linéarisation) d’un tableau de données en nombre réel et renvoie une valeur en sortie Y pour la valeur d’entrée X.

Paramètres

Entrée

x (REAL)

Valeur d’entrée X

xy_data (DUT défini par l’utilisateur)

Applique le premier élément du DUT défini par l’utilisateur, c.-à-d. le nombre de valeurs xy à cette entrée. Voir la description de la structure des DUT ci-dessous.

Sortie

y (REAL)

Valeur de sortie Y

Remarques

Au lieu d’utiliser cette instruction F, nous recommandons d’utiliser l’instruction FP7 correspondante : FP_SCALE

Pour en savoir plus, voir les instructions : F282_SCAL et F283_DSCAL.

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si l’adresse spécifiée utilisant le modificateur d’index est en dehors des limites autorisées.

  • Si la valeur d’entrée x n’est pas un nombre réel.

  • Si le nombre de valeurs (premier élément du DUT) < 2 ou > 99.

  • Si les valeurs xt, yt spécifiées dans 'xy_data' ne sont pas des nombres réels.

  • Si les données de 'xy_data' ne sont pas enregistrées dans l’ordre croissant de x.

  • Si les données de 'xy_data' sont en dehors de la zone autorisée.

  • Si la mise à l’échelle provoque un dépassement positif.

sys_bIsOperationErrorNonHold (passe à TRUE pendant un cycle)
  • Si l’adresse spécifiée utilisant le modificateur d’index est en dehors des limites autorisées.

  • Si la valeur d’entrée x n’est pas un nombre réel.

  • Si le nombre de valeurs (premier élément du DUT) < 2 ou > 99.

  • Si les valeurs xt, yt spécifiées dans 'xy_data' ne sont pas des nombres réels.

  • Si les données de 'xy_data' ne sont pas enregistrées dans l’ordre croissant de x.

  • Si les données de 'xy_data' sont en dehors de la zone autorisée.

  • Si la mise à l’échelle provoque un dépassement positif.

Exemple

DUT

Le type de données structurées est créé dans le gestionnaire de DUT.

En-tête du POU

Toutes les variables d’entrée et de sortie utilisées pour programmer cette fonction ont été déclarées dans l’en-tête du POU.

Le même en-tête de POU est utilisé pour tous les langages de programmation.

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

Corps du POU

La fonction est exécutée lorsque la variable CalculateY est sur TRUE.

Corps en LD

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

Corps en ST

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

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique