티스토리 툴바


지난 강의에서는 Flexsim에서 가장 기본이 되는 몇개의 개념과 용어에 대하여 설명드렸습니다.

잠깐 복습한다면...
1) 시뮬레이션에서 물류의 주체가 되는 리소스 즉 개체에는 discrete objects 와 fluid objects를 각각 그룹핑하여 두개의 라이브러리로 제공한다.
2) 각각의 개체 리소스들은 구성하고자 하는 모델의 전후 물류 흐름에 맞추어 라이브러리에서 마우스로 클릭하여 화면에 드레그하여 원하는 위치에 갖다 레이아웃을 배치한다.
3) 리소스간 흐름의 대상이 되는 것은 "아이템(Item)" 인데, 아이템을 생성하는 개체는 'Source' 라는 개체이며 초록색 화살표가 위로 그려진 아이콘의 개체이며, 마지막에 사라지게 만드는 개체는 'Sink' 라는 개체로 붉은 색 화살표가 아래로 향하여 그려진 아이콘 개체입니다.
4) 물류의 방향은 개체간에 선을 이어서 그려주는데 키보드(Ctrl-A)와 마우스 왼쪽을 클릭하여 From-To로 개체간에 연결하면 흐름의 방향이 설정되며 검은 선이 그려집니다. 마우스만을 사용하여 연결하는 경우에는 상단의 체인고리가 그려진 'A' 문자 아이콘을 클릭하여 그리는 방법이 있습니다.

오늘은 각 개체(리소스)에서 속성(Method)를 설정하여 '아이템(item)'을 어떻게 처리할 것인지 설정하는 방법을 설명하겠습니다.

드레그 드롭으로 화면에 배치한 라이브러리를 더블클릭하면 아래와 같은 속성편집창이 나타납니다.
이 속성 편집창에서 그 리소스의 모든 것들을 설정할 수 있습니다.

화면에 보이는 형태의 변경(크기,방향등...), 아이템을 처리하는 방법, 리소스간 메세지 송수신 등....
개체의 이름 변경, 그리고 이벤트 처리 방법등....아주 세부적인 것까지 로직등을 코딩으로 추가할 수도 있습니다.


이 속성창에는 여러개의 탭이 있으며 이 탭은 라이브러리의 개체마다 각각 기능이 다르듯이 그 설정하는 항목과 내용이 다르며 그에 따라 탭의 갯수도 그리고 탭의 명칭도 다릅니다. 그렇지만 공통적인 부분이 약 60~70%는 됩니다.

기본이 되는 속성들을 우선 익히면 나머지 다른 부분은 보이는 개체의 기능에 따라 설정하는 항목들을 충분히 쉽게 어떤 의미들인지 추정이 가능합니다. 그러니까 쉽게 초보자도 익힐 수 있습니다.

우선 위의 그림의 개체는 프로세서 입니다. 즉 아이템에 무엇인가 처리를 하는 개체입니다.
사실은 '준비(Setup) + 프로세싱' 의 시간동안 아이템이 이 프로세서에 머물러 있게 됩니다.

그리고 이 준비시간과 프로세싱 시간은 고정된 시간으로 설정할 수도 있으며, 통계 분포 함수를 설정하여 랜덤하게 발생하는 분포 값으로 처리할 수도 있습니다. 보통은 경우는 통계 분포 함수 값으로 처리하여 실제 세계와 유사한 결과를 얻도록 처리합니다.

이 통계 분포 함수에 대하여는 별도의 심오한(?) 학습이 요구되는 부분이며 flexsim과 같은 시뮬레이션 툴의 심장이자 꽃이기도 합니다.

이 부분에 대하여는 별도의 강의 과목을 설정하여 진행하기로 하겠습니다.
여기서는 약간 간단히 개념적인 설명을 하고 넘어가겠습니다.

예를 들어 어떤 아이템 하나를 프로세서가 처리하는데 준비시간 10 초, 작업시간이 평균 3분이 걸린다고 하면, 실제 상황에서는 준비시간이 10초 +- 어느 정도의 산포, 작업시간이 180초 +- 어느 정도의 산포가 걸립니다. 즉 랜덤한 값으로 분포를 하게 됩니다. 산포 값은 어떤 확률 분포를 가지느냐에 따라 달라집니다. 
그렇지만 거의 무한대 또는 긴 시간동안의 분포 값들을 평균하면 약 10초 , 180초의 값으로 나타납니다.

이 분포 값들이 변동하므로 전후 공정/리소스에서 병목이 발생하기도 하고 idle이 발생하기도 하는 것이지요. 이런 시뮬레이션은 흔히들 물류 컨설턴트들이나 현자의 업무에서 엑셀을 사용하여 분석하는 경우에는 도저히 흉내내지 못하는 방법입니다.

Flexsim의 경우에는 이 분포함수에 대한 통계 소프트웨어는 'ExperFit' 라는 서드파트 제품을 내장시켜 놓았습니다. ExperFit은 독립적인 상품으로 판매하기도 합니다. 이 ExperFit 툴을 활용하여 현장의 어느 일정기간의 작업실적을 분석하여 어떤 분포를 하는지 역으로 분석하여 분포 함수를 찾아내는 기능도 구사합니다.

필요하면 랜덤한 값을 발생시켜 그 값들을 엑셀로 저장한뒤 활용하기도 합니다.
이 정도로 설명하고...

다시 본론으로 돌아가서, 리소스의 속서을 설정할 때 설비의 고장시간도 설정할 수 있습니다. 보수 시간도 설정할 수 있습니다. 물론 위에 설명한 분포함수를 활용할 수도 있습니다. 즉 년간 3% 정도의 고장이 발생한다면 이를 설정할 수 있다는 얘기입니다. 그래서 랜덤하게 고장을 일으키게 합니다.

개체의 이름을 위의 그림처럼 변경할수도 있습니다.(My Object 1)
디폴트는 드레그하여 화면에 끌어다 놓을 때 자체내에서 자동으로 일련번호를 뒤에 붙여 이름을 정해줍니다.

이때 동일한 이름이 있어서는 안됩니다. 에러를 발생합니다. 

아래에 위의 프로세서의 각 탭들에 해당하는 화면을 캡처하여 보여 드리지요.

위의 화면은 첫번째 탭 'Processor'의 준비시간 및 프로세싱 시간의 설정, 셋업 및 프로세싱 작업중 Operator(작업원)을 사용할 것인지 여부, 작업원을 사용할 때 pick up 하는 방법등을 상세하게 설정하는 화면입니다.
위의 화면은 고장 보수 시간( MTBF / MTTR ) 값들을 설정하는 그리드 창입니다. 그리고 가동/교대 패턴시간등을 Time Table로 설정하는 화면입니다.

위의 화면은 프로세서 개체에 들어와 작업되는 아이템들의 흐름(이동)을 어떻게 처리할 것인지 설정하는 화면입니다. Output은 뒤의 리소스로 내 보낼 때 작업자(운송)를 사용할 것인지, Input 즉 가지고 올때 Pull 정책을 사용할 것인지 결정하는 화면입니다.
디폴트는 Push 입니다. 즉 앞 리소스에서 밀어넣어 주는 대로 받는 물류 정책입니다.
Pull은 앞의 리소스에 요청하는 물류 정책입니다. 즉 JIT(Just In Time)이라고 볼 수 있습니다. 흐름이 일어나는 시간이 각각 다릅니다. 당연히 중간에 Queue가 있다면 이 큐에 쌓이는 재고량도 달라지겠지요.

위의 화면은 이 개체 여기서는 프로세서에서 일어나는 이벤트에 대한 처리 로직을 설정하는 화면입니다.
디폴트로 각 이벤트(OnReset, OnMessage,...)에 대하여 설정된 것은 없으며, 방법을 추가할 때에는 우측의 + 기호 아이콘을 눌러 추가하며, 지울때는 두번째 지우개 아이콘으로 지우고, 로직을 추가할 때는 세번째 아이콘을 눌러 C++ 또는 Flexsim Script를 추가하여 로직을 코딩합니다. 일반적인 프로그램 로직과 동일합니다. If 문, Do Case 문 등....
위의 라벨 설정창은 개체에 고유 라벨 명 또는 번호를 붙여 설정하는 창입니다.

위의 General 속성 설정 창은 외양, 크기, 위치 그리고 Ports 설정창입니다.
여기서 Port는 In/Out 그리고 Central 포트가 있는데 In/Out은 전후에 연결된 리소스 이름이 나타납니다.
Central 포트는 리소스간 메세지를 보낼 때 사용합니다.


시뮬레이션 하면서 프로세서가 처리하는 각종 통계값들을 실시간으로 확인 할 수 있는 창입니다.

이 정도로 이번 강의는 설명 드리겠습니다.

다음에는 모델 구성을 계속 진행하며 기본적인 개념들을 익혀 보겠습니다.
















저작자 표시 비영리 변경 금지
Posted by APSmate
Flexsim 세번째 강좌입니다.

오늘은 개체를 생성하고 수정 편집하는 방법에 대하여 알아봅니다.

Flexsim의 전체 작업화면은 아래와 같습니다.

간단히 화면 구성을 설명드리면 좌측의 세로로 긴 창은 개체 라이브러리 창이며, 상단에는 메인 메뉴가 있습니다.
메인메뉴는 일반적인 윈도우 어플리케이션과 크게 다르지 않습니다. 이에 대한 세부적인 옵션 메뉴들은 강의를 진행하면서 설명 드리겠습니다.

메인 메뉴의 아래에는 아이콘 메뉴들이 2줄로 배치되어 있습니다. 아이콘의 형상만 보아도 어떤 기능을 하는지는 짐작할 수 있습니다. 이 부분도 강의를 진행하면서 필요할 때 상세한 설명을 하겠습니다.

오늘은 우선 라이브러리에서 개체를 화면에 배치하고(개체의 생성) 그 개체들의 속성을 수정하여 물류 흐름을 연결하는 작업을 해 봅니다.

라이브러리는 크게 두가지 종료의 개체들로 구성되어 있습니다.
하나는 Discrete Objects 그룹이며 다른 하나는 Fluid Objects 입니다.
Discrete 객체는 의미 그대로 이산/분산 속성을 가진 리소스이며 Fluid 리소스이며 유체 흐름을 시뮬레이션 할 때 사용할 수 있는 개체 라이브러리 입니다.

각 라이브러리의 확대한 창은 하단에 추가하겠습니다.
아래에 모델을 만들어 보는 것은 아주 간단한 모델을 통하여 기본적인 기능을 알아보며, 시뮬레이션을 하는 목적을 간단히 익혀 보려고 합니다.

만들려는 모델은 세대의 설비/프로세서가 있고 그 다음에 큐/대기 장소가 있고 그 다음에 검사/장비가 있고 검사가 끝나면 다음공정으로 사라지는 물류 흐름입니다. 


우선 흐름의 대상이 되는 '아이템(item)'이 생성되어야 합니다. Flexsim에서 아이템이라 함은 이동의 대상이 되는 개체입니다.

아이템을 생성시키는 개체는 'Source' 라는 개체로 녹색 화살표가 위로 향하여 그려진 개체 입니다.
이와 반대 기능의 개체가 사라지는/없어지는 개체는 'Sink' 이며 빨간 색의 화살표가 아래로 향하여 그려져 있습니다.

위의 움직이는 그림처럼 Source 개체를 마우스로 클릭하여 작업창으로 (3D view - Orthographic) 드레그 합니다.
세개의 Source를 하나씩 배치하고 그 뒤에 큐(Queue)/대기 공간을 하나씩 3개를 배치합니다. 큐 다음에는 프로세서를 하나씩 모두 3개를 배치합니다.

이때 좌측의 라이브러리 창에서 개체를 클릭하면 화살표 모양의 마우스 포인터가 무엇을 잡을 때의 주먹형태로 바뀝니다. 이때 드레그 하여 이동시킵니다.

우선 Source와 큐를 연결합니다. 연결하는 방법은 두가지가 있습니다.

첫번째는 마우스로 연결 아이콘을 클릭하여 두개체를 연결하는 방법입니다.
화면 상단의 아이콘 메뉴중 화살표 우측에 A 문자와 함께 체인이 그려진 아이콘이 있습니다. 두 개체를 연결하는 기능입니다. 이 아이콘 메뉴를 클릭하면 위의 화면처럼 +와 체인이 그려진 형태의 포인터로 바뀝니다.

두번째는  A 문자는 아이콘메뉴을 클릭하지 않고 키보드를 이용하여 두 개체를 연결하는 방법입니다.
키보드의 Ctrl+A를 동시에 누르면 화면의 마우스 포인터가 + 체인 포인터로 바뀝니다. 왼손으로 키보드, 오른손으로 마우스를 사용하여 작업 속도를 높이는 방법입니다.

두 개체를 연결하는 것은 방향성이 있습니다. 첫번째 클릭하는 개체에서 두번째로 클릭하면 첫번째에서 두번째 개체로 아이템이 흐름이 발생합니다. 즉 From-To의 의미가 있습니다.

위의 경우에는 Source에서 큐로 연결합니다. 즉 Source에서 아이템이 생성하여 큐로 이동합니다.

아래의 그림은 discrete Objects 와 Fluid Object 라이브러리 창입니다.



위에 설명한 두 개체를 연결하는 방법은 모든 개체에 다 공통적으로 적용됩니다.

다음 강의는 개체의 속성을 설정하는 창을 진행합니다.
이것도 모든 개체에 공통적으로 적용됩니다.

개체의 속성은 그 개체가 아이템을 처리하는 방법(Method)를 설정하며, 이 속성 편집창에서 개체가 보이는 형상도 바꿀 수 있습니다.

다음에 계속 진행합니다.
저작자 표시 비영리 변경 금지
Posted by APSmate
오늘은 Flexsim 으로 작업한 결과물을 하나 더 보기로 하겠습니다.

2010.4.16 Flexsim 5.0 을 발표했습니다. 그 이전 버전은 4.52 이었습니다.
그동안 산업용 3D 시뮬레이션 툴이 고급 사양의 PC 또는 워크스테이션급 수준의 하드웨어 스팩을 요구했는데,
Flexsim은 일반 PC에서도 3D 시뮬레이션을 하는데 무리는 없습니다.

Flexsim의 3D 시뮬레이션 엔진은 요즈음 Core2 Duo CPU 에서 전혀 무리없이 운영이 가능합니다.
다만 그래픽 디스플레이에 있어서 OpenGL을 사용하고 있는데 nVidia 카드에 궁합이 잘 맞습니다.
4.52 버전까지는 nViDia 그래픽카드에서 가장 매끄러운 움직을 보여주고 있는데, 5.0으로 업그레이드 하면서 ATI, 인텔 통합 그래픽까지도 매끄럽게 보여준다고 합니다. 

매끄럽다 / 매끄럽지 않다 하는 표현은 보여주는데 영상이 부드럽게 표현되느냐 ㅌㅌㅌ하는 느낌을 주느냐 하는 차이입니다. 시뮬레이션 통계치를 만들어 분석하는데에는 전혀 문제가 없습니다.

우선 결과물 동영상을 보기로 하겠습니다. 4.52 버전에서 4축 로보트 로 4 개소에서 들어오는 아이템들을 한 파레트위에 적치하는 시뮬레이션 입니다.


단순한 로보트 물류 시뮬레이션 입니다. 파레트를 바닥에 하나 집어다 놓고 그 위에 3 군데의 컨베이어에서 들어오는아이템들을 하나씩 파레트위에 올려 놓는 시뮬레이션입니다.

물론 3개소의 컨베이어로 들어오는(또는 생성되는) 아이템들은 진입속도를 설정할 수 있으며, 이 값은 분포함수일 수도 있고(평균,+-오차율), 고정 값일 수도 있습니다. 그리고 로보트도 고장율(고장시간)등을 설정하여 실 세계와 같은 환경을 설정하게 됩니다. 

이에 대한(통계 분포 함수 설정) 방법은 Flexsim의 분포함수 활용편에서 강의가 별도로 진행되겠지만, 오늘 강의에서는 이정도의 개념만 설명하는 것으로 하겠습니다.

이렇게 간단한 생산 라인, 또는 시스템중의 일부분들을 물류 측면에서 연결하여 큰 시스템 전체의 모델을 만들게 됩니다.

4.52 버전에서는 디폴트 라이브러리에서 제공하는 4축 로보트 개체로 위에 보듯이 4축의 로보트의 물류 움직임을 추가 코딩 작업없이 간단히 몇분간에 걸쳐 드레그 드롭으로 배치를 하고 움직이는(물류 흐름) 설정만 해주면 시뮬레이션을 할 수 있습니다. 위에 보시는 동영상 수준의 모델링은 초보자라도 1 시간 이내에 모델을 구성할 수 있습니다.

5.0 버전 부터는 6축 로보트가 디폴트 개체로 라이브러리에 구성되어 있어 보다 더 쉽게 모델링 작업을 할 수 있습니다. 4.52 버전에서 6축 로보트의 물류 움직임은 약간의 코딩 작업을 하여 구현을 할 수 있었습니다.

Flexsim 으로 2회에 걸친 강좌에서 보듯이 꼭 산업용으로만 사용되는 것은 아닙니다.

다음에 아주 재미난 동영상을 통하여 Flexsim이 얼마나 유연성이 있는지 셈플 모델을 통하여 확인하도록 하겠습니다.


저작자 표시 비영리 변경 금지
Posted by APSmate
여기서 진행하는 3D 시뮬레이션 강의는 Flexsim 이 제공하는 기능을 주로 하여 진행됩니다.
Flexsim은 미국의 유타주에 있는 Flexsim 사에서 개발한 full 3D 시뮬레이션 엔진으로 사용하기 쉽고 스마트한 비주얼 특징을 가지고 있습니다. 
제품의 family가 범용(General Purpose), 병원(Health Care), 항만물류운영(Container Terminal Operatin), 분산처리(Distribution System)등 여러개 있지만 범용 제품에 촛점을 맞추고 기본 강의가 끝난후 나머지 제품들에 대하여는 그 특성을 훑어보기로 하겠습니다.

Flexsim으로 모델을 만들어 보기 전에 간단히 시뮬레이션 기초 개념과 Flexsim 소프트웨어에서 사용하는 몇가지 용어들을 짚고 넘어가겠습니다.

1. 시뮬레이션 이란?
. 시스템의 모방이다
. 시스템의 각 부분의 행동(behaviour of the parts)에 관한 가정이나 지식을 가지고
. 전체 시스템의 동작(behaviour of the whole)에서 통찰력을 얻기 위한 목적으로  수행한다.
2. 시뮬레이션 모델 이란?
. 문제를 풀거나 질문에 답변하는데 사용될 수 있는 실제 세계의 시스템에 대하여
. 목적이 있으며 종종 급단적인 추상화를 하여 
. 현실의 문제를 해결하는데 꼭 필요한 요소들만 포함
. 목적에 대하여 최소한의 필요한 모델을 만든다.

* 모델링 : 모델을 만드는 작업

3. 시뮬레이션의 일반적인 활용은 아래와 같습니다.
.장비 활용도 향상
.정체(대기) 시간과 적치(대기열) 공간(크기) 줄이기
.자원을 효율적으로 할당(적절한 배치 및 작업지시)
.재고 과잉 / 부족 문제를 제거
.고장의 부정적인 영향을 최소화
.반품 과 낭비(로스)의 부정적인 영향을 최소화
.대체 투자 아이디어의 연구/검토
.품목 쓰루풋 시간의 결정 및 향상 방안
.비용 절감 계획의 연구/검토
.최적 배치 크기와 품목 스케줄링(시퀀싱) 수립
.자재(소재) 처리 이슈 해결
.셋업 시간 과 툴 교체의 효과 연구
.상품과 서비스에 대한 우선순위 및 디스패칭 로직의 최적화
.전반적인 시스템 동작과 실적과 관련된 작업에 있어서 작업자의 추적
.새로운 툴 설계 및 능력 제안
.일일 운영측면의 의사 결정 관리
...

Flexsim 소프트웨어는 discrete event simulation 소프트웨어 이지만, discrete objects 이외에도 Process산업의 연속공정을 시뮬레이션할 수 있는 Fluid objects 라이브러리도 기본 라이브러리에 포함하고 있습니다. 즉 프로세스 공정도 모델링하여 분석 설계가 가능합니다.

조금 학문적인 부분의 설명은 후에 다시 추가하여 진행 하겠습니다.

Flexsim 소프트웨어는 완전한 객체 지향(Object Oriented) 시뮬레이션 소프트웨어 입니다. 객체를 일부 흉내낸 객체 기반(Object based)의 시뮬레이션 소프트웨어와는 근본적으로 다른 부분입니다.
이 기능의 차이가 모델링 방법에서 큰 차이를 보여줍니다. 기존의 시뮬레이션 소프트웨어의 사용법에 대한 지식이 Flexsim의 모델링 방법에 꺼꾸로 장애가 될 수 있는 부분입니다. 실제로 교육을 진행하면서 느낀 것이지만, 대학의 산업공학에서 Arena 강의를 듣고 여기에 익숙한 분들은 객체 지향의 Flexsim 기능에 혼돈을 느끼는 분들이 있습니다. 처음 배우시는 분들이 더 쉽고  빠르게 Flexsim의 기술을 습득하는 경향이 있습니다.

잠시 옆길로 샛는데...

첫번째 모델을 만들어 보기 전에 실제로 아주 간단한 라인의 모델을 만드는 동영상을 보시는 것이 우선 이해하시는데 쉬울 듯 합니다.

아래의 동영상 모델은 아이템이 생성되어(또는 운반) 큐(대기장소)에 대기하였다가 프로세서(설비)에서 작업되고 뒷공정으로 사라지는 매우 단순한 모델을 만드는 동영상이지만 Flexsim에서 어떻게 모델링을 하여 모델을 만드는지 단순하게 이해할 수 있는 영상이 되겠습니다.

포맷을 변환하는 과정에서 이미지에 노이즈가 들어갔는데...이해하기 바랍니다.
 
오늘은 여기까지 하겠습니다.

다음 강의에서는 모델링과 시뮬레이션 환경 그리고 Flexsim에서 사용하는 용어 4~5 개 정도 설명하겠습니다.

그럼 이만...

저작자 표시 비영리 변경 금지
Posted by APSmate