F119_LRSR

Registre à décalage bidirectionnel (gauche/droite)

Décale un bit de la zone de données de 16 bits vers la gauche ou vers la droite.

Paramètres

Entrée

LeftDirection (BOOL)

Déclencheur droite/gauche : indique la direction du décalage

  • TRUE : décalage vers la gauche
  • FALSE : décalage vers la droite
DataInput (BOOL)

Indique l’état du signal pour le décalage.

  • État du signal = TRUE = 1 : lorsque l’entrée est TRUE

  • État du signal = FALSE = 0 : lorsque l’entrée est FALSE
ShiftTrigger (BOOL)

Active le décalage.

Décale un bit vers la gauche ou vers la droite lorsque le front montant du déclencheur est détecté (FALSE®TRUE).

Reset (BOOL)

Met tous les bits de la zone de données spécifiée par d1_Start et d2_End à zéro lorsque le déclencheur est TRUE.

Réinitialise les données dans la zone spécifiée par d1_Start et d2_End.

d2_End (WORD, INT, UINT)

Adresse de fin de la zone de 16 bits

d1_Start (WORD, INT, UINT)

Adresse de départ de la zone de 16 bits

Sortie

Carry (BOOL)

Bit décalé

Exemple

  1. Décalage vers la gauche

  2. Bit décalé transféré vers R9009 (drapeau "retenu").

  3. LeftDirection : TRUE ; ShiftTrigger : FALSE, TRUE

  4. Lorsque DataInput est TRUE, “1” est décalé vers la position du bit 0.

  5. Lorsque DataInput est FALSE, “0” est décalé vers la position du bit 0.

  6. Décalage vers la droite

  7. LeftDirection : FALSE ; ShiftTrigger : FALSE, TRUE

  8. Bit décalé transféré vers R9009 (drapeau "retenu").

  9. Lorsque DataInput est TRUE, “1” est décalé vers la position du bit 15.

  10. Lorsque DataInput est FALSE, “0” est décalé vers la position du bit 15.

Remarques

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

  • Cette fonction n’a pas besoin de variable en sortie Carry.

  • Ce registre à décalage bidirectionnel permet de décaler 1 bit de la zone de données spécifiée vers la gauche (décalage en direction du bit de poids fort). ou vers la droite (décalage en direction du bit de poids fort).

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
		data_array: ARRAY [0..2] OF INT:=[2#0000000000000001,2#0011111111111111,2#0011111111111110];
		enable_leftShift: BOOL:=FALSE;
			(*function shifts left if TRUE,
else it shifts right*)
		reset: BOOL:=FALSE;
			(*if TRUE, the whole array
will be set to zero*)
		input: BOOL:=TRUE;
			(*specifies the new shift-in data*)
		shift_trigger: BOOL:=FALSE;
			(*activates the function at a 0->1
leading edge*)
		carry_out_value: BOOL:=FALSE;
			(*result after a 0->1 leading edge
from shift_trigger: 1.
After the next cycle the value will be
set back to zero.*)
	END_VAR

Corps du POU

Lorsque la variable enable_leftShift est sur TRUE, la fonction décale vers la gauche sinon vers la droite.

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 := 9 ;
        NETWORK_BODY
B(B_F,F119_LRSR!,Instanz,12,1,22,9,,?DLeftDirection?DDataInput?DShiftTrigger?DReset?Dd1_Start?Dd2_End?ACarry);
B(B_CONTACT,,enable_leftShift,7,2,9,4,);
B(B_VARIN,,input,9,3,11,5,);
B(B_VARIN,,shift_trigger,9,4,11,6,);
B(B_VARIN,,reset,9,5,11,7,);
B(B_VARIN,,data_array[0],9,6,11,8,);
B(B_VARIN,,data_array[2],9,7,11,9,);
B(B_VAROUT,,carry_out_value,22,2,24,4,);
L(1,3,7,3);
L(9,3,12,3);
L(11,4,12,4);
L(11,5,12,5);
L(11,6,12,6);
L(11,7,12,7);
L(11,8,12,8);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

carry_out_value:=F119_LRSR( LeftDirection:= enable_leftShift,
         DataInput:= input,
         ShiftTrigger:= shift_trigger,
         Reset:= reset,
         d1_Start:= data_array[0],
         d1_End:= data_array[2]);

Modifié le : 2021-08-09Commentaires sur cette pageAssistance téléphonique