MOVE_BYTES바이트 데이터 이동
이 함수는 SourceData로 지정된 소스 데이터(소스 바이트 오프셋 iSourceByteOffset)에서 DestData로 지정된 대상 데이터(대상 바이트 오프셋 iDestByteOffset)까지 iNumberOfBytes로 지정된 바이트 수의 데이터를 이동합니다.
소스 바이트 오프셋 및 대상 바이트 오프셋은 0부터 시작하는 첫 번째 바이트를 기준으로 합니다.

입력
바이트를 가져온 소스 데이터
소스 데이터의 첫 번째 바이트(0부터 시작)을 기준으로 한 바이트 오프셋은 0 이상이어야 합니다.
소스 데이터에서 대상 데이터로 이동되는 바이트 수는 0 이상이어야 합니다
대상 데이터의 첫 번째 바이트(0부터 시작)을 기준으로 한 바이트 오프셋은 0 이상이어야 합니다.
입력/출력
바이트가 쓰인 대상 데이터
Control FPWIN Pro7이 액세스할 데이터의 유효성을 확인하지 않으므로 입력 데이터의 유효성을 확인하십시오.
소스 바이트 영역과 대상 바이트 영역이 겹치지 않도록 하십시오.

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

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
bMoveToWordBoundary 또는 bMoveFromWordBoundary 변수가 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
// 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;