이진 -> ASCII 변환
s2_BinaryData에서 지정한 영역에 저장된 16비트/32비트 이진 데이터를 ASCII 코드로 변환합니다. 변환 방법은 s1_Control의 제어 문자 4개에 따라 n_ConversionMethod에서 지정됩니다. 변환 결과는 d_AsciiData에서 지정한 영역에 저장됩니다.
입력
제어 문자열
H: 16진수 ASCII 데이터로 변환
- 역방향
32: 32비트(2워드) 단위로 변환
이전 데이터를 저장하는 시작 영역
변환 방법
(자세한 내용은 다음 표의 설명 참조)
출력
ASCII 데이터를 저장하는 시작 영역
F 명령을 사용하는 대신 해당 FP7 명령을 사용하는 것이 좋습니다.FP_BIN_TO_ASCII
s1_Control에서 지정한 제어 문자열에 에러가 있는 경우.
형식이 10진수일 때 s1_Control에서 표준 방향(+)이 지정된 경우
s1_Control에서 16진수 지정 시 n_ConversionMethod에서 지정한 변환 단위 당 ASCII 문자 숫자가 16비트 데이터에 4, 32비트 데이터에 8을 초과하는 경우.
n_ConversionMethod에서 변환할 16비트 또는 32비트(1 또는 2 워드) 숫자에 0이 지정된 경우.
n_ConversionMethod에서 지정한 변환할 16비트 또는 32비트 10진수 숫자가 ASCII 데이터를 저장하는 영역을 초과하는 경우.
변환 결과가 영역을 초과하는 경우.
s1_Control에서 지정한 제어 문자열에 에러가 있는 경우.
형식이 10진수일 때 s1_Control에서 표준 방향(+)이 지정된 경우
s1_Control에서 16진수 지정 시 n_ConversionMethod에서 지정한 변환 단위 당 ASCII 문자 숫자가 16비트 데이터에 4, 32비트 데이터에 8을 초과하는 경우.
n_ConversionMethod에서 변환할 16비트 또는 32비트(1 또는 2 워드) 숫자에 0이 지정된 경우.
n_ConversionMethod에서 지정한 변환할 16비트 또는 32비트 10진수 숫자가 ASCII 데이터를 저장하는 영역을 초과하는 경우.
변환 결과가 영역을 초과하는 경우.
(X 값은 변경되지 않음)
변환 단위 당 ASCII 문자수(8비트) 정보
16비트 이진 단위를 16진수 ASCII 데이터로 변환한 경우:
범위: 16#1–16#4
32비트 이진 단위를 16진수 ASCII 데이터로 변환한 경우:
범위: 16#1–16#8
이진 단위를 10진수 ASCII 데이터로 변환한 경우:
범위: 16#1–16#F
s1_ Control=16+H
, n_Conversion Method=16#204
표준 방향. 2 x 4 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
INT, WORD |
0 |
16#5678 |
'78' |
'56' |
'34' |
'12' |
1 |
16#1234 |
s1_ Control=16-H
, n_Conversion Method=16#204
역방향. 2 x 4 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
INT, WORD |
0 |
16#5678 |
'78' |
'56' |
'12' |
'34' |
1 |
16#1234 |
s1_ Control=16+H
, n_Conversion Method=16#203
표준 방향. 2 x 3 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
INT, WORD |
0 |
16#0456 |
'56' |
'42' |
'31' |
'$xx$xx' |
1 |
16#0123 |
s1_ Control=16-H
, n_Conversion Method=16#203
역방향. 2 x 3 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
INT, WORD |
0 |
16#0456 |
'45' |
'61' |
'23' |
'$xx$xx' |
1 |
16#0123 |
s1_ Control=32+H
, n_Conversion Method=16#108
표준 방향. 1 x 8 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
DINT, DWORD |
0 |
16#12345678 |
'78' |
'56' |
'34' |
'12' |
s1_ Control=32-H
, n_Conversion Method=16#108
역방향. 1 x 8 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
DINT, DWORD |
0 |
16#12345678 |
'12' |
'34' |
'56' |
'78' |
s1_ Control=32+H
, n_Conversion Method=16#105
표준 방향. 1 x 5 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
DINT, DWORD |
0 |
16#00012345 |
'45' |
'23' |
'1$xx' |
'$xx$xx' |
s1_ Control=32-H
, n_Conversion Method=16#105
역방향. 1 x 5 ASCII 문자.
이진 데이터 |
ASCII 데이터 변환 결과 |
|||||
---|---|---|---|---|---|---|
데이터 형식 |
16비트 워드 단위로 오프셋 |
16진수 |
D |
D+1 |
D+2 |
D+3 |
DINT, DWORD |
0 |
16#00012345 |
'12' |
'34' |
'5$xx' |
'$xx$xx' |
'x' 값은 변경되지 않습니다.
이 펑션 프로그램 시 사용한 모든 입력과 출력 변수는 POU 헤더에서 선언되었습니다. 모든 프로그래밍 언어에 같은 POU 헤더를 사용합니다.
VAR
bExecute: BOOL:=FALSE;
iArray1: ARRAY [0..1] OF INT:=[1234,-56];
iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
END_VAR
bExecute이 TRUE로 설정되면 명령이 실행됩니다. 16비트 단위 두 개를 2 x 4 10진수 ASCII 데이터로 변환합니다. 오프셋 = 1 ASCII 문자(8비트).
BODY
WORKSPACE
NETWORK_LIST_TYPE := NWTYPELD ;
ACTIVE_NETWORK := 0 ;
END_WORKSPACE
NET_WORK
NETWORK_TYPE := NWTYPELD ;
NETWORK_LABEL := ;
NETWORK_TITLE := ;
NETWORK_HEIGHT := 9 ;
NETWORK_BODY
B(B_F,F250_BTOA!,Instance,9,3,21,9,,?DEN?Ds1_Control?Ds2_BinaryData?Dn_ConversionMethod?AENO?Cd_AsciiData);
B(B_VARIN,,'16-D',7,5,9,7,);
B(B_VARIN,,iArray1,7,6,9,8,);
B(B_VARIN,,16#214,7,7,9,9,);
B(B_VAROUT,,iAscii1,21,5,23,7,);
B(B_CONTACT,,bExecute,3,4,5,6,R);
B(B_COMMENT,,Result iAscii1: 'x1234 -56x',22,7,35,8,);
B(B_COMMENT,,Converts two 16-bit units to 2x4 decimal ASCII data. Offset = 1 ASCII character (8-bit).,2,1,35,3,);
L(1,5,3,5);
L(5,5,9,5);
L(1,0,1,9);
END_NETWORK_BODY
END_NET_WORK
END_BODY
IF DF(bExecute) then
F250_BTOA(s1_Control := '16-D',
s2_BinaryData := iArray1,
n_ConversionMethod := 16#214,
d_AsciiData => iAscii1);
END_IF;