FP_MOVE_BITS

Déplacer des données en bits

Cette instruction FP déplace des données en bits de la zone de données en bits, spécifiée par s1_Start et s2_End, vers le bloc de données en bits spécifié par d_Start, lorsque le déclencheur EN est TRUE.

Paramètres

Entrée

s1_Start (BOOL)

Adresse de départ de la zone source des données en bits

s2_End (BOOL)

Adresse de fin de la zone source des données en bits

Sortie

d_Start (BOOL)

Adresse de départ de la zone de destination des données en bits

Remarques

  • Les variables d’entrée et de sortie doivent être du même type de données.

  • Les opérandes s1_Start et s2_End doivent être ainsi :

    • Dans la même zone mémoire, par ex. DT, WR, FL, LD,...

    • s1_Start £ s2_End

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 s1_Start > s2_End

Thèmes apparentés

Exemple

GVL

Dans la liste des variables globales, vous définissez des variables qui sont accessibles par tous les POU dans le projet.

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*)
	END_VAR
	VAR_EXTERNAL
		bStartAddress: BOOL:=FALSE;
		bEndAddress: BOOL:=FALSE;
		bTargetAddress: BOOL:=FALSE;
	END_VAR

Corps du POU

La fonction est exécutée lorsque la variable bStart est définie sur TRUE. Elle déplace les bits X1–X8 vers la zone de destination YD–Y14.

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,FP_MOVE_BITS!,,13,1,22,6,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_CONTACT,,bStart,6,2,8,4,);
B(B_VARIN,,bStartAddress,11,3,13,5,);
B(B_VARIN,,bEndAddress,11,4,13,6,);
B(B_VAROUT,,bTargetAddress,22,3,24,5,);
L(1,3,6,3);
L(8,3,13,3);
L(1,0,1,6);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

If (bStart) then
    FP_MOVE_BITS(s1_Start := bStartAddress, s2_End := bEndAdress, d_Start => bTargetAddress);
End_if;

Modifié le : 2019-08-26Commentaires sur cette pageAssistance téléphonique