8자리 BCD 나누기, 대상 지정 가능
결과는 d에서 지정한 영역에 저장되고 나머지는 시스템 변수 sys_diDDivRemainder에 저장됩니다.
입력
나뉨수, BCD 데이터의 32비트 영역 또는 8자리 BCD 해당 상수
제수, BCD 데이터의 32비트 영역 또는 8자리 BCD 해당 상수
출력
몫, BCD 데이터의 32비트 영역(나머지는 시스템 변수 sys_diDDivRemainder에 저장됨)
F 명령을 사용하는 대신 해당 FP7 명령을 사용하는 것이 좋습니다.
FP_MOD_BCD,FP_DIV_MOD_BCD,FP_DIV_BCD계산 결과가 0인 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
start: BOOL:=FALSE;
(*activates the fuction*)
dividend: DWORD:=16#00001110;
(*dividend*)
divisor: DWORD:=16#00000011;
(*divisor*)
output_value: DWORD:=0;
(*result after 0->1 leading edge
from start: 16#00000100*)
END_VAR
변수 start가 TRUE로 설정되면 펑션이 실행됩니다.
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_CONTACT,,start,10,1,12,3,);
B(B_VARIN,,dividend,12,2,14,4,);
B(B_VARIN,,divisor,12,3,14,5,);
B(B_VAROUT,,output_value,21,2,23,4,);
B(B_F,F53_DBDIV!,Instance,14,0,21,5,,?DEN?D@'s1'?Ds2?AENO?Cd);
L(1,2,10,2);
L(12,2,14,2);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 6 ;
NETWORK_BODY
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start then
F53_DBDIV(dividend, divisor, output_value);
END_IF;