SHL

Décaler des bits vers la gauche

SHL décale une valeur en bits d’un nombre de positions défini (N) vers la gauche et remplit les positions vacantes avec des zéros.

Décalage de bits vers la gauche, remplissage à droite avec des zéros :

  1.  (1) Position du bit
  2.  (2) Registre de destination
  3.  (3) (n = 4 bits)
  4.  (4) n bits à partir de la position du bit 0 ont la valeur 0.

Paramètres

Entrée

IN (BOOL, WORD, DWORD)

1e entrée : valeur d’entrée

N (BOOL, WORD, DWORD)

2e entrée : nombre de bits selon lequel la valeur d’entrée est décalée vers la gauche

Sortie

Var_OUT (BOOL, WORD, DWORD)

Sortie comme entrée : résultat

NOTA

Si la 2e variable d’entrée N (nombre de bits à décaler) est du type de données DWORD, seuls les 16 bits de poids faible sont pris en compte.

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
		source_register: WORD:=0;
		target_register: WORD:=0;
	END_VAR

Cet exemple utilise des variables. Vous pouvez également utiliser une constante pour la variable d’entrée.

Corps en LD

Les premiers N bits (ici 4) de source_register sont décalés vers la gauche, les positions vacantes à droite sont complétées par des zéros Le résultat est écrit dans target_register.

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,SHL!,Instance,9,1,14,5,,?DIN?DN?C);
B(B_VARIN,,source_register,7,2,9,4,);
B(B_VARIN,,4,7,3,9,5,);
B(B_VAROUT,,target_register,14,2,16,4,);
L(1,0,1,5);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en IL

LD

source_register

SHL

4

ST

target_register

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