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(10)이 될 때까지 반복
    for (i = 1; i <= target; i++) {
        printf(">>> [COUNT: %d] 제품 통과... 포장 완료\n", i);
    }

    printf("[REPORT] 목표 수량 달성. 라인을 정지합니다.\n");
    return 0;
}

3. while(1)문: 무한 스캔 사이클

실제 로봇 비전이나 센서 감시 프로그램의 '메인 엔진'입니다. 조건이 항상 참(1)이므로 전원이 차단되거나 break를 만나기 전까지 멈추지 않고 입력을 감시합니다.

#include <stdio.h>

int main() {
    int signal;

    printf("=== [SYSTEM ONLINE] 실시간 감시 모드 ===\n");

    while (1) {
        printf("\n센서 신호를 입력하세요 (0:정상, 1:비상, 999:종료): ");
        scanf_s("%d", &signal);

        if (signal == 999) {
            printf("[SHUTDOWN] 마스터 권한으로 시스템을 종료합니다.\n");
            break; // 루프를 탈출하는 비상 차단기
        }

        if (signal == 1) {
            printf("!!! [WARNING] 비상 상황 발생! 사이렌 작동 중 !!!\n");
        } else if (signal == 0) {
            printf("... [SAFE] 시스템 안정화 상태 ...\n");
        } else {
            printf("? [UNKNOWN] 노이즈 신호 감지. 재검사 중.\n");
        }
    }

    return 0;
}
🛠️ 마스터의 시운전 노트 (Troubleshooting)

시운전 도중 발생할 수 있는 결함을 사전에 방지하기 위한 핵심 체크리스트입니다.

  • 변수 선언 위치: 산업용 구형 컴파일러와의 호환성을 위해 반복 변수(i)는 루프 밖에서 미리 선언하는 습관이 안전합니다.
  • 기호 오타 주의: printf의 출력 소켓은 %d입니다. &d와 같은 오타는 변수의 주소를 문자로 인식하게 만들어 출력을 방해합니다.
  • 강제 탈출구 설계: while(1)을 사용할 때는 반드시 break를 포함한 종료 로직을 설계하여 시스템 프리징(Freezing)을 방지해야 합니다.
© 2026 ZIN PARK · MASTERING CONTROL ENGINEERING SERIES
"엔진이 멈추지 않게 하는 것은 로직이고, 안전하게 멈추게 하는 것은 엔지니어의 설계이다."

댓글

이 블로그의 인기 게시물

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

EP.0-1 천공카드

EP.1-1트랜지스터