EP.2-4 배열

이미지
EP.2-4 배열: 데이터 창고를 넘어선 공간 제어의 마법 | 제어 엔지니어 구조 분석 Phase 2: Operations & Control Logic EP.2-4 배열 — 공간과 수치를 지배하는 데이터 창고 단순한 나열을 넘어 벡터(Vector)와 행렬(Matrix)의 관점으로 해석하다 왜 배열(Array)인가? 지금까지의 변수가 하나의 '점'이었다면, 배열은 점들이 모인 '선'이자 '면' 입니다. 로봇 관절의 위치를 정하는 벡터(Vector) 나 고성능 비전 시스템의 픽셀 데이터를 처리하는 행렬(Matrix) 의 실체가 바로 이 배열입니다. GPU가 현대 기술의 핵심이 된 이유도 결국 거대한 배열 연산을 한꺼번에 처리하는 능력 때문입니다. 배열을 이해하는 것은 수만 개의 데이터를 일일이 관리하지 않고, 단 하나의 이름으로 일괄 통제하는 법 을 배우는 것과 같습니다. 1차원 배열: 센서 데이터 벡터 생성 동일한 타입의 데이터를 메모리에 연속적으로 배치합니다. CPU는 인덱스(Index)라는 번호표를 통해 빛의 속도로 데이터에 접근합니다. # include <stdio.h> int main() {      // 로봇 관절 각도(Vector) 초기화      double joints[3] = { 45.0, 90.5, -15.25 };      int i;     printf("=== [ROBOT STATUS] 현재 관절 각도 벡터 ===\n");      for (i = 0; i     ...

EP.2-3: 반복문

EP.2-3 반복문: 멈추지 않는 제어 엔진, 스캔 사이클 | 제어 엔지니어 구조 분석 Phase 2: Operations & Control Logic EP.2-3 반복문 — 제어 엔진의 스캔 사이클 멈추지 않는 감시와 정밀한 카운팅을 위한 루프 설계 반복문: 제어의 '스캔 사이클' 산업용 제어기(PLC, Robot Controller)는 한 번 실행되고 종료되는 것이 아니라, END 를 만날 때마다 다시 처음으로 돌아가는 무한 스캔 사이클 을 가집니다. C언어의 반복문은 이러한 장비의 생명력을 구현하는 핵심 도구입니다. for문: "제품 10개를 카운트하고 멈춰라" (정해진 횟수 제어) while문: "비상 정지가 눌리기 전까지 무한 감시하라" (조건 유지 제어) for문: 정밀 수량 카운팅 목표 수량에 도달할 때까지 변수를 하나씩 증가시키며 특정 로직을 반복합니다. 인덱스(i)를 통해 현재 작업의 진행 상황을 실시간으로 파악할 수 있습니다. # include <stdio.h> int main() {      int target = 10; // 목표 수량      int i;            // 카운트 변수 사전 선언 (안전성 확보)     printf("[생산 시작] 목표 수량: %d 개\n", target);      // i가 1부터 시작하여 target(1...

EP.2-2 비교 연산과 조건문

이미지
EP.2-2 비교 연산과 조건문: 프로그램의 인터록 설계 | 제어 엔지니어 구조 분석 Phase 2: Operations & Control Logic EP.2-2 비교 연산과 조건문 — 프로그램의 인터록 판단하고, 거르고, 분기하는 지능형 로직의 핵심 비교 연산자 PLC의 CMP 명령어처럼, 두 값을 비교하여 참(1) 또는 거짓(0) 의 전기 신호를 만듭니다. 이 신호는 명령어 포인터(IP)가 다음에 실행할 메모리 주소를 갈아타게 만드는 물리적 스위치가 됩니다. == (같다): if (a == 10) (※ 주의: = 는 대입, == 는 비교!) != (다르다): 비상 정지 신호가 OFF가 아닐 때 주로 사용 && (AND / 직렬): 모든 접점이 닫혀야 가동 승인 || (OR / 병렬): 어느 하나라도 눌리면 즉시 차단 "가드 로직(Guard Logic)" 현장 제어에서 가장 위험한 것은 '정의되지 않은 신호'입니다. 명확한 정상(0)과 위험(1, 2) 외의 모든 수치를 예외로 처리하여 시스템을 보호해야 합니다. # include <stdio.h> int main() {      int status, signal;     printf("[시스템 체크] 상태를 입력하세요 (0:정상, 1:비상, 2:과부하): ");     scanf_s("%d", &status); ...

EP.2-1 변수와 사칙연산

이미지
EP.2-1 변수와 사칙연산: 데이터의 흐름 만들기 | 제어 엔지니어 구조 분석 Phase 2: Operations & Control Logic EP.2-1 변수와 사칙연산 — 데이터의 흐름 만들기 메모리 예약부터 ALU의 물리적 연산까지 변수 선언: 메모리에 이름표 붙이기 PLC에서 D100 이라는 주소를 직접 지정하듯, C언어에서는 int a; 처럼 이름을 붙입니다. 이것은 메모리라는 거대한 창고에 '내 구역' 을 확보하고 그릇의 크기를 정하는 행위입니다. 사칙연산: ALU(산술논리장치) 가동하기 CPU 내부의 ALU는 우리가 입력한 연산자(+, -, *, /)를 보고 전기 신호를 처리합니다. PLC의 ADD , SUB 명령어가 C언어에서는 간결한 기호로 대체됩니다. + (더하기), - (빼기): ALU 내부의 가산기 회로를 통과합니다. * (곱하기), / (나누기): 복잡한 논리 회로를 반복 통과하며 CPU 부하가 상대적으로 큽니다. % (나머지): 나눗셈 후 남은 레지스터 값을 낚아챕니다. 순환 제어에 필수적입니다. # include <stdio.h> int main() {     int input = 7;     int divider = 3;     printf("--- 산술 연산 결과 보고서 --- \n");     printf("더하기: %d \n",...

EP.2-0 작업실 셋팅

이미지
EP.2-0 작업실 셋팅: 컴파일러라는 제어반 | 제어 엔지니어 구조 분석 Phase 2: Operations & Control Logic EP.2-0 작업실 셋팅 — 컴파일러라는 제어반 Visual Studio 설치부터 첫 번째 시운전(Hello World)까지 🎯 복습: 한 줄의 코드가 만드는 기적 우리가 키보드를 누르는 물리적 압력 은 전기 신호로 변환되어 CPU 내부의 수십억 개 논리 게이트 를 통과합니다. 메모리에 저장되었다가 모니터 구석의 미세한 LED 3색(RGB) 을 깨워 '글자'를 만들기까지, 보이지 않는 하드웨어들은 쉼 없이 움직입니다. "과거라면 수만 개의 전선을 일일이 납땜하고 배선해야 했을 이 방대한 과정을, 우리는 C언어 라는 상위 소프트웨어를 통해 단 한 줄의 코드로 순식간에 제어하고 있는 것입니다." 툴체인 도입: 통합 공구함 설치 PLC 프로그램을 짤 때 지멘스(TIA Portal) , AB(Studio 5000) , 혹은 GX Works/XG5000 을 설치하듯, C언어 전선을 가공하기 위한 통합 공구함 Visual Studio 2026 을 설치합니다.(구글검색->"Visual Studio 다운로드) ▲ 'C++를 사용한 데스크톱 개발' 워크로드를 반드시 체크해야 합니다. 베이스 보드 준비: 새 프로젝트 만들기 설치완료 후 >Visual Studio 2026 실행합니다 [빈 프로젝트] 를 선택합니다. ...

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 타입입...

EP.1-6 메모리 구조

EP.1-6 메모리 구조: 전하의 대기실 | 제어 엔지니어 구조 분석 Phase 1: Hardware-Software Interface EP.1-6 메모리 구조 — 전하의 대기실 설계도가 실제 물리적 접점으로 배선되는 시퀀스 1. 질문: 왜 메모리는 구역을 나누는가? 제어반을 설계할 때 Bit 레지스터 영역과 Word 레지스터 영역을 엄격히 구분하고, 파라미터 설정을 통해 전원 차단 시에도 데이터를 유지할 구역을 지정하는 이유와 같습니다. 용도에 따라 구역을 나누지 않으면 데이터 신호가 뒤엉켜 시스템이 셧다운(Crash)됩니다. 2. 코드가 메모리로 흩어지는 물리적 원리 아래의 C언어 코드가 메모리 각 구역으로 어떻게 배선되는지 대조해 보겠습니다. // (1) 유지 레지스터 (Data 영역) int Global_Val = 10; void main() {      // (2) 임시 래치 (Stack 영역)     int Local_Val = 5;      // (3) 비교 연산 회로 가동 (Code 영역)     if(Local_Val > 0) {         Global_Val = 20;     } } ...