아래 내용은 마이크로소프트웨어 2007년 8월호에 기사로 나간 내용입니다. 물론 초안이라서 책에 나간 내용과는 약간 차이가 있습니다. 저작권 문제가 있을 수 있으므로, 복사하시지는 말고 링크만 걸어 주시기 바랍니다.

Simulink를 이용한 플랜트 설계


요 약

제어기 설계를 위해서 필수적으로 필요한 플랜트의 수학적 모델을 Simulink에서 설계하는 방법을 배우며, System Identification을 통해서 수학적 모델링 없이 실제 플랜트의 인풋값과 아웃풋값을 이용하여 플랜트 모델링하는 방법을 보도록 하자. 설계한 플랜트를 VRML을 이용하여 나타내는 모델을 보고, 3D로 시각화 했을때의 장점을 보도록 한다.

제 1 절  플랜트와 제어기의 관계를 이해하자

임베디드 시스템은 항상 하드웨어와 소프트웨어로 나누어 진다. 소프트웨어는 운영체제, 디바이스 드라이버, 그리고 어플리케이션으로 다시 세분화 된다. 임베디드 소프트웨어의 어플리케이션의 경우 윈도우즈 XP와 같은 일반 데스크탑 환경에서의 프로그래밍과는 다르게 하드웨어 제조 업체를 제외하고는 개발하기가 힘들다. 특히나 시스템이 안전성과 관련이 되어 있으면 통상 하드웨어 제조 업체가 임베디드 소프트웨어의 어플리케이션을 직접 개발한다. 이런 어플리케이션은 운영체제와 깊은 연관성을 가지고 있어서 운영체제와 같이 크로스 컴파일링하여 임베딩 시키는 경우도 많이 있다.

1.1  시뮬레이션이란?



사용자 삽입 이미지

그림 1: 진자 모형 및 질량-스프링-댐퍼 모형

어플리케이션을 특정 하드웨어에 다운로드해서 사용할 경우, 이 어플리케이션의 디버깅, 실행 중 에러 및 알고리즘의 검증을 어떻게 할 건지가 문제가 될 수 밖에 없다. 실제 하드웨어는 다른 팀에서 만들고 있는 상황인데, 그 하드웨어를 제어할 알고리즘을 지금 개발하고 있다고 가정해보자. 알고리즘 개발하는 팀은 하드웨어가 만들어 질 때까지 개발하지 못하고 기다려야 할까? 이럴 경우 시뮬레이션을 통해서 하드웨어 개발 전에 알고리즘을 테스트 할 수 있다. 또는 하드웨어가 이미 개발 되어 있지만, 테스트되지 않은 알고리즘을 직접 하드웨어에 물려서 하는 것은 하드웨어에 심각한 데미지를 줄 수 있으므로 시뮬레이션을 통해서 충분히 알고리즘을 테스트하고 나서 하드웨어에 직접 테스트해야 한다.

시뮬레이션이란 여러 가지 의미를 가질 수 있는데, 여기서는 컴퓨터 시뮬레이션을 말한다. 컴퓨터 시뮬레이션은 컴퓨터 상에서 실제 물체를 모델링하여 그 움직임이나 필요한 값을 컴퓨터상에서 볼 수 있도록 하는 것이다. 그림 1진자 모형 및 질량-스프링-댐퍼 모형은 진자 모형을 간략화한 이미지와 간단한 질량-스프링-댐퍼 모형을 보여 준다. 이런 진자의 움직임을 실제 하드웨어에서 값을 측정하지 않고 컴퓨터 상에서 시뮬레이션해서 진자 추의 속도라던지, 각의 변화등을 볼 수 있는 것이다. 또한 질량-스프링-댐퍼의 경우 힘(F)을 어떤 방식으로 줬을때 질량이 어떻게 움직인다는 것을 컴퓨터 상에서 값을 알 수 있게 되며, 스프링 상수나 댐핑 계수 등을 바꾸었을때 어떤 움직임을 보이는지 알 수 있게 된다. 이런 스프링 상수나 댐핑 계수를 바꾸었을때 어떤 동작을 하는지를 시뮬레이션을 하지 않고 하드웨어에서 테스트 하기 위해서는 스프링을 교체하거나 혹은 댐퍼를 교체해야 한다. 시뮬레이션을 할 경우 이를 간단하게 계수 값만 바꾸는 것으로 대체 할 수 있다.

1.2  플랜트와 제어기의 관계는?


사용자 삽입 이미지

그림 2: 임베디드 제어 시스템

임베디드 시스템의 구성을 크게 나누어 보면 그림 2임베디드 제어 시스템과 같이 플랜트와 제어기로 나눌 수가 있다. 플랜트의 경우 개발자가 제어하고자 하는 대상체를 말하는 것으로 쉽게 생각하자면 하드웨어 부분이다. 제어기의 경우 플랜트를 내가 원하는 목적에 맞게 움직이도록 하는 것이다.

비행기의 자동 항법 장치를 예로 생각해 보자. 간단하게 생각하면 플랜트가 비행기가 되고, 플랜트를 제어 하는 목적은 공간상의 한 지점을 목표점으로 삼아서 거기까지 무사히 도달하도록 하는 것이다. 이렇게 목표점까지 도달하도록 하는 임베딩되어 있는 소프트웨어가 제어기의 역할을 하는 것이다.

실제 임베디드 소프트웨어 개발자가 개발해서 임베딩하는 소프트웨어는 제어기이며, 플랜트는 제어기를 개발하기 위해서 필요한 것일 뿐이다. 그럼 플랜트는 대충 모델링해도 되는 것일까? 플랜트를 모델링하는 목적은 제어기 설계를 시뮬레이션을 통해서 하기 위한 것이므로 플랜트 모델이 실제 하드웨어와 흡사한 결과를 줄때 제어기를 시뮬레이션 이후 임베딩해서 실시간으로 사용할 경우에 오차가 작아 지게 된다.

제 2 절  플랜트의 모델링

플랜트 모델링은 크게 두 가지 방식으로 하게 된다. 동역학적인 관점으로 플랜트를 분석해서 수학적 모델링을 하는 방법이 있고, 실제 플랜트에 입력값을 주어서 플랜트의 움직임을 측정해서 나온 결과값을 가지고 플랜트의 모델을 추정하는 방법이 있다.

2.1  동역학적 관점에서의 수학적 모델링


사용자 삽입 이미지

그림 3: DC 모터 다이아그램

수학적 모델링의 경우, 플랜트 모델링을 하게 되면 대부분 미분 방정식의 형태로 수식이 나오게 되며, 이를 수학적으로 풀어서 플랜트의 움직임을 예측할 수 있다. 이런 미분 방정식의 경우 솔버라고 하는 미분 방정식을 푸는 수치해석적인 알고리즘이 있어야 한다.

먼저 간단한 시스템에 수학적 모델링을 해보도록 하자. 일반적으로 하드웨어를 제어할때 많이 사용되는 DC 모터를 모델링한다고 생각해 보자. 그림 3DC 모터 다이아그램은 DC 모터를 모델링하기 위해서 다이아그램을 그린것이다. 이를 바탕으로 수학적 모델링을 하면 식 1equation과 같다.

di
dt = -R
-Li(t) -Kb
L--ω(t) + 1
L-vapp(t)
(1a)
dω
---
dt = - 1
--
JKfω(t) + 1
--
JKmi(t)
(1b)

식 1equation을 보면 간단해 보이지만, 동역학적인 지식과 수학적인 지식이 동반되어야만 만들어 낼 수 있는 수식이다. 이를 바탕으로 C로 직접 프로그래밍하여서 시뮬레이션을 할 수 있지만, 미분방정식을 풀기 위한 수치해석적인 솔버가 필요하다.


사용자 삽입 이미지

그림 4: Simulink로 구현한 DC 모터 모델

그림 4Simulink로 구현한 DC 모터 모델은 Simulink로 식 1equation을 모델링해서 나타낸 것이다. 그림에서 오른쪽 아래에 있는 것은 변수들에 적절한 값을 주고, 입력값으로 크기가 10이며, 주파수가 1인 싸인을 주었을때 나오는 결과인 angle값을 scope을 통해서 본 결과이다.


사용자 삽입 이미지

그림 5: Simulink 라이브러리 브라우저


사용자 삽입 이미지

그림 6: Configuration Parameter 윈도우

Simulink는 그림 4Simulink로 구현한 DC 모터 모델과 같이 모든 모델링을 블럭을 이용해서 하게 된다. 이를 위해서 그림 5Simulink 라이브러리 브라우저과 같이 기본적으로 모델링을 하는데 필요한 거의 모든 블럭을 제공한다. 비선형 시스템을 모델링하기 위한 데드존이나 백래쉬에 대한 블럭들부터 수학적 계산을 위한 사칙 연산과 삼각함수등을 위한 블럭들을 기본적으로 제공한다. 그리고 식 (1equation)을 계산하기 위해서 필요한 솔버를 그림 6Configuration Parameter 윈도우과 같이 드랍 다운 박스에서 선택할 수 있도록 다양하게 제공한다. 이 이외에도 시뮬레이션의 시작 시간과 끝나는 시간등을 메뉴로 바로 바꿀 수 있으며, 계산 결과나 중간 결과 값들을 필요할 경우 간단하게 MATLAB으로 보내서 데이타를 처리할 수 있다.


PIC
사용자 삽입 이미지

(a) 마우스 왼쪽 클릭
PIC
사용자 삽입 이미지

(b) 마우스 드래깅
PIC
사용자 삽입 이미지

(c) 마우스 놓음
그림 7: 블럭을 연결하는 방법

2.1.1  Simulink로 수학적 모델링 하기
Simulink의 사용은 먼저 아무것도 없는 모델판을 만들어서, 그 판 위에 라이브러리에있는 블럭들을 끌어다 놓고 각각의 블럭을 그림 7블럭을 연결하는 방법과 같이 마우스로 연결해서 모델을 구성하게 된다. 블럭을 연결하는 방법은 그림 7(a)Subfigure 7(a)와 같이 시작하고자 하는 블럭의 포트 부분에 마우스를 가져 가면 십자가 모양으로 마우스 아이콘이 변경된다. 이때 마우스 왼쪽 버튼를 클릭한 상태로 그림 7(b)Subfigure 7(b)처럼 드래깅하여 목표하는 블럭의 포트에 마우스를 가져 가면 이중 십자가 형태로 바뀌며, 이때 마우스 버튼을 놓으면 그림  7(c)Subfigure 7(c)와 같이 선이 연결된다.

Simulink 라이브러리 브러우저(그림 5Simulink 라이브러리 브라우저)의 서브 라이브러리중에서 Sources 안에 있는 블럭들은 모델에 인풋을 제공하므로 블럭에서 나가는 아웃풋 포트만 있고, Sinks 안에 있는 블럭들은 결과를 저장하거나 화면상에 보여 주는 scope과 같은 블럭들이므로 인풋 포트만 존재한다. 그 이외에 나머지 모든 블럭들은 들어오는 시그널(블럭과 블럭 사이에 연결하는 선을 통해서 지나가는 값)을 처리해서 나가게 하는 블럭들이므로 최소한 한 개 이상의 인풋 포트와 한 개 이상의 아웃풋 포트가 존재 한다.

식 1equation의 경우 미분 방정식이므로, 이런 미분 방정식의 경우 Continuous 서브 라이브러리에 있는 Integrator 블럭을 사용해서 모델링을 하게 된다. 식 1a에 따르면 전류를 나타내는 i가 한번 미분된 형태로 있으며, 식 1b에 나와 있는 ω의 경우 식에는 나와 있지 않지만, 실제로 모터의 회전 각을 나타내는 angle이 한번 미분된 값이다. 식 1b에는 그런 ω를 한번 더 미분하고 있다.


PIC
사용자 삽입 이미지

(a) Integrator 블럭
PIC
사용자 삽입 이미지

(b) 식 1a 완성
그림 8: 미분식의 모델링중 일부분

Simulink에서 식 1a를 실제로 구현을 해보면, 그림 8미분식의 모델링중 일부분에서 보여 주는 것처럼 빈 모델판에 수식을 구성하기 위해서 필요한 블럭들을 모아서 모델을 만들게 된다. 그림 8(b)Subfigure 8(b)를 보면 식 1a의 식중에서 -K
Lbω(t) 부분을 제외하고 그림 8미분식의 모델링중 일부분에 구현했다. 식 1b를 구현해서 결과를 보기 위해서 scope 블럭을 추가하여 완성한 모델이 앞에서 본 그림 4Simulink로 구현한 DC 모터 모델에 있다.


사용자 삽입 이미지

그림 9: 서브 시스템으로 정리된 DC 모터 모델

블럭을 이용하여 모델링을 하게 되면, 점점 모델이 복잡해져서 보기가 힘들어 진다. 따라서 관련 있는 블럭들을 모아서 서브 시스템으로 만들 수도 있다. 그림 9서브 시스템으로 정리된 DC 모터 모델를 보면 그림 4Simulink로 구현한 DC 모터 모델를 서브 시스템으로 만든 것이다. C와 같은 프로그래밍을 생각해 보면 일종의 함수와 같다고 생각하면 된다. 이와 같이 계층적으로 만들 수 있는 모델의 갯수는 제한이 없다고 생각하면 된다.

블럭으로 모델을 완성하기 위해서는 각각의 블럭에 값을 줘야 하므로, 블럭을 마우스 왼쪽 버튼으로 더블 클릭해서 필요한 값을 줄 수 있다. 그림 10Gain 블럭의 파라메타 변경는 Gain 블럭을 더블 클릭했을때 나오는 윈도우이며, 여기서 Gain 값을 변경할 수 있다. 각각의 블럭에 따라서 나오는 윈도우는 다르게 나온다. Integrator 블럭의 경우는 외부에서 리셋을 하거나 혹은 초기화 값을 주는 등 여러가지 옵션을 줘서 블럭의 인풋 포트와 아웃풋 포트를 변경하게 된다.


사용자 삽입 이미지

그림 10: Gain 블럭의 파라메타 변경

그림 10Gain 블럭의 파라메타 변경에서 Gain 값을 적는 부분에 실제 숫자 값을 적어도 되지만, 그럴 경우 이런 파라메타 값을 변경할 때마다 블럭을 더블 클릭해서 값을 바꿔야 한다. 블럭이 한 두개가 아니고 수 십개에서 수 백개까지 혹은 수 천개까지 사용해서 모델링을 하게 되는데 이럴 경우 변경을 더블 클릭해서 바꿀 수 있다면 불편하기 때문에 그림 10Gain 블럭의 파라메타 변경에서 보는 것처럼 변수(그림처럼 1/L)로 셋팅을 하고, 변수의 값은 MATLAB에서 주게 된다.

2.1.2  MATLAB과 Simulink의 연동

사용자 삽입 이미지

그림 11: MATLAB의 데스크 탑 환경

MATLAB은 일종의 인터프리터 언어라고 생각하면 된다. 그림 11MATLAB의 데스크 탑 환경와 같은 인터페이스를 가지고 있으며, 명령을 주고 결과를 볼 수 있는 윈도우인 커맨드 윈도우에서 대부분의 작업을 하게 된다. 그림 11MATLAB의 데스크 탑 환경에서 보듯이 행령 A, B 를 만들어서 두 행렬의 곱인 C를 간단하게 만드는 것을 볼 수 있다. 커맨드 윈도우에서 사용한 명령어는 왼쪽 아래에 있는 커맨드 히스토리 윈도우에 계속 기억되어서 나중에라도 필요하면 언제든지 마우스 오른쪽을 클릭하여서 다시 실행할 수 있다. 커맨드 히스토리에서 변수를 만들면 생성된 변수는 Workspace라는 곳에 저장되어 있는데, Workspace에 저장된 데이타를 볼 수 있는 브라우저가 Workspace 브라우저이며 그림 11MATLAB의 데스크 탑 환경에서 왼쪽 윗편에 있다. 그림 11MATLAB의 데스크 탑 환경는 현재 디렉토리를 보여 주는 윈도우가 활성화되어 있지만, Workspace 브라우저를 보기 위해서는 마우스 왼쪽 버튼으로 Workspace라고 적힌 부분을 클릭하면 Workspace 브라우저가 활성화되며, 어떤 변수가 현재 Workspace에 있는지 보여 준다.

그림 10Gain 블럭의 파라메타 변경에서 봤듯이 Gain 값을 적는 부분에 숫자를 적지 않고, 변수를 적는 경우 Simulink가 시뮬레이션을 시작하기전에 MATLAB의 Workspace를 조사하여 같은 이름의 변수가 있으면, 그 값을 사용하고 없으면 에러 메시지를 띄운다. 그림에서는 1/L 이므로 Workspace에서 L의 값을 가지고 와서 1/L을 계산한 값을 가지고 시뮬레이션을 시작한다. 그러므로 일반적으로 블럭들의 파라메타 값들은 주로 변수로 선정하고, MATLAB에서 그 변수 값을 셋팅한다.

MBD를 생각해보면 Simulink 모델을 팀의 다른 개발자에게 주거나 혹은 다른 팀에게 주게 되는데, 이럴때 변수 값이 저장된 Workspace까지 같이 줘야 모델을 받는 사람이 시뮬레이션을 해 볼 수 있다. 이렇게 변수 값이 저장된 Workspace를 만들 수 있도록 하는 명령어가 MATLAB에서는 save 라는 명령이다.


>> save myWorkspace
>> save myWorkspace A B C
>> load myWorkspace

첫 번째 명령어는 현재 Workspace에 있는 모든 변수들을 myWorkspace.mat 라는 파일로 저장하는 명령이다. 두 번째 명령어는 현재 Workspace에서 A, B, C 변수들만 myWorkspace.mat 라는 파일에 저장하는 명령이다. 이렇게 저장한 mat 파일을 현재의 Workspace로 로드하는 명령은 load 이다.

2.1.3  상미분 방정식을 풀기 위한 방법
미분 방정식으로 수학적 모델이 만들어 지고 나면, 원하는 해를 구하기 위해서는 미분 방정식을 풀어서 답을 구해야 한다. 이를 위해서 수치 해석적으로 몇 가지 푸는 방법이 있으며, Simulink의 경우 이러한 해를 구하기 위한 솔버를 기본적으로 제공 한다. 이미 많은 시뮬레이션에서 사용되었기 때문에 솔버의 정확도등은 걱정할 필요없이 바로 사용하면 되며, 그림 6Configuration Parameter 윈도우와 같이 필요한 솔버를 선택할 수 있다. Variable Step과 Fixed Step 형태의 솔버가 있으며, 각각의 형태에서 사용할 수 있는 솔버가 따로 존재 한다.

Variable Step 형태의 솔버는 기본적으로 두 가지 이상의 방법으로 미분 방정식을 풀어서 각각의 값을 서로 비교하여 원하는 오차 범위 안에 들어 오면 다음 계산으로 넘어 가고 그렇지 않으면, 다시 시간 간격을 줄여서 계산을 하게 된다. 선택할 수 있는 Variable Step Solver중에서 정확도가 높은 ode45를 기준으로 다시 한번 생각해 보면, ode4와 ode5 두 개의 솔버로 각각 미분 방정식을 풀고, 그 값을 개발자가 원하는 오차 안에 들어 오는지 비교한다는 것이다.

2.2  실험 데이타를 이용한 모델링


PIC
사용자 삽입 이미지

(a) 플랜트로 부터 실험 데이타 수집
PIC
사용자 삽입 이미지

(b) System Identification Toolbox를 이용한 플랜트 모델 예측
PIC
사용자 삽입 이미지

(c) 실제 모델과 예측 모델의 결과 비교
그림 12: System Identification

MathWorks 제품군 중에서 수학적 모델링을 하는 건 Simulink를 이용해서 할 수 있지만, 매우 복잡한 모델의 경우 미분 방정식을 만들기가 매우 힘들다. 이미 플랜트가 존재할 경우에 실제 플랜트에 입력값을 주고 그 결과값을 측정한 데이타를 이용해서 플랜트의 방정식을 만들 수 있다. 이러한 방법을 System Identification이라고 한다. MATLAB 하에서 System Identification Toolbox를 이용하면 이러한 방법을 사용할 수 있으며, 필요한 것은 실제 플랜트에서 측정한 측정값이다.

System Identification의 경우 그림 12(a)Subfigure 12(a)와 같이 플랜트로 부터 실제 데이타를 수집하고, 수집한 데이타는 그림 12(b)Subfigure 12(b)와 같이 GUI를 이용하여 플랜트 모델을 예측하게 된다. 이렇게 예측된 모델을 Simulink에서 이용 가능하도록 필요한 블럭을 제공해서 Simulink 모델에서 사용할 수 있게 한다. 마지막으로 그림 12(c)Subfigure 12(c)처럼 예측된 모델로부터의 결과 값과 실제 플랜트에서 측정한 값을 비교해서 예측된 모델을 사용할 수 있을지에 대한 검증을 한 후에 플랜트 모델로 사용하게 된다.

System Identification Toolbox에서 제공하는 GUI를 좀 더 자세하게 살펴보자. 그림 13(a)Subfigure 13(a)를 보면 실험 데이타를 ”Data Importing” 부분을 이용하여, GUI로 데이타를 가지고 오게 된다. 이 실험 데이타가 어떤지를 보기 위해서 ”Time Plot” 옵션이 체크되어 있으면, 그림 13(b)Subfigure 13(b)처럼 인풋과 아웃풋을 화면에 보여 준다. 임포트된 데이타를 처리하기 위해서 ”Processing”에 있는 ”Working Data” 부분에 처리하고자 하는 데이타를 끌어다 놓는다. 그리고 ”Estimate—>” 부분을 이용하여 어떤 모델 구조를 이용해서 모델을 예측할건지를 결정하면, 모델 구조에 따른 또 다른 GUI가 나온다. ”Estimated Model”에 예측된 모델이 표시되며, 만약 ”Model Output” 옵션이 체크되어 있으면, 그림 13(c)Subfigure 13(c)와 같이 ”Validation Data”에 있는 데이타와 비교해서 얼마나 잘 예측되었는지를 알려준다. 그림 13(c)Subfigure 13(c)에 있는 Best Fit은 아래 수학식에 의해서 계산된 값으로 100%에 가까울 수록 예측이 잘 된 것이다.

              |y- ˆy|
BestFit = (1 - |y--�y|) × 100
(2)


PIC
사용자 삽입 이미지

(a) System Identification GUI(ident)
PIC
사용자 삽입 이미지

(b) 실험 데이타의 인풋과 아웃풋
PIC
사용자 삽입 이미지

(c) 실제 모델과 예측 모델의 결과 비교
그림 13: System Identification Toolbox의 활용

2.3  그 외에 모델링 방법

앞에서 살펴 본 두 가지 방법이 모델링을 하는 두 가지의 큰 방법이다. 일반적으로 임베디드 소프트웨어, 즉 제어기를 설계하는 개발자의 경우 동역학적인 지식이 많이 필요하므로 복잡한 플랜트의 경우 모델링하기가 상당히 어렵다. 이런 제어기를 설계하기 위해서 필요한 플랜트의 모델링은 Physical Modeling 툴을 이용할 경우 훨씬 쉽게 모델링 할 수 있는 경우가 있다.

기계적인 시스템의 경우 시스템을 이루는 각 구조물에 대한 기하학적인 값(위치, Inertia 값들)을 파라메타 값으로 주게 되면, 실제 수학적 모델은 내부적으로 구성되기 때문에 동역학적인 지식이 많지 않아도 모델링을 할 수 있다. 또한 전자 회로도와 유압 회로도와 비슷하게 모델링을 하게 되면 역시나 수학적 모델은 내부적으로 구성해 준다.

플랜트 모델링을 하는 경우는 플랜트 자체를 이상화 시켜서 하기 때문에, 실제 플랜트에서 측정된 데이타를 비교해보면 어느 정도의 차이가 있음을 알 수 있다. 이런 차이가 허용하고자 하는 범위보다 클 경우는 시뮬레이션을 하는데 있어서 문제가 생길 수 있다. 제어기의 경우 이런 플랜트의 모델이 정확할 수록 시뮬레이션에서 만든 제어기가 실제 플랜트를 실시간으로 제어할 때 정확해 진다. 이렇게 수학적 모델링을 Simulink에서 하고, 파라메타를 변경시켜서 실제 플랜트의 측정된 결과값과 같도록 튜닝하는 기능이 Simulink Parameter Estimation에 있다.

플랜트 모델링을 좀 더 실제 플랜트와 비슷하게 맞추는 부분과 Physical Modeling 툴에 대한 내용은 기회가 되면 다시 소개 하도록 하겠다.

제 3 절  플랜트를 시각화 해보자

플랜트로 모델링을 하고 나서 scope 블럭이나 혹은 데이타를 MATLAB으로 보내서, 결과에 대한 그래프등을 그려서 움직임을 볼 수 있지만, 3차원으로 플랜트 형상이 직접적으로 움직이는 것을 보게 되면 훨씬 큰 효과를 보여 줄 수 있다. Simulink의 경우 플랜트의 3차원적인 움직임을 VRML을 통해서 시각화 할 수 있다.

3.1  VRML이란?

VRML이란 Virtual Reality Modeling Language의 약자로서 인터넷에서 3차원을 공간을 표현해서 볼 수 있도록 표현하고자 하는 목적으로 개발된 것이다. 확장자는 wrl을 가지며, 텍스트 문서이므로 이를 3차원 공간에 보기 위해서는 특별한 브라우저를 사용해야 한다. 우리가 많이 사용하는 인터넷 익스플로러나 혹은 FireFox의 경우 브라우저에 맞는 플러그인을 인스톨 해야 볼 수 있다.

3.2  플랜트를 시각화 해보자


PIC
사용자 삽입 이미지

(a) Bouncing Ball 모델
PIC
사용자 삽입 이미지

(b) Scope 블럭을 통한 결과
PIC
사용자 삽입 이미지

(c) 3D 모델을 통한 결과
그림 14: VRML을 이용한 플랜트의 3D 시각화

플랜트를 3D로 시각화 하기 위해서 VRML로 플랜트를 모델링해야 하는데, 이것이 그렇게 쉬운 작업은 아니다. 가장 쉽게 할 수 있는 방법은 일반적으로 많이 사용하는 CAD 툴을 사용하는 것이다. 일반적으로 많이 사용하는 CAD 툴을 보면 저장하기나 혹은 Export 하는 메뉴에서 VRML로 저장하는 기능이 있다. 이를 이용해서 플랜트의 모델링을 하게 되면 직접 VRML 에디터를 이용해서 하는 것 보다는 훨씬 쉽게 모델링 할 수 있다.

그림 14VRML을 이용한 플랜트의 3D 시각화를 보면 고무공 같은 공이 튀는 모습을 모델링하여 그 결과를 scope 블럭을 이용한 경우와 VRML을 이용해서 3D로 시각화를 한 경우이다. 그림 14(b)Subfigure 14(b)와 그림 14(c)Subfigure 14(c)는 같은 결과 값(공의 위치)을 보여 주지만, 보는 사람의 입장에서는 scope 블럭을 이용했을때보다 3D로 시각화한 경우가 보기에도 훨씬 편하고, 모델의 움직임을 쉽게 알 수 있다.

크리에이티브 커먼즈 라이센스
Creative Commons License
이올린에 북마크하기(0) 이올린에 추천하기(0)
받은 트랙백이 없고, 댓글 하나가 달렸습니다.

댓글+트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/response/168

댓글+트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/response/168

트랙백 주소 :: http://www.cipher.pe.kr/tt/cipher/trackback/168

트랙백 RSS :: http://www.cipher.pe.kr/tt/cipher/rss/trackback/168

트랙백 ATOM :: http://www.cipher.pe.kr/tt/cipher/atom/trackback/168

댓글을 달아 주세요

댓글 RSS 주소 : http://www.cipher.pe.kr/tt/cipher/rss/comment/168
댓글 ATOM 주소 : http://www.cipher.pe.kr/tt/cipher/atom/comment/168
  1. 비밀방문자 2010/07/24 17:35  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

[로그인][오픈아이디란?]