현재 진행 중인 스마트팩토리 관제 시스템(AIMS)은 실제 MES 데이터를 사용하는 것이 아니라 Sample DB에 저장된 제조 이벤트를 기반으로 공정을 시뮬레이션하는 방식으로 구현하고 있다.
초기에는 모든 공정 이벤트를 시간 순서대로 재생하는 구조를 고려했지만, 제조 과정 중 설비 이상이나 품질 문제로 인해 공정이 중단되는 상황을 반영하기 어렵다는 문제가 있었다.
이번 회의에서는 이러한 문제를 해결하기 위한 제조 이벤트 흐름 구조를 정리하였다.
기존 구조는 차량 하나에 대해 모든 공정 이벤트가 미리 생성되어 있는 형태였다.
CAR-001
Press
↓
Body
↓
Paint
↓
Assembly
즉, Sample DB에 이미 모든 공정 이벤트가 저장되어 있고 Scheduler가 순서대로 발행하는 방식이다.
하지만 이 구조에서는 다음과 같은 문제가 발생한다.
Press 공정에서 이상 탐지가 발생한 경우
Press (이상 발생)
↓
Body
↓
Paint
↓
Assembly
실제로는 Press 공정에서 생산이 중단되어야 하지만 이미 다음 공정 이벤트가 존재하기 때문에 Body 공정까지 진행되는 모순이 발생할 수 있다.
이를 해결하기 위해 이벤트 상태 기반 제어 방식을 적용하기로 했다.
모든 공정 이벤트는 원천 DB에 저장되어 있지만 Scheduler는 READY 상태의 이벤트만 Kafka로 발행한다.
Manufacturing Event
READY
↓
Kafka 발행
↓
분석 수행
↓
정상
↓
다음 공정 READY
차량 하나의 공정 흐름은 다음과 같다.
Press
↓
Body
↓
Paint
↓
Assembly
예를 들어 차량 A가 있다고 가정하면
| 공정 | 상태 |
|---|---|
| Press | READY |
| Body | WAIT |
| Paint | WAIT |
| Assembly | WAIT |
Scheduler는 READY 상태인 Press만 Kafka로 발행한다.
Press 완료
↓
분석 성공
↓
Body READY
| 공정 | 상태 |
|---|---|
| Press | DONE |
| Body | READY |
| Paint | PENDING |
| Assembly | PENDING |
Press 이상 발생
↓
공정 중지
↓
Body READY 생성 안함
| 공정 | 상태 |
|---|---|
| Press | ERROR |
| Body | WAIT |
| Paint | WAIT |
| Assembly | WAIT |
따라서 문제가 발생한 차량은 다음 공정으로 이동하지 못한다.
원천DB에는 차량별 4공정 이벤트가 모두 저장되어 있지만, Scheduler는 READY 상태의 row만 Kafka로 발행한다. 처음에는 Press만 READY이고, 각 공정 분석이 정상일 때만 같은 차량의 다음 공정 row를 READY로 열어준다. 따라서 Press에서 이상이 난 차량은 Body row가 READY가 되지 않아 다음 공정으로 넘어가지 않는다.
현재 제조와 검사는 독립적으로 동작하고 있다.
제조
Press
↓
Body
↓
Paint
↓
Assembly
검사
Inspection
하지만 실제 제조 흐름에 가깝게 만들기 위해 제조 완료 이후 검사 프로세스와 연결하는 방향을 검토하였다.
Press
↓
Body
↓
Paint
↓
Assembly
↓
Inspection
이를 위해 다음 항목들이 필요하다.
특히
Assembly 종료 시각
=
Inspection 시작 가능 시각
으로 사용될 예정이다.
모든 차량이 검사 공정으로 이동하는 것은 아니다.
제조 과정에서
등이 발생할 수 있기 때문이다.
따라서 차량 추적을 위해 car_master_id를 기준으로 데이터를 관리하기로 하였다.
이를 통해
등이 가능해진다.
이번 논의를 통해 단순히 이벤트를 시간 순서대로 재생하는 방식에서 벗어나, 공정 분석 결과에 따라 다음 공정을 열어주는 이벤트 제어 구조를 적용하게 되었다.
이 구조를 사용하면 실제 제조 현장에서 발생할 수 있는 설비 이상, 품질 불량, 생산 중단 등의 상황을 보다 현실적으로 시뮬레이션할 수 있으며, 이후 Kafka 기반 MSA 구조와 검사 프로세스 연동에도 자연스럽게 확장할 수 있을 것으로 기대된다.