MOVE_BYTES

Verschieben von Byte-Daten

Diese Funktion verschiebt eine Anzahl von Bytes, die mit iNumberOfBytes bezeichnet wird, von Quelldaten, die mit SourceData bezeichnet werden, mit einem Quellbyte-Offset iSourceByteOffset zu Zieldaten, die mit DestData bezeichnet werden, mit einem Zielbyte-Offset iDestByteOffset.

Der Quellbyte-Offset und der Zielbyte-Offset beziehen sich auf das erste Byte, beginnend bei 0.

Eingang

SourceData (ANY) alle einfachen und abgeleiteten Datentypen (ARRAYs, SDTs), die keine BOOL-Daten enthalten

Quelldaten, aus denen das Byte entnommen wird

iSourceByteOffset (INT, DINT, UINT, UDINT)

Byte-Offset relativ zum ersten Byte der Quelldaten, beginnend mit 0, muss größer oder gleich 0 sein

iNumberOfBytes (INT, DINT, UINT, UDINT)

Die Anzahl der Bytes, die von den Quelldaten zu den Zieldaten verschoben werden, muss größer oder gleich 0 sein

iDestByteOffset (INT, DINT, UINT, UDINT)

Byte-Offset relativ zum ersten Byte der Zieldaten, beginnend mit 0, muss größer oder gleich 0 sein

Ein-/Ausgang

DestData (ANY) alle einfachen und abgeleiteten Datentypen (ARRAYs, SDTs), die keine BOOL-Daten enthalten

Zieldaten, in die die Bytes geschrieben werden

Anmerkungen

  • Bitte überprüfen Sie die Gültigkeit der Eingabedaten, da Control FPWIN Pro7 die Gültigkeit der Daten, auf die zugegriffen wird, nicht überprüft.

  • Achten Sie darauf, dass sich der Quellbyte-Bereich und der Zielbyte-Bereich nicht überschneiden.

Beispiel

POE-Kopf

Im POE-Kopf werden alle Ein- und Ausgangsvariablen deklariert, die für die Programmierung dieser Funktion verwendet werden. Für alle Programmiersprachen wird der gleiche POE-Kopf verwendet.

	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

KOP-Rumpf

Wenn die Variable bMoveToWordBoundary oder bMoveFromWordBoundary auf TRUE gesetzt wird, wird die Funktion ausgeführt.

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

ST-Rumpf

// 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;

Letzte Änderung: 2025-06-05Feedback zu dieser SeitePanasonic Hotline