F5_BTM

Déplacement de données bit

1 bit de données ou de constantes de 16 bits spécifiées par s est copié vers un bit de la zone de données de 16 bits désignée par d en fonction du contenu de n, lorsque le déclencheur EN est TRUE. Lorsque s contient une constante sur 16 bits, le déplacement du bit n’est exécuté qu’après conversion de la constante en expression binaire sur 16 bits.

Paramètres

Entrée

s (WORD, INT, UINT)

Zone de 16 bits source

n (WORD, INT, UINT)

Indique les positions du bit source et de destination

Sortie

d (WORD, INT, UINT)

Zone de 16 bits de destination

Exemple

Explication avec la valeur source s=16#8888, position du bit source 02 et position du bit de destination 0F définies par n=16#0F02

  1.  (1) Valeur source 16#8888 avec la position du bit source 02
  2.  (2) Valeur destination 16#FFFF avec la position du bit de destination 15
  3.  (3) Résultat 16#7FFF avec bit 02 décalé vers le bit 15

Remarques

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

  • Les variables s et d doivent être du même type de données.

  • L’opérande n désigne le n° du bit comme suit :

    16#

    0

    F

    0

    2

     

    Position du bit source

    Position du bit de destination

    Bits N° 0 à 3

    N° du bit source (16#0 à 16#F)

    Bits N° 4 à 7

    FP2/2SH et 10SH : nombre de bits à transférer (16#0 à 16#F)

    FP3 : invalide

    Bits N° 8 à 11

    N° du bit de destination (16#0 à 16#F)

    Bits N° 12 à 15

    Invalide

    Par exemple, en lisant de droite à gauche, n = 16#C01 déplacera un bit de la position un à la position 12 (16#C).

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;
			(*activates the function*)
		input_value: WORD:=2#1000100010001000;
		copy_operand: WORD:=16#0F02;
			(*digit no.1 and no.3 are invalid, digit no.0 locates
the position of the source bit (here: 2),
digit no.2 locates the position of the destination bit
(here: 15)*)
		output_value: WORD:=2#1111111111111111;
			(*result after a 0->1 leading
edge from start:
2#0111111111111111*)
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable start 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 := 6 ;
        NETWORK_BODY
B(B_F,F5_BTM,,12,0,19,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_CONTACT,,start,8,1,10,3,);
B(B_VARIN,,input_value,10,2,12,4,);
B(B_VARIN,,copy_operand,10,3,12,5,);
B(B_VAROUT,,output_value,19,2,21,4,);
L(1,2,8,2);
L(10,2,12,2);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF start then
    F5_BTM( s:= input_value,
         n:= copy_operand,
         d=> output_value);
END_IF;

Corps en IL

LD

start

(* EN = start; Starting signal for the F5_BTM function. *)

F5_BTM

input_value, copy_operand, output_value

(* s = input_value (source) *)

(* n = copy_operand; e.g. Var_1 = 16#0A0B *)

(* 11 source bit (B) Þ 10 destination bit (A) *)

(* d = output_value (destination) *)

ST

out

(* option *)

Modifié le : 2024-10-08Commentaires sur cette pageAssistance téléphonique