자릿수 데이터 이동
16비트 데이터 또는 s에서 지정한 16비트 동등 정수의 16진수 숫자는 n에서 지정한 대로 d에서 지정한 16비트 영역에 복사됩니다.
입력
소스 16비트 영역
소스 및 대상 16진수 숫자 위치와 16진수 숫자 수를 지정합니다.
출력
대상 16비트 영역
F 명령을 사용하는 대신 해당 FP7 명령을 사용하는 것이 좋습니다.FP_MOVE_DIGITS 숫자 데이터 이동
자릿수는 데이터 처리 시 사용되는 4비트 단위입니다. 이 명령을 사용하면 16비트 데이터가 4자리로 구분됩니다. 최하위 4비트부터 16진수 숫자 0, 숫자 1, 숫자 2, 숫자 3의 순서대로 호출됩니다.
16비트 데이터
비트
16진수 숫자
n은 (3) 소스 16진수 숫자 위치, 자릿수(2) 및 다음과 같이 16진수 데이터를 사용하여 복사될 (1) 대상 16진수 숫자 위치를 지정합니다.
0 16진수 숫자 0
1 16진수 숫자 1
2 16진수 숫자 2
3 16진수 숫자 3
0 16진수 숫자 1개(4비트)를 복사합니다.
1 16진수 숫자 2개(8비트)를 복사합니다.
2 16진수 숫자 3개(12비트)를 복사합니다.
3 16진수 숫자 4개(16비트)를 복사합니다.
0 16진수 숫자 0
1 16진수 숫자 1
2 16진수 숫자 2
3 16진수 숫자 3
다음은 n의 사양에 따른 숫자 전송 패턴입니다.
소스의 16진수 숫자 1이 대상의 16진수 숫자 1에 복사되는 경우 n: 16#101을 지정합니다.
소스의 16진수 숫자 3이 대상의 16진수 숫자 0에 복사되는 경우 n: 16#003(축약형: 16#3)을 지정합니다.
소스의 복수 16진수 숫자(16진수 숫자 2와 3)가 대상의 복수 16진수 숫자(16진수 숫자 2와 3)에 복사되는 경우 n: 16#212를 지정합니다.
소스의 복수 16진수 숫자(16진수 숫자 0과 1)가 대상의 복수 16진수 숫자(16진수 숫자 2와 3)에 복사되는 경우 n: 16#210를 지정합니다.
소스의 16진수 숫자 4개(16진수 숫자 0과 3)가 대상의 16진수 숫자 4개(16진수 숫자 0과 3)에 복사되는 경우 n: 16#130를 지정합니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
start: BOOL:=FALSE;
source: INT:=329;
(*decimal 329 = 16#149*)
specify_n: WORD:=16#111;
(*Beginning from the end:
1: first hex. digit is digit 1, i.e. 4
1: copies 2 hex. digits, i.e. 14
1: destination is hex. digit 1*)
output: INT:=0;
(*16#140 = decimal 320*)
END_VAR
변수 start가 TRUE로 설정되면 펑션이 실행됩니다. 사다리 다이어그램의 [헤더 모니터]에서 source 및 output의 값이 도구 모음에서 [16진수] 버튼을 활성화하여 16진수 값을 표시하도록 설정되었습니다.
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 5 ;
NETWORK_BODY
B(B_F,F6_DGT!,Instance,12,0,18,5,,?DEN?D@'s'?Dn?AENO?Cd);
B(B_VARIN,,source,8,2,10,4,);
B(B_VARIN,,specify_n,8,3,10,5,);
B(B_VAROUT,,output,18,2,20,4,);
B(B_CONTACT,,start,6,1,8,3,);
L(10,3,12,3);
L(10,4,12,4);
L(8,2,12,2);
L(1,2,6,2);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F6_DGT( s:= source,
n:= specify_n,
d=> output);
END_IF;