REAL을 STRING으로 변환
REAL_TO_STRING 펑션은 REAL 데이터 형식의 값을 STRING[15] 데이터 형식의 값으로 변환합니다. 변환된 값에는 소수점 앞뒤 모두 7자리의 스페이스가 있습니다. 결과 문자열은 '-999999.0000000'~'9999999.0000000' 범위 내에서 오른쪽으로 정렬됩니다. + 기호는 양의 범위에서 생략됩니다. 선행 0은 빈 스페이스로 채워집니다(예: -12.0를 벗어난 경우 STRING '-12.0').
입력
출력
이 펑션에는 프로그램 메모리의 약 160단계가 필요합니다. 반복 사용의 경우, 메모리에 한 번만 저장되는 유저 펑션에 통합되어야 합니다.
FP-e 또는 FP0와 같이 값이 작은 PLC가 있는 STRING 데이터 형식을 사용하는 경우, 결과 문자열의 길이가 소스 문자열의 길이와 같거나 큰 지 확인하십시오.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
input_value: REAL:=-123.4560166;
result_string: STRING[15]:='';
END_VAR
REAL 데이터 형식의 input_value 입력 변수는 -123.4560166 값으로 초기화됩니다. result_string 출력 변수는 STRING[15] 데이터 형식의 출력 변수입니다. 최대 15문자를 저장할 수 있습니다. input_value 변수를 사용하지 않고 본문에서 기능 입력 정수에 직접 정수를 입력할 수 있습니다.
REAL 데이터 형식의 input_value가 STRING[15]로 변환됩니다. 변환된 값은 result_string에 작성됩니다. input_value 변수가 123.4560166이면 result_string에 ' -123.4560165'가 표시됩니다.
BODY
WORKSPACE</p>
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,REAL_TO_STRING!,Instance,7,1,17,3,,?D?C);
B(B_VARIN,,input_value,5,1,7,3,);
B(B_VAROUT,,result_string,17,1,19,3,);
L(1,0,1,5);
END_NETWORK_BODY
END_NET_WORK
END_BODY
이 예에서는 REAL 데이터 형식 밖에 소수점 앞의 4자리와 뒤의 2자리를 추가하여 STRING[7]을 만드는 방법을 보여줍니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
input_value: REAL:=-123.4560166;
(*example value*)
result_string: STRING[15]:='';
(*result: here ' -123.45'*)
END_VAR
이 예에서는 REAL 데이터 형식의 input_value 입력 변수와 STRING[7] 데이터 형식의 result_string 출력 변수 모두 선언됩니다.
질문 동작을 실행하면 MID 표준 기능은 REAL_TO_STRING 기능에 연결됩니다. MID는 L(INT 값) 문자를 사용하여 P(INT 값) 위치에서 문자열의 중앙 섹터를 만듭니다.
예에서 INT 정수 7은 MID의 L 입력에 입력되고 결과 문자열의 길이를 결정합니다. P 입력의 INT 정수 4는 중앙 섹터가 시작되는 위치를 결정합니다. input_value 변수 값 -123.4560166을 벗어난 STRING은 데이터 형식 변환에서 ' -123.4560166'로 나타납니다. MID 기능은 위치 4의 STRING을 잘라내고 result_string '-123.45'를 만듭니다.
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,REAL_TO_STRING!,Instance,7,2,17,4,,?D?C);
B(B_VARIN,,input_value,5,2,7,4,);
B(B_VAROUT,,result_string,24,2,26,4,);
B(B_F,MID!,Instance,19,1,24,6,,?DIN?DL?DP?C);
B(B_VARIN,,7,17,3,19,5,);
B(B_VARIN,,4,17,4,19,6,);
L(17,3,19,3);
L(1,0,1,6);
END_NETWORK_BODY
END_NET_WORK
END_BODY