✍️ [Plant Simulation Tutorial #05] – ExitControl & Method 기초: MU 흐름 제어하기
📑 요약
이번 글에서는 ExitControl과 Method 객체를 사용하여 Plant Simulation 내에서 MU 흐름을 직접 프로그래밍하는 방법을 소개합니다. 단순히 선형적으로 흐르던 시뮬레이션을 조건 기반, 속성 기반으로 세분화하여 제어할 수 있습니다.
🔍 1. ExitControl이란?
ExitControl은 MU가 한 객체에서 다음 객체로 이동할 때의 로직을 제어하는 이벤트 포인트입니다.
Source, Station 등 대부분의 객체는 이 기능을 사용할 수 있으며, 다음 흐름을 조건, 속성, 랜덤, 우선순위 등에 따라 분기할 수 있습니다.
위치 | 객체의 속성창 → Exit control 탭 |
유형 | Front / Rear |
언어 | SimTalk (내장 스크립트 언어) 사용 |
💡 ExitControl 사용 이유
- 조건에 따라 다음 대상 분기 (if, case 등)
- MU 속성을 기반으로 흐름 제어
- Front ExitCtrl 에서 @.move를 하지 않으면 객체에 MU가 대기하게 됨 (중요!)
🔧 2. Method 객체란?
Method는 SimTalk 스크립트를 저장하고 실행할 수 있는 코드 블록입니다.
공통 로직 또는 반복되는 조건문을 모듈화할 수 있으며, 다른 객체에서 호출(MethodName~)해서 재사용할 수 있습니다.
위치 | [Objects] → [Controls] → Method |
특징 | 전역/지역 변수 사용, 파라미터 전달 가능 |
🎯 3. ExitControl + Method 활용 예제
🔄 예제 시나리오
- Source에서 MU 생성
- Station에 도달하면 MU.name값이 A 이면 StationA로, 그 외는 StationB로 이동
- Method를 활용하여 공통 조건 로직을 분리
📦 객체 구성
Source → Station → StationA / StationB → Drain
📌 Step 1. Station 의 ExitControl
if @.name = "A"
@.move(A)
else
@.move(B)
end
📘 SimTalk 기본 문법 요약
@ | 현재 MU를 의미 |
? | 현재 객체를 의미 |
🧠 Tip
- @.move가 없으면 Front exitlogic 에서 MU는 현재 객체에서 멈추게 됩니다. 항상 조건 흐름 안에 move 명령을 넣어야 함.
- Method 내 print는 디버깅에 매우 유용합니다.
- Method는 EntranceControl, ExitControl, Buttons, Events 등 어디서든 호출 가능합니다.
📝 마무리
ExitControl과 Method는 Plant Simulation을 "설정툴"이 아닌 "프로그래밍 가능한 시뮬레이션 엔진"으로 바꿔주는 핵심 기능입니다.
이제부터 여러분은 로직을 코드로 정의하고, 조건에 따른 유연한 공정 흐름을 직접 설계할 수 있게 됩니다.
🔜 다음 포스트 예고
[Plant Simulation Study #06]에서는 실제 조건 기반 분기 시나리오를 더 확장해보며, Sorter, Sensor, Decision Point와의 연동을 살펴보겠습니다.