F6_DGT

Déplacer des digits de données

Les digits hexadécimaux de données ou de constantes de 16 bits spécifiés par s sont copiés dans la zone de 16 bits spécifiée par d comme spécifié par n.

Paramètres

Entrée

s (WORD, INT, UINT)

Zone de 16 bits source

n (WORD, INT, UINT)

Indique la position des digits hexadécimaux source et de destination et le nombre de digits hexadécimaux

Sortie

d (WORD, INT, UINT)

Zone de 16 bits de destination

Remarques

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

  • Les digits sont des unités de 4 bits utilisées pour le transfert des données. Avec cette instruction, les données de 16 bits sont séparées en quatre digits. Les digits sont appelés dans l’ordre digit hexadécimal 0, digit 1, digit 2 et digit 3 à partir des quatre bits de poids faible :

    1. Données de 16 bits

    2. Bit

    3. Digit hexadécimal

  • n indique la position des digits hexadécimaux source (3), le nombre de digits à copier (2) et la position du digit hexadécimal de destination (1) :

    1.  (1) Destination : position de départ du digit hexadécimal

      0 Digit hexadécimal 0

      1 Digit hexadécimal 1

      2 Digit hexadécimal 2

      3 Digit hexadécimal 3

    2.  (2) Nombre de digits hexadécimaux à copier

      0 Copie d’1 digit hexadécimal (4 bits)

      1 Copie de 2 digits hexadécimaux (8 bits)

      2 Copie de 3 digits hexadécimaux (12 bits)

      3 Copie de 4 digits hexadécimaux (16 bits)

    3.  (3) Source : position de départ du digit hexadécimal

      0 Digit hexadécimal 0

      1 Digit hexadécimal 1

      2 Digit hexadécimal 2

      3 Digit hexadécimal 3

    Exemples de transfert de digits selon les indications de n

    • Avec n: 16#101, le digit hexadécimal 1 source est copié vers le digit hexadécimal 1 de destination.

    • Avec n: 16#003 (abrégé 16#3), le digit hexadécimal 3 source est copié vers le digit hexadécimal 0 de destination.

    • Avec n: 16#212, plusieurs digits hexadécimaux (digits hexadécimaux 2 et 3) source sont copiés vers plusieurs digits hexadécimaux (digits hexadécimaux 2 et 3) de destination.

    • Avec n: 16#210, plusieurs digits hexadécimaux (digits hexadécimaux 0 et 1) source sont copiés vers plusieurs digits hexadécimaux (digits hexadécimaux 2 et 3) de destination.

    • Avec n: 16#130, 4 digits hexadécimaux (digits hexadécimaux 0 à 3) source sont copiés vers 4 digits hexadécimaux (digits hexadécimaux 0 à 3) de destination.

Exemple

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
		start: BOOL:=FALSE;
		source: INT:=329;
			(*decimal 329 = 16#149*)
		specify_n: WORD:=16#111;
			(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
		output: INT:=0;
			(*16#140 = decimal 320*)
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable start est sur TRUE. Les valeurs de source et output dans le Monitoring de l’en-tête du corps du schéma à contacts ont été définies pour afficher la valeur hexadécimale en activant le bouton Hex dans la barre d’outils.

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_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF start then
    F6_DGT( s:= source,
         n:= specify_n,
         d=> output);
END_IF;

Corps en IL

Modifié le : 2023-05-19Commentaires sur cette pageAssistance téléphonique