팁과강좌
▣ 생활 속 지혜, S/W, H/W Tip 등 다양한 정보들을 공유하는 곳입니다.
▣ 또한 산업공학을 포함한 전문 지식들을 공유하는 장으로 활용하실 수 있습니다.
Arena의 'Process module'의 Queue(대기행렬)의 길이를 제어하는 방법에 대해 알아보자.
일반적으로 우리가 원하는 '자원(Resource)을 Arena의 Basic Process의 Process Module을 이용하여 표현 할 경우 개체(Entity)가 이 자원을 이용하려면 Process Module에 있는 Queue의 대기 행렬에서 대기를 하게된다.
하지만 '개체를 Process Module 앞에서 대기하도록 할 수는 없을까?', '공정에서 대기하는 개체의 갯수의 수량을 조절 할 수는 없을까?', 만약 공정이 #1, #2, ..., 순으로 여러개가 있을 경우 '개체가 공정 #2에서 작업을 시작할때 공정 #1의 자원을 Release 시킬 수는 없을까??' 라는 식의 의문이 발생 할 수도 있다.
따라서 Process Module의 대기행렬의 길이를 조절하기 위하여 Advanced Process 패널에 있는 Hold, Size, Release Module의 기능을 알아보자.
첫 번째로 개체를 Process Module 앞에서 대기 하는법과 Queue(대기 행렬) 크기를 조절 하는 방법에 대해 알아보겠다.
이것을 위해서는 우선 Advanced Process 패널을(File → Template_Panel → Attah → AdvancedProcess.tpo ) 불러 온다. 그리고 아래의 그림과 같이 Queue를 제어하고 싶은 공정(Process Module) 앞에 Hold를 추가한다.
일반적으로 우리가 원하는 '자원(Resource)을 Arena의 Basic Process의 Process Module을 이용하여 표현 할 경우 개체(Entity)가 이 자원을 이용하려면 Process Module에 있는 Queue의 대기 행렬에서 대기를 하게된다.
하지만 '개체를 Process Module 앞에서 대기하도록 할 수는 없을까?', '공정에서 대기하는 개체의 갯수의 수량을 조절 할 수는 없을까?', 만약 공정이 #1, #2, ..., 순으로 여러개가 있을 경우 '개체가 공정 #2에서 작업을 시작할때 공정 #1의 자원을 Release 시킬 수는 없을까??' 라는 식의 의문이 발생 할 수도 있다.
따라서 Process Module의 대기행렬의 길이를 조절하기 위하여 Advanced Process 패널에 있는 Hold, Size, Release Module의 기능을 알아보자.
첫 번째로 개체를 Process Module 앞에서 대기 하는법과 Queue(대기 행렬) 크기를 조절 하는 방법에 대해 알아보겠다.
이것을 위해서는 우선 Advanced Process 패널을(File → Template_Panel → Attah → AdvancedProcess.tpo ) 불러 온다. 그리고 아래의 그림과 같이 Queue를 제어하고 싶은 공정(Process Module) 앞에 Hold를 추가한다.

[그림 1] Process의 Queue 제어하기 1
========================================================
Strage_MC1 (Hold Module)
Type : Scan for Condition
: 특정 조건을 만족할 경우 Entity를 보내어 준다.
Condition : NQ(Machine_01.Queue) < 1
: Machine_01.Queue의 대기행렬의 길이가 1보다 작을 경우
========================================================
이렇게 설정을 해주게되면 Machine_01에서 대기하는 Entity의 숫자는 '1'이 되며 여기서
-----------------------------------------------------------------
Condition : STATE(MC01) == IDLE_RES
:Machine_01의 Resource MC01이 Idle 상태일 경우
-----------------------------------------------------------------
이렇게 하게되면 Machine_01에서 대기하는 Entity의 숫자는 '0'이 된다.
또 다른 제어 방법인 개체가 공정 #2에서 작업을 시작할때 공정 #1의 자원을 Release 시키는 방법에 대해 알아보자.
Condition : STATE(MC01) == IDLE_RES
:Machine_01의 Resource MC01이 Idle 상태일 경우
-----------------------------------------------------------------
이렇게 하게되면 Machine_01에서 대기하는 Entity의 숫자는 '0'이 된다.
또 다른 제어 방법인 개체가 공정 #2에서 작업을 시작할때 공정 #1의 자원을 Release 시키는 방법에 대해 알아보자.
여기서 Machine_01 다음에 Seize, Release Modeule을 각각 추가 해 준다.
========================================================
Machine_01 (Process Module)
Action : Seize Delay
--------------------------------------------------------------------------------
Machine_02_S (Seize Module)
Resources : MC02 (Machine_02의 리소스를 여기서 Seize한다.)
--------------------------------------------------------------------------------
MC01_Release (Release Module)
Resources : MC01 (Machine_01의 리소스를 여기서 Release한다.)
--------------------------------------------------------------------------------
Machine_02 (Process Module)
Action : Delay Release
========================================================
위와 같이 설정을 하게 되면 Entity가 공정 #2의 Resource를 Seize하기 전까지 공정 #1의 Resource를 Release 하지 않게 된다.
예제 파일 다운로드 : example.doe