FP_SCALE

Exécuter une interpolation linéaire des valeurs discrètes

Cette instruction FP renvoie la valeur y en position x en exécutant une interpolation linéaire basée sur les points de référence voisins Pw(xw, yw) et Pw+1(xw+1, yw+1). Dans cet exemple, w est le point de référence le plus proche, dont la valeur x est inférieure à la valeur d’entrée s1_x, c.-à-d. que la fonction relie les points de référence en série et renvoie la valeur de sortie d_y basée sur la valeur d’entrée s1_x.

Paramètres

Entrée

s1_x

Valeur d’entrée

  • Sur les automates de type 16 bits : (INT, DINT, REAL)

  • Sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL, LREAL)

s2_xyData (DUT défini par l’utilisateur, INT, UINT, WORD (ANY16))

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

d_y

Résultat

  • Sur les automates de type 16 bits : (INT, DINT, REAL)

  • Sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL, LREAL)

Remarques

Exemples d’applications :

  • Linéariser des valeurs mesurées, par ex. avec des capteurs non-linéaires

  • Renvoyer la température de départ y d’un chauffage par rapport à la température extérieure x

Drapeaux d’erreur

sys_bIsOperationErrorHold (passe à TRUE et reste TRUE)
  • Si la zone spécifiée à l’aide du modificateur d’adresse est en dehors des limites autorisées.

  • Si le nombre de points de référence est en dehors de l’intervalle de 2–256.

  • Si s2_xyData est en dehors de l’intervalle autorisé

  • Si les valeurs x des points de référence ne sont pas dans l’ordre croissant.

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

  • Si le nombre de points de référence est en dehors de l’intervalle de 2–256.

  • Si s2_xyData est en dehors de l’intervalle autorisé

  • Si les valeurs x des points de référence ne sont pas dans l’ordre croissant.

Limites de la valeur de sortie y :

  • Lorsque la valeur d’entrée x est inférieure à la coordonnée x du premier point de référence (P1 : x< x1), la sortie y est définie sur la coordonnée y du premier point de référence (sortie y = y1, ligne horizontale pointillée dans le graphique, en haut à gauche).

  • Lorsque la valeur d’entrée x est supérieure à la coordonnée x du dernier point de référence (P8 : x > x8), la sortie y est définie sur la coordonnée y du dernier point de référence (y = y8, ligne horizontale pointillée dans le graphique, en haut à droite).

DUT pour les valeurs xy (points de référence P1, P2,...) :

Les points de référence (P1, P2,...) sont copiés vers la fonction via une variable de type DUT contenant le nombre de points de référence et les valeurs xy (nombre ;x1, x2,... ; y1, y2 ;...).

Structure du DUT défini par l’utilisateur :

  1. Élément : nombre de points de référence z (INT). Le nombre de points de référence (valeurs xy) peut être défini avec une valeur dans l’intervalle de 2–100. Dans le graphique, huit points de référence (P1P8) sont utilisés.
  2. Élément : variable du type de données ARRAY[1..z] OF INT (sur les automates de type 16 bits : INT, DINT, REAL ; sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL)) ou ARRAY[0..z-1] of INT (sur les automates de type 16 bits : INT, DINT, REAL ; sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL)) qui contient les valeurs x. z est ici le caractère générique du nombre de points de référence (voir entrée 1).

  3. Élément : variable du type de données ARRAY[1..z] OF INT (sur les automates de type 16 bits : INT, DINT, REAL ; sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL)) ou ARRAY[0..z-1] of INT (sur les automates de type 16 bits : INT, DINT, REAL ; sur les automates de type 32 bits : (INT, DINT, UINT, UDINT, REAL)) qui contient les valeurs y . z est ici le caractère générique du nombre de points de référence (voir entrée 1).

NOTA

FP_SCALE prend en charge les types de données suivants :

  • Sur les automates de type 16 bits (FP-Sigma, FP-X) : INT, DINT, REAL

  • Sur les automates de type 32 bits (FP7) : INT, DINT, REAL, UINT, UDINT

Thèmes apparentés

Instructions F correspondantes : F282_SCAL, F283_DSCAL, F354_FSCAL

Instructions système

Volet Instructions

Zones de mémoire

Types de données

Exemple

DUT

Un type de données structurées (DUT) peut être composé d’autres types de données. Un DUT est tout d’abord défini dans le gestionnaire de DUT et ensuite traité comme les autres types de données standard (BOOL, INT, etc.) dans la liste des variables globales ou l’en-tête du POU.

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
		bStart: BOOL:=FALSE;
		iInput: INT:=50;
		xy_data: xy_data_dut;
		iScaledOutput: INT:=0;
		@'': @'';
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable bStart est définie 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 := 6 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,4,2,6,4,);
B(B_F,FP_SCALE!,,17,1,25,6,,?DEN?Ds1_x?Ds2_xyData?AENO?Cd_y);
B(B_VARIN,,iInput,15,3,17,5,);
B(B_VAROUT,,iScaledOutput,25,3,27,5,);
B(B_VARIN,,xy_data.iNumberOfValues,15,4,17,6,);
L(1,0,1,6);
L(1,3,4,3);
L(6,3,17,3);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF (bStart) then
    FP_SCALE(s1_x := iInput, 
             s2_xyData := xy_data.iNumberOfValues, 
             d_y => iScaledOutput);
END_IF;

Modifié le : 2022-10-13Commentaires sur cette pageAssistance téléphonique