[PLC] 자동화 장비의 핵심 상태 흐름: 국내외 비교와 Petri Net, ST 언어 적용

산업 자동화 장비를 설계하거나 운용해 본 사람이라면, 장비 패널에 늘 등장하는 익숙한 버튼들과 마주친다. "수동/자동", "원점복귀", "비상정지", "리셋" 등.
이러한 핵심 조작 상태는 국내뿐 아니라 해외 장비에서도 거의 동일한 구조로 존재한다.
이 글에서는 국내외 자동화 장비의 상태 흐름이 얼마나 유사한지를 정리하고, 이를 Petri Net으로 모델링하고 ST(Structured Text)로 구현하는 관점까지 확장해 설명한다.


✅ 자동화 장비의 공통 핵심 상태들

전 세계 어디서나 거의 공통적으로 다음과 같은 상태들이 사용된다:

한국어 용어영어 용어 (해외에서 자주 쓰는 표현)설명
수동Manual Mode / Hand Mode작업자가 직접 조작하는 모드 (JOG 포함)
자동Auto / Automatic Mode사전 정의된 순서를 따라 자동으로 작업
원점복귀Homing / Reference / Zero Return센서 기준 또는 소프트 리밋 기준 원점 설정
대기Idle / Standby동작 전 대기 상태
초기화Init / Initialization시스템 전원 ON 후 설정 초기화 단계
작동 준비Ready / Standby사이클 시작 전 정상 대기 상태
실행 중Running / Auto Cycle자동 사이클 동작 중
정지Hold / Pause / Interlock수동 정지 또는 조건에 의한 정지
이상 정지Fault / Alarm / Abort센서 이상, 오류 등으로 인한 정지
리셋Reset / Clear Alarm에러 해제 후 상태 초기화

🕹 국내와 해외 장비 패널 구성의 공통점

  • 수동/자동 전환 스위치 (MAN / AUTO, Hand / Auto)

  • 원점복귀 버튼 (Homing, Reference)

  • START / STOP / RESET 버튼 (IEC 표준 색상)

  • 비상 정지 스위치 (E-STOP)

국가마다 기호 표기나 버튼 배열은 조금씩 다르지만, 기능 자체는 거의 동일하다.
특히 IEC 61131-3을 기반으로 한 PLC 프로그래밍에서는 전 세계적으로 상태 기반 구현이 표준처럼 사용되고 있다.


🔄 상태 흐름을 Petri Net으로 모델링한다면?

아래는 기본적인 자동화 장비의 상태 흐름을 Petri Net 또는 상태천이(State Machine)로 표현한 예다:

[Power On] | v [Idle] <---> [Manual Mode] | | v v [Init] --> [Homing] --> [Ready] | v [Auto Run] ---> [Hold] ---> [Auto Run] | v [Fault] | v [Reset] | v [Ready]

"Manual Mode → Homing"으로 바로 전이되는 구조는 가능하지만, 보통은 **작업자가 Homing을 요청(Request)**했을 때만 전이되도록 설계하는 것이 일반적이다.


🧠 Manual → Homing 전이 조건: 바로 넘어가도 될까?

  • 가능한 경우:
    Manual 상태에서 작업자가 "원점복귀 버튼"을 누르면 바로 Homing 상태로 전이.

  • 불가능한 경우:
    Auto 모드에서만 Homing이 가능하도록 인터록을 건 시스템 (안전/정합 문제 고려).

  • 조건부 가능:
    작업자 권한(Operator/Engineer)에 따라 Homing 가능 여부를 제한하는 경우도 있음.

💡 결론:
Manual 상태에서 Homing으로의 전이는 명시적인 요청(homingRequest)이 있을 때만 진행하는 것이 가장 일반적인 구조다.


💻 ST(Structured Text)로 상태 흐름 구현 예시

TYPE MachineState : ( POWER_ON, IDLE, MANUAL_MODE, INIT, HOMING, READY, AUTO_RUN, HOLD, FAULT, RESET ); END_TYPE VAR machineState : MachineState := POWER_ON; homingRequest : BOOL; homingDone : BOOL; END_VAR CASE machineState OF MANUAL_MODE: IF homingRequest THEN machineState := HOMING; END_IF; HOMING: IF homingDone THEN machineState := READY; END_IF; FAULT: IF resetButton THEN machineState := RESET; END_IF; RESET: machineState := READY; END_CASE;

homingRequest와 같은 명시적 이벤트(토큰)가 있어야 상태 전이가 되도록 구성하는 것이 Petri Net 구조와도 잘 맞는다.


📝 마무리: 설계 철학은 다르지만 구조는 같다

해외 자동화 장비라고 해서 완전히 다른 상태 흐름을 사용하는 것은 아니다.
대부분의 장비는 수동/자동, 원점복귀, 초기화, 이상 정지 등 핵심 상태를 공유하며,
이를 상태 기반으로 구성할 경우 Petri Net과 ST 언어는 국가에 상관없이 적용 가능한 범용 언어가 된다.

장비의 복잡성과 안전성 요구에 따라 세부 로직은 달라질 수 있지만,
핵심적인 상태 전이 흐름은 매우 유사하며 이는 국제 산업 표준을 따르기 때문이다.

댓글

이 블로그의 인기 게시물

[PLC] PLC 아날로그 입출력 기본

[아두이노] 가변저항(Potential Divider)과 전압분배(Voltage Divider)

[농사] 실내 식물 재배 조명, 어떤 걸 선택해야 할까?

공압 속도 제어: 미터인 vs 미터아웃

전력(kW) 계산하기 (직류, 교류 단상, 교류 삼상)

제너 다이오드에 저항을 연결하는 이유

[자동화] 안쓰는 안드로이드폰을 활용한 식물 성장 타임랩스 촬영

커패시터에 저장된 에너지 계산

[아두이노] 74HC595 시프트 레지스터 연동

3선 결선식 센서의 타입 PNP, NPN