비트 데이터 이동
이 FP 명령은 트리거 EN이 TRUE이면 비트 데이터를 s1_Start 및 s2_End에서 지정한 비트 데이터 영역에서 d_Start에서 지정한 비트 데이터 영역에서 시작되는 비트 데이터 블록으로 이동합니다.
입력
소스 비트 데이터 영역의 시작 어드레스
소스 비트 데이터 영역의 종료 어드레스
출력
대상 비트 데이터 영역의 시작 어드레스
입력 변수와 출력 변수의 데이터 형식은 동일해야 합니다.
오퍼랜드 s1_Start 및 s2_End는 다음과 같아야 합니다.
같은 메모리 영역에 있어야 합니다(예: DT, WR, FL, LD...).
s1_Start £ s2_End
s1_Start > s2_End인 경우
해당 F 명령: 2020-02-21F5_BTM 비트 데이터 이동
글로벌 변수 리스트에서 프로젝트의 모든 POU에서 액세스할 수 있는 변수를 정의합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bStart: BOOL:=FALSE;
(*activates the function*)
END_VAR
VAR_EXTERNAL
bStartAddress: BOOL:=FALSE;
bEndAddress: BOOL:=FALSE;
bTargetAddress: BOOL:=FALSE;
END_VAR
변수 bStart가 TRUE로 설정되면 펑션이 실행됩니다. 비트 X1~X8을 타겟 영역 YD~Y14로 이동합니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
B(B_F,FP_MOVE_BITS!,,13,1,22,6,,?DEN?Ds1_Start?Ds2_End?AENO?Cd_Start);
B(B_CONTACT,,bStart,6,2,8,4,);
B(B_VARIN,,bStartAddress,11,3,13,5,);
B(B_VARIN,,bEndAddress,11,4,13,6,);
B(B_VAROUT,,bTargetAddress,22,3,24,5,);
L(1,3,6,3);
L(8,3,13,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
If (bStart) then
FP_MOVE_BITS(s1_Start := bStartAddress, s2_End := bEndAdress, d_Start => bTargetAddress);
End_if;