MOVE_BYTES

Sposta dati del byte

Questa funzione sposta un numero di byte indicato da iNumberOfBytes dai dati di origine indicati da SourceData con un offset del byte di origine iSourceByteOffset ai dati di destinazione indicati da DestData con un offset del byte di destinazione iDestByteOffset.

L'offset del byte di origine e l'offset del byte di destinazione sono relativi al primo byte a partire da 0.

Ingresso

SourceData (ANY) tutti i tipi di dati semplici e derivati (ARRAY, DUT) che non contengono dati BOOL

Dati di origine da cui proviene il byte

iSourceByteOffset (INT, DINT, UINT, UDINT)

Offset di byte rispetto al primo byte dei dati di origine a partire da 0, deve essere maggiore o uguale a 0

iNumberOfBytes (INT, DINT, UINT, UDINT)

Il numero di byte che vengono spostati dai dati di origine a quelli di destinazione deve essere maggiore o uguale a 0

iDestByteOffset (INT, DINT, UINT, UDINT)

Offset del byte relativo al primo byte dei dati di destinazione a partire da 0, deve essere maggiore o uguale a 0

Ingresso/uscita

DestData (ANY) tutti i tipi di dati semplici e derivati (ARRAY, DUT) che non contengono dati BOOL

Dati di destinazione in cui i byte vengono scritti

Note

  • Si prega di verificare la validità dei dati di ingresso, poiché Control FPWIN Pro7 non controlla la validità dei dati a cui si accede.

  • Assicurarsi che l'area dei byte di origine e l'area dei byte di destinazione non si sovrappongano.

Esempio

Intestazione del POU

Tutte le variabili di ingresso e uscita utilizzate per programmare questa funzione sono state dichiarate nell'intestazione del POU. La stessa intestazione del POU è utilizzata per tutti i linguaggi di programmazione.

	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

Corpo LD

Quando la variabile bMoveToWordBoundary o bMoveFromWordBoundary è impostata su TRUE, la funzione viene eseguita.

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

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

L'ultima revisione: 2025-06-05Feedback su questa paginaPanasonic hotline