EP.1-7 데이터 타입

EP.1-7 데이터 타입: 전기의 그릇 | 제어 엔지니어 구조 분석

Phase 1 Finale: Hardware-Software Interface

EP.1-7 데이터 타입 — 전기의 그릇

8비트 부터 32비트 까지, 데이터의 규격화

왜 그냥 '숫자'라고 안 하고 타입을 나누는가?

PLC를 설계할 때 1비트 접점(Bit)에 숫자 100(Word)을 강제로 집어넣으려 하면 데이터가 깨집니다. 컴퓨터 메모리도 마찬가지입니다. 우리가 데이터를 저장할 때, 그 크기에 딱 맞는 '그릇'을 예약해야 메모리를 낭비하지 않고 정확하게 연산할 수 있습니다. 데이터 타입은 메모리에 미리 예약하는 '배선 영역의 넓이'입니다.

그릇의 규격: 비트(Bit)가 결정하는 용량

데이터 타입은 결국 '몇 개의 비트를 묶어서 하나의 그릇으로 쓸 것인가'의 약속입니다.

① 정수형 그릇 (Integer Types)

  • char (8bit / 1byte): 아주 작은 종이컵입니다. 주로 문자 하나를 담습니다.
  • short (16bit / 2byte): PLC의 1 Word (D레지스터)와 같은 크기입니다.
  • int (32bit / 4byte): 현대 컴퓨터의 표준 양동이입니다. 약 ±21억까지 담습니다.
  • long long (64bit / 8byte): 거대한 드럼통입니다. 천문학적인 숫자를 다룰 때 씁니다.

② 실수형 그릇 (Floating Point)

  • float (32bit): PLC의 REAL 타입입니다. 숫자를 '유효숫자'와 '소수점 위치'로 쪼개 담는 눈금 실린더입니다. 아날로그 센서값을 다룰 때 필수입니다.

그릇의 성격: Signed vs Unsigned (부호의 유무)

전기가 양방향으로 흐를지, 한 방향으로만 흐를지를 결정하는 스위치입니다.

  • Signed (부호 있음): 최상위 1비트를 +/- 표시용 스위치로 사용합니다. 센터 제로(Center Zero) 메타기처럼 양방향(마이너스 영역 포함)을 측정합니다.
  • Unsigned (부호 없음): 부호 스위치까지 숫자를 담는 데 씁니다. 마이너스가 필요 없는 카운터나 절대 위치값에서 그릇 용량을 2배로 늘려주는 마법을 부립니다.

오버플로우(Overflow): 그릇이 넘칠 때의 대참사

PLC에서 16비트 카운터가 32,767을 넘으면 갑자기 -32,768로 튀는 현상이 바로 이것입니다. 그릇은 정해져 있는데 데이터가 넘치면 숫자가 뒤집히거나 옆집 메모리를 침범합니다.

char cup = 127;
cup = cup + 1; // 종이컵에 물을 더 부으면?
// 결과: -128 (데이터가 넘쳐 부호 비트를 건드림)
왜 -0이 아니라 -128인가? 이진수 1000 0000을 보고 마이너스 0이라 생각할 수 있지만, 컴퓨터는 2의 보수 방식을 사용합니다. +0-0을 따로 두어 메모리를 낭비하는 대신, -0 자리에 숫자 하나를 더 담기로 약속했습니다. 덕분에 8비트로 -128부터 +127까지 256개의 숫자를 빈틈없이 꽉 채워 관리합니다.

문자의 실체: char와 ASCII 코드

컴퓨터는 문자를 모릅니다. char 타입은 8비트 그릇에 담긴 숫자를 보고 ASCII 코드표를 대조해 문자로 보여줄 뿐입니다.

  • 숫자 65를 담으면 → 'A'
  • 숫자 48을 담으면 → '0' (문자로서의 제로)

문자열(String)과 NULL(0)

문자열은 연속된 레지스터(D100, D101...)에 문자를 채우는 방식입니다. PLC 통신 끝에 00H를 넣듯, C언어 문자열 끝에도 반드시 NULL(0) 신호가 있어야 합니다. 이 '0'이 없으면 CPU는 데이터가 끝난 줄 모르고 옆집 메모리까지 계속 읽어가는 대참사가 발생합니다.

데이터 타입 최종 대조표

C언어 타입 크기 (Bit) PLC 비유 표현 범위 (Signed 기준)
bool 1 bit Bit (M, X, Y) 0(OFF) 또는 1(ON)
char 8 bit Byte / ASCII -128 ~ 127
short 16 bit 1 Word (D) -32,768 ~ 32,767
int 32 bit 2 Word (D Double) 약 ±21억
float 32 bit REAL (실수) 소수점 포함 아날로그 데이터
엔지니어의 황금률 "데이터 타입은 메모리에 예약하는 배선 영역이다." 마이너스가 없는 제어값이라면 무조건 Unsigned를 붙여 그릇 용량을 2배 확보하고, 정밀도가 생명인 아날로그 값은 float 데이터 타입을 사용하십시오.
© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"그릇의 크기를 정하는 것은 제어의 정밀도를 설계하는 것이다."

댓글

이 블로그의 인기 게시물

EP.0 코딩의 첫걸음 — 전기를 어떻게 연결할 것인가?

EP.0-1 천공카드

EP.1-1트랜지스터