MOVE_BYTESSposta 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
Dati di origine da cui proviene il byte
Offset di byte rispetto al primo byte dei dati di origine a partire da 0, deve essere maggiore o uguale a 0
Il numero di byte che vengono spostati dai dati di origine a quelli di destinazione deve essere maggiore o uguale a 0
Offset del byte relativo al primo byte dei dati di destinazione a partire da 0, deve essere maggiore o uguale a 0
Ingresso/uscita
Dati di destinazione in cui i byte vengono scritti
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.

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