FP_ROL_CARRY

Rotation des données à gauche avec drapeau de retenue

Cette instruction FP effectue une rotation à gauche des données spécifiées par d (vers le bit de poids fort) et selon le nombre de bits spécifié par n_Bits, incluant les données du drapeau de retenue lorsque le déclencheur EN est TRUE.

Paramètres

Entrée

n_Bits (WORD, INT, UINT)

Nombre de bits

Valeurs : 0–255

Entrée/sortie

d (WORD, DWORD)

Données soumises à rotation

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.

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.

sys_bIsCarry (passe à TRUE pendant un cycle)
  • Si d= données de 16 bits et n_Bits est soit 0 soit un multiple de 17, aucune rotation n’est exécutée et le drapeau de retenue reste inchangé.

  • Si d= données de 32 bits et n_Bits est soit 0 soit un multiple de 33, aucune rotation n’est exécutée et le drapeau de retenue reste inchangé.

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*)
		wRotate_value: WORD:=16#1234;
	END_VAR

Corps en LD

La fonction est exécutée lorsque la variable bStart est définie sur TRUE.

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,FP_ROL_CARRY!,,11,1,20,6,,?DEN?Dn_Bits?Dd?Ad?AENO);
B(B_CONTACT,,bStart,3,2,5,4,);
B(B_VARIN,,4,9,3,11,5,);
B(B_VARIN,,wRotate_value,9,4,11,6,);
L(1,3,3,3);
L(5,3,11,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

IF DF(start) then
    FP_ROL_CARRY(n_Bits := 4, d := wRotate_value);
END_IF;

Modifié le : 2022-10-12Commentaires sur cette pageAssistance téléphonique