MOVE_BYTESMover datos de bytes
Esta función mueve una serie de bytes indicados por iNumberOfBytes desde los datos de origen indicados por SourceData con un offset de bytes de origen iSourceByteOffset a los datos de destino indicados por DestData con un offset de bytes de destino iDestByteOffset.
El offset de bytes de origen y el offset de bytes de destino son relativos al primer byte empezando por 0.

Entrada
Datos de origen de los que se obtiene el byte
Offset de bytes relativo al primer byte de los datos de origen a partir de 0, debe ser mayor o igual que 0
El número de bytes que se mueven de los datos de origen a los datos de destino, debe ser mayor o igual a 0
Offset de bytes relativo al primer byte de los datos de destino empezando por 0, debe ser mayor o igual que 0
Entrada/salida
Datos de destino en los que se escriben los bytes
Comprobar la validez de los datos introducidos, ya que Control FPWIN Pro7 no comprueba la validez de los datos a los que se accede.
Asegurarse de que el área de bytes de origen y el área de bytes de destino no se solapan.

Todas las variables de entrada y de salida utilizadas para la programación de esta función han sido declaradas en la Cabecera de la POU. Se utiliza la misma cabecera de la POU para todos los lenguajes de programación.

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
Cuando la variable bMoveToWordBoundary o bMoveFromWordBoundary se encuentra en TRUE, se ejecuta la función.

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;