MOVE_BYTES

Déplacer des données d’octet

Cette fonction déplace un nombre d’octets indiqué par iNumberOfBytes à partir de données source spécifiées par SourceData avec un offset d’octet source iSourceByteOffset vers des données de destination indiquées par DestData avec un offset d’octet de destination iDestByteOffset.

L’offset d’octet source et l’offset d’octet de destination sont relatifs au premier octet à partir de 0.

Entrée

SourceData (ANY) tous les types de données simples et dérivés (ARRAYs, DUTs) qui ne contiennent pas de données BOOL

Données source à partir desquelles l’octet est lu

iSourceByteOffset (INT, DINT, UINT, UDINT)

Offset d’octet par rapport au premier octet (n°0) des données source, doit être supérieur ou égal à 0

iNumberOfBytes (INT, DINT, UINT, UDINT)

Le nombre d’octets qui doit être déplacé des données source vers les données de destination doit être supérieur ou égal à 0.

iDestByteOffset (INT, DINT, UINT, UDINT)

Offset d’octet par rapport au premier octet (n°0) des données de destination, doit être supérieur ou égal à 0

Entrée/sortie

DestData (ANY) tous les types de données simples et dérivés (ARRAYs, DUTs) qui ne contiennent pas de données BOOL

Données de destination vers lesquelles les octets sont écrits.

Remarques

  • Vérifiez la validité des données d’entrée, car Control FPWIN Pro7 ne contrôle pas la validité des données lues ou écrites.

  • Veillez à ce que la zone d’octets source et la zone d’octets de destination ne se superposent pas.

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
		bMoveToWordBoundary: BOOL:=FALSE;
		awSourceByteData: ARRAY [0..7] OF WORD:=[16#6160,16#6362,16#6564,16#6766,16#6968,16#6b6a,16#6d6c,16#6f6e];
		awDestByteData: ARRAY [0..7] OF WORD:=[8(16#FFFF)];
		iSourceByteOffset3: INT:=3;
		iDestByteOffset9: INT:=9;
		iNumberOfBytes5: INT:=5;
		iNumberOfBytes4: INT:=4;
		bMoveFromWordBoundary: BOOL:=FALSE;
	END_VAR

Corps en LD

La fonction est exécutée, lorsque la variable bMoveToWordBoundary ou bMoveFromWordBoundary est sur TRUE.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COMMENT,,Move bytes to word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveToWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,iSourceByteOffset3,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes5,17,6,19,8,);
B(B_VARIN,,2,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
        END_NETWORK_BODY
    END_NET_WORK
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 10 ;
        NETWORK_BODY
B(B_COMMENT,,Move bytes from word boundary:,1,0,29,1,);
B(B_CONTACT,,bMoveFromWordBoundary,8,3,10,5,);
B(B_F,E_MOVE_BYTES!,,19,2,30,10,,?DEN?DSourceData?DiSourceByteOffset?DiNumberOfBytes?DiDestByteOffset?DDestData?ADestData?AENO);
B(B_VARIN,,awSourceByteData,17,4,19,6,);
B(B_VARIN,,2,17,5,19,7,);
B(B_VARIN,,iNumberOfBytes4,17,6,19,8,);
B(B_VARIN,,iDestByteOffset9,17,7,19,9,);
B(B_VARIN,,awDestByteData,17,8,19,10,);
L(1,0,1,10);
L(1,4,8,4);
L(10,4,19,4);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

Corps en ST

// Move bytes to word boundary:
if (bMoveToWordBoundary) then
	MOVE_BYTES(	SourceData := awSourceByteData, 
				iSourceByteOffset := iSourceByteOffset3, 
				iNumberOfBytes := iNumberOfBytes5, 
				iDestByteOffset := 2, 
				DestData := awDestByteData);
end_if;

// Move bytes from word boundary:
if (bMoveFromWordBoundary) then
	MOVE_BYTES(	SourceData := awSourceByteData, 
				iSourceByteOffset := 2, 
				iNumberOfBytes := iNumberOfBytes4, 
				iDestByteOffset := iDestByteOffset9, 
				DestData := awDestByteData);
end_if;

Modifié le : 2025-06-05Commentaires sur cette pageAssistance téléphonique