EXTRACT : copie d'une partie d'une variable dans une autre variable
Traduction de la notice originale
Description de la fonction
La fonction EXTRACT copie une partie d'une variable source (SRC) et la place dans une variable cible (DST).
NOTE : certaines parties de tableaux d'EBOOL et IODDTs ne peuvent pas être copiées, car le type de données de SRC et DST est ANY.
Les types de données des variables source et destination peuvent être différents.
Comme le type de données de SRC et DST est ANY et que vous pouvez copier n'importe quelle partie d'une variable dans une autre, il n'y a pas de vérification de validité pour l'opération de copie.
AVERTISSEMENT
COMPORTEMENT IMPREVU DE L'EQUIPEMENT
Vérifiez le résultat de toutes les variables modifiées avant de redémarrer l'application du processus.
Le non-respect de ces instructions peut provoquer la mort, des blessures graves ou des dommages matériels.
La taille mémoire de la variable source (SRC) est identifiée par le bloc fonction (en octets) de manière interne.
Selon l'alignement des plates-formes d'automate, la taille de la mémoire peut varier.
SRC_NELEM définit le nombre de parties de la variable source. La taille mémoire de la variable source (en octets) est divisée par SRC_NELEM pour définir la taille de chaque partie.
Exemple
Variable
SRC_NELEM
Taille de la partie
ARRAY[0..9] OF WORD
5
DWORD (4 octets)
10
WORD (2 octets)
20
BYTE
La valeur de SRC_NELEM doit permettre de diviser la taille mémoire de la variable source sans qu'il y ait de reste.
Le nombre d'éléments à copier (CPY_NELEM) dans la variable source part d'une position définie (SRC_POS) et est copié à une position définie dans la variable cible (DST_POS).
NOTE : SRC_POS et DST_POS définissent la position des parties à copier sur la base de 0 à n.
Exemple avec SRC_NELEM = 10
Variable
SRC_POS
Position dans ARRAY
ARRAY[0..9] OF WORD
2
2
ARRAY[5..14] OF WORD
2
7
Les paramètres supplémentaires EN et ENO peuvent être configurés.
Vous pouvez utiliser la fonction SIZEOF pour définir la valeur de l'entrée SRC_NELEM avec le nombre d'octets de la variable source.
Représentation en FBD
Représentation :
Représentation en LD
Représentation :
Représentation en IL
Représentation :
LD Array1_10_of_DDT
EXTRACT Source_Num_Ele, Source_Pos, Dest_Pos, Copy_Num_Ele, Array_1_20_of_DDT, Copy_Status
Représentation en ST
Représentation :
EXTRACT(Array1_10_of_DDT, Source_Num_Ele, Source_Pos, Dest_Pos, Copy_Num_Ele, Array1_20_of_DDT, Copy_Status);
Description des paramètres
Le tableau suivant décrit les paramètres d’entrée :
Paramètre
Type
Commentaire
Array1_10_of_DDT
ANY
Variable source dont un nombre défini de parties (Copy_Num_Ele) est copié vers la variable cible (Array_1_20_of_DDT).
Source_Num_Ele
UDINT
nombre de parties de la variable source
La taille mémoire de la variable source (en octets) est divisée par Source_Num_Ele pour définir la taille de chaque partie.
Source_Pos
UDINT
position de la première partie à copier dans la variable source
Cette position est basée sur 0 à n.
Dest_Pos
UDINT
position de la première partie à copier dans la variable cible
Cette position est basée sur 0 à n.
Copy_Num_Ele
UDINT
nombre de parties de la variable source copiées dans la variable cible
Le tableau suivant décrit le paramètre de sortie :
Paramètre
Type
Commentaire
Array_1_20_of_DDT
ANY
Variable cible dont un nombre défini de parties (Copy_Num_Ele) est copié depuis la variable source (Array_1_10_of_DDT).
ERR
INT
erreurs d’exécution
Pour les valeurs, voir le tableau ci-après
Erreurs détectees lors de l’exécution
Valeurs de ERR
Valeur
Description
0
Opération de copie réussie.
<0
paramètres non valides
La copie n'a pas été effectuée.
>0
Les paramètres sont suspects, mais valides.
Opération de copie effectuée.
-1
Nombre de parties de la source (SRC_NELEM) non défini.
-2
Le nombre de parties ne correspond pas à la taille de la variable source.
La taille mémoire de la variable source n'est pas divisible sans reste.
-3
SRC_POS est hors des limites de la variable source.
-4
DST_POS est hors des limites de la variable cible.
1
CPY_NELEM = 0, aucune partie à copier
Le paramètre est suspect, mais valide.
2
Toutes les parties n'ont pas pu être copiées dans la variable cible par manque de place. Les parties à copier ont été raccourcies.