부동 소수점 데이터 -> 32비트 정수 데이터(최대 정수는 부동 소수점 데이터를 초과하지 않음)
이 기능은 입력 s(범위: -2147483000 ~ 214783000)의 부동 소수점 데이터를 정수 데이터(+/- 부호 포함)로 변환합니다. 기능 결과는 출력 d에서 변환됩니다.
입력
소스 REAL 숫자 데이터(2 워드)
출력
변환 데이터를 저장하는 대상
출력 d에서 변환된 정수 값은 항상 입력 s의 부동 소수점 값과 같거나 작습니다.
입력에 양의 부동 소수점 값이 있으면 양의 이전 10진수 값이 출력에서 반환됩니다.
입력에 음의 부동 소수점 값이 있으면 다음으로 작은 이전 10진수 값이 출력에서 반환됩니다.
소수점 다음에 0만 있는 부동 소수점 값의 경우, 이전 소수점 값이 반환됩니다.
입력 s의 값이 REAL 숫자가 아니거나 변환 결과가 출력 d의 32비트 영역을 초과하는 경우.
입력 s의 값이 REAL 숫자가 아니거나 변환 결과가 출력 d의 32비트 영역을 초과하는 경우.
계산 결과가 0인 경우.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
start: BOOL:=FALSE;
(*activates the function*)
input_value: REAL:=-1234567.89;
output_value: DINT:=0;
(*result after a 0->1 leading
edge from start: -1234568*)
END_VAR
이 예에서는 입력 변수 input_value가 선언됩니다. 하지만 기능의 입력 접점에 직접 정수를 쓸 수 있습니다.
변수 start가 TRUE로 설정되면 펑션이 실행됩니다.
부동 소수점 값 -1234567.89가 정수 값 -1234568로 변환되고 output의 변수 output_value에 전송됩니다. 정수가 부동 소수점 값을 초과하지 않으면 기능은 여기를 내립니다.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,F328_DINT!,Instance,12,1,19,5,,?DEN?D@'s'?AENO?Cd);
B(B_VARIN,,input_value,10,3,12,5,);
B(B_VAROUT,,output_value,19,3,21,5,);
B(B_CONTACT,,start,8,2,10,4,);
L(1,3,8,3);
L(10,3,12,3);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF start THEN
F328_DINT(input_value, output_value);
END_IF;