FP_FORMAT_STRING

형식이 있는 데이터를 결과 문자열에 쓰기

이 명령어는 Data1(Data16으로 확장 가능)에 지정된 형식이 있는 데이터를 형식이 있는 문자열에 씁니다. 형식은 제어 문자열 sFormat에 의해 지정됩니다.

입력

sFormat (STRING)

형식이 있는 문자열을 만드는 방법을 정의하는 형식 지정자가 있는 제어 문자열

  • 문자열이 생성되는 방법에 대한 정의를 포함하는 문자열 변수 또는 문자 정수(최대 256자).

  • 제어 문자열은 형식을 지정할 텍스트, 형식 지정자(%d,%e 등), 줄바꿈 코드(\n), 탭 코드(\t)로 구성됩니다.

  • 형식이 지정된 문자열은 최대 4096자를 포함할 수 있습니다. 4096자를 초과하면 연산 에러가 발생합니다.

  • 형식 지정자에 대해 최대 16자리까지 지정할 수 있습니다. 16자를 초과하면 연산 에러가 발생합니다.

  • %s%S를 제외한 1개 데이터 변환 후 최대 문자 수는 32자입니다. 32자를 초과하면 연산 에러가 발생합니다.

  • 형식 지정자로 인식되지 않는 모든 문자 문자열은 형식을 지정할 텍스트로 처리됩니다.

Data1 (INT, UINT, WORD, DINT, UDINT, DWORD, REAL, LREAL, STRING)

형식을 지정할 데이터

  • 형식이 지정된 문자열에 쓸 변수 데이터.

  • 변수 데이터를 제어 문자열에 지정된 순서대로 정렬합니다.

출력

결과 (STRING)

ASCII 형식의 데이터가 있는 형식이 지정된 문자열.

주석

  • 입력 Data1을 최대 16개의 입력으로 확장할 수 있습니다.

  • 입력 Data1..DataN의 개수는 sFormat에 지정된 입력 문자열에 있는 형식 지정자의 개수와 동일해야 합니다.

  • DataN 입력에서 데이터 형식은 sFormat 내 해당 형식 지정자와 일치해야 합니다(아래 테이블 참조).

제어 문자열 sFormat의 설명과 예

sFormat: 예: %+12.5d,

형식이 지정된 문자열의 형식, 문자 수 및 정밀도를 지정하려면 아래 형식의 문자열 데이터를 사용하십시오. 변환할 데이터 형식에 따라 다양한 옵션(예: 부호 삽입 또는 공백 삽입)도 선택할 수 있습니다.

예제에서 위치

설명

sFormat

이진 데이터

ASCII 데이터 내 변환 결과

코멘트

0

제로 패딩

'%05d'

100

'00100'

문자 수를 지정하면 제어 문자열 sFormat의 이 위치에 0을 추가하여 제어 문자열을 사용할 수 있습니다.

+

+ 기호 추가

'%+4d'

100

'+100'

폭 4문자, 10진수 값, + 부호 추가

-

왼쪽 정렬

'%-6d'

100

'100'

폭 6문자, 10진수 값, 왼쪽 정렬

(스페이스): + 기호 대신 스페이스 추가

'%4d'

100

'100'

폭 4문자, 스페이스가 채워진 10진수 값

#

16진수에 0x 삽입

'%#4X'

100

'0X64'

폭 4문자, 0X로 시작되는 16진수 형식의 숫자 값

실수에 대해 항상 소수점 추가

'%#8.0f'

123.45678

'123.'

폭 8문자, 부동 소수점, 스페이스 4개로 시작

12

ASCII 데이터 요소 폭(콤마 있음 또는 없음)

너비가 이 값에 필요한 문자 수보다 작으면 연산 에러가 발생합니다. "에러 플래그"를 참조하십시오.

'%012d'

100

'000000000100'

폭 12문자, 9개의 0으로 시작

폭 없음:

'%d,'

100

'100,'

지정된 폭 없음, 콤마 추가

소수점 다음의 정밀도

.5

소수점 뒤의 모든 자릿수

'%8.3f'

123.45599

'123.456'

폭 8문자, 소수점 다음의 3문자 정밀도

12.5

[n.m], [n] 또는 [.m]을 사용하여 전체 문자 수(n)와 정밀도 문자 수(m)를 지정합니다. 변환 데이터의 형식에 따라 정밀도(m)의 문자 수가 변경됩니다.

d , Ld, i , Li, u ,Lu, x , Lx , b, Lb

숫자 문자열의 문자 수를 나타냅니다.

f, Lf, e, Le, E, LE

소수점 뒤의 문자 수를 나타냅니다.

g, Lg, G, LG

유효 숫자의 개수를 나타냅니다.

변환할 데이터 형식

'%06d'

100

'100'

d , i , u , x , X , b: 숫자 문자열의 문자 수

f: 소수점 뒤의 문자 수.

g: 유효 숫자 수.

d

부호가 있는 정수 ® 10진수 ASCII

'%6d'

100

'000100'

폭 6문자, 3개의 0으로 시작되는 10진수 값

u

부호가 없는 정수 ® 10진수 ASCII

'%10u'

-100

'100'

폭 10문자, 스페이스 7개로 시작, 부호 없는 정수

x

부호가 없는 정수 ® 16진수 ASCII

'%4x'

16#12A

'12a'

폭 4문자, 16진수 소문자

X

16진수 대문자

'%4X'

16#12A

'12A'

폭 4문자, 16진수 대문자

b

BCD 정수 ® 16진수 ASCII

'%5b'

16#123

'123'

폭 5문자, BCD 데이터

f

부동 소수점 실수 ® 부동 소수점 ASCII

'%-6.2f'

1.2345

'1.23'

폭 6문자, 왼쪽으로 정렬, 정밀도는 소수점 뒤 2자리

e

부동 소수점 실수 ® 지수 표기법 ASCII

'%9.3e'

1234.5678

'1.235e+03'

폭 9문자, 소수점 다음의 정밀 3자릿수, 지수 소문자

E

지수 대문자 1.23E10

'%9.3E'

1234.5678

'1.235E+03'

폭 9문자, 소수점 다음의 정밀 3자릿수, 지수 대문자

g

부동 소수점 실수 ® 부동 소수점 ASCII 또는 지수 표기법 ASCII

'%12g'

1234.5678

'1234.57'

폭 12문자, 부동 소수점

G

부동 또는 지수 대문자

'%#9.3G'

1234

'1.E+03'

폭 9문자, 소수점 다음의 정밀 3문자

s

문자열 ®ASCII

'%10s'

abcdef

'abcdef'

문자열 데이터(지정된 문자 수에 대해)

S

문자열 ®ASCII 대문자

'%-10S'

abcDEF

'abcDEF'

문자열 데이터 대소문자 구분

제어 문자열의 변환 데이터 sFormat

제어 문자열

변환 전 이진 데이터

변환 후 ASCII 데이터

'%d' 또는 '%i'

16비트 데이터(부호가 있는 정수)

10진수 ASCII 데이터

'%d' , '%5d' , '%+5d"

'%-5d' , '%05d' , '%10.5d' , '%d,' , '% d'

'%Ld' 또는 '%Li'

32비트 데이터(부호가 있는 정수)

'%u'

16비트 데이터(부호가 없는 정수)

'%u' , '%5u' , '%+5u'

'%-5u' , '%05u' , '%10.5u' , '%u,'

'%Lu'

32비트 데이터(부호가 없는 정수)

'%x'

16비트 데이터

16진수 ASCII 데이터(정방향/역방향)

'%x' , '%5x' , '%-5x'

'%05x' , '%10.5x' , '%x,' , '%#x' , '%X'

'%Lx'

32비트 데이터

'%b'

16비트 BCD 데이터

'%b' , '%5b' , '%-5b'

'%05b' , '%10.5b' , '%b,'

'%Lb'

32비트 BCD 데이터

'%f'

32비트 단정도 실수 데이터

부동 소수점 ASCII 데이터

'%f' , '%5.2f' , '%+5.2f'

'%-5.2f' , '%05.2f' , '%f,' , '%#f' , '% f'

'%Lf'

64비트 배정도 실수 데이터

'%e'

32비트 단정도 실수 데이터

지수 표기법 ASCII 데이터

'%e' , '%5.2e' , '%+5.2e'

'%-5.2e' , '%05.2e' ,'%e,'

'%#5.2e' , '% e' , '%E'

'%Le'

64비트 배정도 실수 데이터

'%LE'

64비트 배정도 긴 실수 데이터

'%#5.2E' , '% E' , '%E'

'%g'

32비트 단정도 실수 데이터

지수 표기법 ASCII 데이터 또는 부동 소수점 ASCII 데이터(둘 중 관련 표기법에서 더 짧은 쪽)

'%g' , '%5.2g' , '%+5.2g'

'%-5.2g' , '%05.2g' ,'%g," '%#5.2g' , '%G'

'%Lg'

64비트 배정도 실수 데이터

'%LG'

64비트 배정도 긴 실수 데이터

'%-5.2G' , '%05.2G' ,'%G," '%#5.2G' , '%G'

'%s'

문자열 데이터

문자열 데이터(지정된 문자 수에 대해)

'%s' , '%5s' , '%-5s' , '%-05s'

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • sFormat에서 지정한 제어 문자열에 에러가 있는 경우.

  • 형식이 10진수일 때 sFormat에서 정방향(+)이 지정된 경우

  • 변환 결과가 영역을 초과하는 경우.

  • if a width of the ASCII데이터 요소의 문자 길이에 대하여 값에 필요한 문자수 보다 적은 값이 지정된 경우

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • sFormat에서 지정한 제어 문자열에 에러가 있는 경우.

  • 형식이 10진수일 때 sFormat에서 정방향(+)이 지정된 경우

  • 변환 결과가 영역을 초과하는 경우.

  • if a width of the ASCII데이터 요소의 문자 길이에 대하여 값에 필요한 문자수 보다 적은 값이 지정된 경우

POU 헤더

이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다.모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.

	VAR
		bFormat: BOOL:=FALSE;
		sFormatString: STRING[50]:='Current Value: %6d [Min: %6d, Max: %6d]';
		sFormattedString: STRING[50]:='';
		iCurrentValue: INT:=815;
		iMin: INT:=-16756;
		iMax: INT:=23456;	END_VAR

LD 본문

변수 bStartFALSE에서 TRUE로 변경되면 함수가 실행됩니다.

BODY
    WORKSPACE
        NETWORK_LIST_TYPE := NWTYPELD ;
    END_WORKSPACE
    NET_WORK
        NETWORK_TYPE := NWTYPELD ;
        NETWORK_LABEL :=  ;
        NETWORK_TITLE :=  ;
        NETWORK_HEIGHT := 7 ;
        NETWORK_BODY
B(B_CONTACT,,bFormat,7,1,9,3,);
B(B_F,E_FP_FORMAT_STRING-3!,,25,0,36,7,,?DEN?dsFormat?dData1?dData2?dData3?AENO?c);
B(B_VARIN,,sFormatString,23,2,25,4,);
B(B_VAROUT,,sFormattedString,36,2,38,4,);
B(B_VARIN,,iCurrentValue,23,3,25,5,);
B(B_VARIN,,iMin,23,4,25,6,);
B(B_VARIN,,iMax,23,5,25,7,);
L(1,0,1,7);
L(1,2,7,2);
L(9,2,25,2);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

if (bFormat) then
    sFormattedString := FP_FORMAT_STRING(sFormatString,
                                         iCurrentValue, iMin, iMax);
end_if;

최종 수정일: 2023-04-13이 페이지에 대한 피드백Panasonic 직통 전화