8자리 BCD 더하기
트리거 EN이 ON 상태이면 8자리 BCD 해당 상수 또는 s에서 지정한 8자리 BCD 데이터와 d에서 지정한 8자리 BCD 데이터를 함께 더합니다. 결과는 d에 저장됩니다.
입력
가수, 8자리 BCD 데이터의 32비트 영역 또는 해당 상수
출력
피가산수와 결과, 8자리 BCD 데이터의 32비트 영역
F 명령을 사용하는 대신 해당 FP7 명령을 사용하는 것이 좋습니다.FP_ADD_BCD
이 명령을 사용하면 피가산수 d의 영역을 더한 결과로 덮어 씁니다. 덮어 쓰기를 방지하려면 F43_DBADD2 명령을 사용하는 것이 좋습니다.
계산 결과가 0인 경우.
결과가 8자리 BCD 데이터 범위를 초과하는 경우(큰 경우).
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
start: BOOL:=FALSE;
(*activates the function*)
summand: DWORD:=16#12342000;
(*this value will be added
to the output_value*)
output_value: DWORD:=16#00003678;
(*result after 0->1 leading
edge from start:
16#12345678*)
END_VAR
변수 start가 FALSE에서 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_VARIN,,summand,10,2,12,4,);
B(B_VAROUT,,output_value,21,2,23,4,);
B(B_F,F41_DBADD!,Instance,12,0,19,4,,?DEN?D@'s'?AENO?Cd);
B(B_CONTACT,,start,8,1,10,3,R);
L(19,3,21,3);
L(1,2,8,2);
L(10,2,12,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 DF(start) then
F41_DBADD(summand, output_value);
END_IF;