FP_ENCODE

Codage état du bit -> nombre hexadécimal

Cette instruction FP code le contenu des données spécifiées par s1_Start en fonction du contenu de s2_Control lorsque le déclencheur EN est TRUE. Le résultat du codage est sauvegardé dans la zone de destination de 16 bits désignée par d_Start à partir de la position du bit indiquée. Les bits invalides dans la zone de données pour le résultat du codage sont remplis avec des zéros.

FP_ENCODE est l’instruction inverse de FP_DECODE.

Paramètres

Entrée

s1_Start (WORD)

Zone de départ de 16 bits qui doit être codée (source)

s2_Control (WORD)

Données de contrôle pour indiquer la position du bit de départ et le nombre de bits qui doivent être codés

Sortie

d_Start (WORD)

Zone de 16 bits dans laquelle les données codées vont être sauvegardées (destination)

Remarques

  • Les variables s1_Start, s2_Control et d_Start doivent être du même type de données.

  • Exemple avec s2_Control=16#0005

    16#

    0

    0

    0

    5

     

    Nombre de bits qui doivent être codés : 25=32 bits

    Position du bit de départ des données qui doivent être codées : position du bit 0

    1.  (1) Source
    2.  (2) Position du bit
    3.  (3) 32 bits comme spécifié par 16#0005
    4.  (4) Le 8e bit des données 32 bits est TRUE.
    5.  (5) Destination

      Le résultat du codage 8 (décimal) est enregistré dans d_Start lorsque le déclencheur EN est TRUE.

    6.  (6) Position du bit de départ
    7.  (7) Les positions des bits 8 à 15 sont remplies avec des 0.
    8.  (8) Résultat du codage : 8

    Description du process

    Le contenu du segment de bit 2^nL au début de la zone spécifiée par s1_Start est codé (nL désignant le nombre de bits à coder).

    Le résultat du codage est sauvegardé en tant que données décimales dans les huit bits à partir du bit spécifié comme étant le bit nH (nH désignant le bit de départ de la conversion). Les bits invalides dans la zone spécifiée pour le résultat sont remplis avec des zéros.

    Description de s2_Control

    s2_Control désigne la position du bit de départ des données de destination et le nombre de bits qui doivent être codés avec des données hexadécimales :

    1.  (1) Données de 16 bits
    2.  (2) Nombre de bits 0–15

    Les bits marqués par "-" sont invalides.

     

    Valeur paramétrée

    16#0–16#F

    (3)

    Position du bit de départ des données de destination codées

     

    Valeur paramétrée

    16#0–16#8

    (4)

    Nombre de bits codés

    16#0

    0

     

    16#1

    2

    16#1

    1

    16#2

    4

    16#2

    2

    16#3

    8 (1 octet)

    16#3

    3

    16#4

    16 (1 mot)

    16#4

    4

    16#5

    32 (2 mots)

    16#5

    5

    16#6

    64 (4 mots)

    16#6

    6

    16#7

    128 (8 mots)

    16#7

    7

    16#8

    256 (16 mots)

    16#8

    8

    16#9

    9

    16#A

    10

    16#B

    11

    16#C

    12

    16#D

    13

    16#E

    14

    16#F

    15

    Exemple de données codées

    Lorsque des données 16 bits (nL=4) sont codées, le résultat du codage est comme indiqué ci-dessous.

    Données à coder (4 bits)

    Résultat du codage

    Hex.

    Déc.

    0000 0000 0000 0001

    16#0000

    0

    0000 0000 0000 0010

    16#0001

    1

    0000 0000 0000 0100

    16#0010

    2

    0000 0000 0000 1000

    16#0011

    3

    0000 0000 0001 0000

    16#0100

    4

    0000 0000 0010 0000

    16#0101

    5

    0000 0000 0100 0000

    16#0110

    6

    0000 0000 1000 0000

    16#0111

    7

    0000 0001 0000 0000

    16#1000

    8

    0000 0010 0000 0000

    16#1001

    9

    0000 0100 0000 0000

    16#1010

    10

    0000 1000 0000 0000

    16#1011

    11

    0001 0000 0000 0000

    16#1100

    12

    0010 0000 0000 0000

    16#1101

    13

    0100 0000 0000 0000

    16#1110

    14

    1000 0000 0000 0000

    16#1111

    15

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 1 £ nL £ 8, nL désignant le nombre de bits qui doivent être codés/décodés.

  • Si 1 £ nH + nL £ 16, nH désignant le bit de départ de la conversion et nL désignant le nombre de bits qui doivent être codés/décodés.

  • Si les données à encoder sont toutes "0".

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 1 £ nL £ 8, nL désignant le nombre de bits qui doivent être codés/décodés.

  • Si 1 £ nH + nL £ 16, nH désignant le bit de départ de la conversion et nL désignant le nombre de bits qui doivent être codés/décodés.

  • Si les données à encoder sont toutes "0".

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
		bStart: BOOL:=FALSE;
			(*activates the function*)
		wInput_value: WORD:=2#0000000001000000;
		wControlCode: WORD:=16#0003;
			(*specifies the encodation*)
		wOutput_value: WORD:=0;
			(*result after a 0->1 leading
edge from start:
2#0000000000000110*)
	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 := 5 ;
        NETWORK_BODY
B(B_CONTACT,,bStart,6,1,8,3,);
B(B_VARIN,,wInput_value,10,2,12,4,);
B(B_VARIN,,wControlCode,10,3,12,5,);
B(B_VAROUT,,wOutput_value,20,2,22,4,);
B(B_F,FP_ENCODE!,,12,0,20,5,,?DEN?Ds1_Start?Ds2_Control?AENO?Cd_Start);
L(1,2,6,2);
L(8,2,12,2);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF bStart then
    FP_ENCODE(s1_Start := wInput_value, 
              s2_Control := wControlCode, 
              d_Start => wOutput_value);
END_IF;

Modifié le : 2024-03-14Commentaires sur cette pageAssistance téléphonique