F251_ATOB

ASCII -> 이진 변환

s2_AsciiData에서 지정한 영역에 저장된 ASCII 코드를 16비트/32비트 이전 데이터로 전환됩니다. 변환 방법은 s1_Control의 제어 문자 4개에 따라 n_ConversionMethod에서 지정됩니다. 변환 결과는 d_BinaryData에서 지정한 영역에 저장됩니다.

파라미터

입력

s1_Control (STRING)

제어 문자열, 예: D-16

  • D 10진수 ASCII 데이터 변환
  • H 16진수 ASCII 데이터 변환
  • + 통상 방향
  • - 역방향
  • 16 ASCII 데이터를 16비트 데이터로, -32,768을 +32,767로(16#0을 16#FFFF로) 변환합니다.
  • 32 ASCII 데이터를 32비트 데이터로, -2,147,483,648을 +2,147,483,647로(16#0을 16#FFFFFFFF로) 변환합니다.
s2_AsciiData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

ASCII 데이터를 저장하는 시작 영역

n_ConversionMethod (WORD, INT, UINT)

변환 방법 예: 16#404

  1.  (1) 변환된 단위 당 ASCII 문자수
  2.  (2) ASCII 문자 단위 오프셋(8비트)
  3.  (3) 변환된 16비트(1워드) 또는 32비트(2워드) 단위수

(자세한 내용은 다음 표의 설명 참조)

출력

d_BinaryData (BOOL, INT, UINT, WORD, DINT, UDINT, DWORD, REAL, DATE, TOD, DT, STRING)

이전 데이터를 저장하는 시작 영역

에러 플래그

sys_bIsOperationErrorHold(TRUE로 전환되어 TRUE로 유지됨)
  • 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 데이터를 저장하는 영역을 초과하는 경우.

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

sys_bIsOperationErrorNonHold(스캔 1회에 대해 TRUE로 전환)
  • 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 데이터를 저장하는 영역을 초과하는 경우.

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

변환 방법 설명(예: n_ConversionMethod = ASCII 데이터 '0123456789012'의 16#0413)

콤마로 구분된 데이터의 경우 숫자 데이터의 최대수를 지정합니다. 10진수 ASCII 데이터에는 스페이스, 기호 및 소수점이 포함됩니다. 데이터 범위는 제어 문자열 s1_Control에 의해 제한됩니다.

  1.  (1) 변환된 단위 당 ASCII 문자수
  2.  (2) 레지스터 콘텐츠(16진수)
  3.  (3) 문자열
  4.  (4) 결과를 저장하는 ASCII 문자 단위(8비트)의 오프셋
  5.  (5) 변환할 16비트(1워드) 또는 32비트(2워드) 단위수

ASCII 데이터 '0123456789ABCDEF'의 변환 예제

  • s1_ Control=H+16, n_ConversionMethod=16#404

    표준 방향. 4 x 4 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#2301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#6745

     

    2

    16#AB89

    3

    16#EFCD

  • s1_ Control=H-16, n_ConversionMethod=16#404

    역방향. 4 x 4 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    6#0123

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#4567

     

    2

    16#89AB

    3

    16#CDEF

  • s1_ Control=H+16, n_ConversionMethod=16#403

    표준 방향. 3 x 4 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#*201

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#*534

     

    2

    16#*867

    3

    16#*B9A

  • s1_ Control=H-16, n_ConversionMethod=16#403

    역방향. 3 x 4 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    INT, WORD

    0

    16#*012

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    1

    16#*345

     

    2

    16#*678

    3

    6#*9AB

  • s1_ Control=H+32, n_ConversionMethod=16#802

    표준 방향. 8 x 2 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#67452301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#EFCDAB89

  • s1_ Control=H-32, n_ConversionMethod=16#802

    역방향. 8 x 2 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#01234567

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#89ABCDEF

  • s1_ Control=H+32, n_ConversionMethod=16#502

    표준 방향. 5 x 2 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#***42301

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#***97856

  • s1_ Control=H-32, n_ConversionMethod=16#502

    역방향. 5 x 2 ASCII 문자.

    ASCII 데이터

    이진 데이터

    데이터 형식

    16비트 워드 단위로 오프셋

    16진수

    D

    D+1

    D+2

    D+3

    D+4

    D+5

    D+6

    D+7

    DINT, DWORD

    0

    16#***01234

    '01'

    '23'

    '45'

    '67'

    '89'

    '0B'

    'CD'

    'EF'

    2

    16#***56789

* 추가 문자는 '0'이 됩니다.

POU 헤더

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

	VAR
		bExecute: BOOL:=FALSE;
		iArray2: ARRAY [0..1] OF INT:=[2(0)];
			(*Begin ASCII: _1,23,04,-5,6_*)
		iAscii1: ARRAY [0..4] OF WORD:=[5(16#FFFF)];
	END_VAR

POU 본문

bExecuteTRUE로 설정되면 명령이 실행됩니다. 2 x 4 10진수 ASCII 문자가 이진 데이터로 변환됩니다. 오프셋 = 0 ASCII 문자(8비트).

LD 본문

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,F251_ATOB!,Instance,9,3,21,9,,?DEN?Ds1_Control?Ds2_AsciiData?Dn_ConversionMethod?AENO?Cd_BinaryData);
B(B_VARIN,,'D-16',7,5,9,7,);
B(B_VARIN,,iAscii1,7,6,9,8,);
B(B_VARIN,,16#214,7,7,9,9,);
B(B_VAROUT,,iArray2,21,5,23,7,);
B(B_CONTACT,,bExecute,3,4,5,6,R);
B(B_COMMENT,,Result iArray2: [1234~-56],22,7,35,8,);
B(B_COMMENT,,Converts 2x4 decimal ASCII data to binary data. Offset = 1 ASCII character (8-bit).,2,1,35,2,);
L(1,5,3,5);
L(5,5,9,5);
L(1,0,1,9);
        END_NETWORK_BODY
    END_NET_WORK
END_BODY

ST 본문

IF DF(bExecute) then
    F251_ATOB(s1_Control := 'D-16', 
    s2_AsciiData := iAscii1, 
    n_ConversionMethod := 16#214, 
    d_BinaryData => iArray2);
END_IF;

최종 수정일: 2024-11-22이 페이지에 대한 피드백Panasonic 직통 전화