본문 바로가기

Software/MATLAB

[MATLAB 연재] 5. Simulink의 기초

본 강좌에 사용되는 MATLAB은 버젼 7.9.0 (R2009b)을 대상으로 합니다.

Simulink 실행하기 !

Simulink를 실행하는 방법은 Command Window에서 "Simulink"라고 입력하거나 혹은

위에 표시된 아이콘을 누르면 됩니다. 그러면 Simulink Library가

나타나는데요. 위에 표시된 새화일 열기를 클릭하시면

위와 같이 작업이 가능한 창이 나타납니다. 일단 저 창에 뭘 입력하고 실행하기 전에 자주사용하는 (순전히 제가 사용하는 기준입니다...^^) 블럭들을 간단히 소개하고 시작해야겠네요. 

Sources !

Sources 폴더에는 출력만 가지는 블럭들이 모여있습니다. 

위에서 보시면 

  • Clock : 시간을 출력해줍니다. 몇분몇초 이런 형식이 아니라 그냥 초 단위로 나타납니다.
  • From File : mat화일로 저장된 블럭에서 데이터를 가져와서 일정 시간간격으로 출력해줍니다.
  • Signal Builder : sin과 같이 수학적으로 간단히 수식화 할 수 없는 신호를 GUI기반으로 편집할 수 있게 해줍니다.
  • Chirp Signal : 통상 system identification에서 시스템에 가하는 입력신호로 많이 사용되는 걸로 알고 있는데요. 저주파부터 고주파까지의 정현파신호를 출력으로 가집니다.
  • Constant : 말 그대로 상수를 출력으로 가집니다.
  • From Workspace : Workspace상에서 저장되어있는 변수를 일정시간간격에 맞춰 출력해 줍니다.
  • In1 : subsystem등을 만들때 subsystem내에서 입력을 정의할 때 사용합니다.
  • Signal Generator : matlab상의 function generator라고 생각하시면 됩니다. 다양한 신호를 생성할 수 있습니다.
  • Step : 원하는 시간에 step입력을 가지도록 설정할 수 있습니다.

Sink !

데이터의 출력을 어떤 형태로 표현 혹은 저장할 것인지를 정해주는 폴더입니다.

  • Out1 : 위의 In1처럼 subsystem내에서 사용하는 것입니다.
  • To File : 입력받은 데이터들을 mat화일 형태로 바로 저장해줍니다.
  • XY Graph : X축 데이터와 Y축 데이터를 받아 그림을 그려줍니다.
  • Scope : 시뮬레이션 시간을 x축으로 가지고, 주어진 신호를 y축신호로 해서 그림을 출력해 줍니다.
  • To Workspace : 입력받은 데이터들을 workspace에 저장해줍니다.

Continuous & Discontinuities !

저는 Continuous 폴더에서는 딱 두개를 참 자주 사용하는데요. 바로 미분(derivative)적분 (integrator) 블럭입니다. 적분블럭에는 초기치를 지정할 수 있도록 되어있습니다.

Discontinuities 폴더에서는 Saturation 블럭을 많이 사용합니다. 이 블럭은 입력받은 신호를 특정범위를 벗어날때 일정한 값을 가지도록 변환해줍니다.

Math Operation !

각종 수학 함수를 많이 가지고 있는데, 전 블럭으로 복잡하게 꾸미기 보다는 function블럭이나 embedded function 블럭을 m-file로 작성하는 버릇이 있어서 이 폴더에서는 몇가지만 사용을 합니다. 제가 자주 사용한다는 방금전의 방법은 다음에 다시 알려드리겠습니다.

  • Gain : 신호에 특정한 값을 이용해 실수배를 수행합니다.
  • Product : 두 개 이상의 신호를 곱해줍니다.

  • Sign : 경계값(0)을 기준으로 1과 -1의 값을 가지도록 합니다.
  • Sine Wave Function : 정현파 신호를 만들어 줍니다.
  • Sum : 두개이상의 신호를 더해줍니다.

User-Defined Function !

말 그대로 Function문을 작성할 수 있습니다. 

  • Fcn : mux를 통해 다수의 입력을 받아 그것을 이용해서 적절한 출력을 가지도록 한줄의 함수를 작성할 수 있습니다.
  • MATLAB Fcn : matlab의 command window에서 실행할 수 있는 명령이라면 이 블럭에 입력해서 그 함수의 출력을 사용할 수 있게 해줍니다.
  • Embedded Matlab Function : Fcn블럭은 한줄의 명령어만 사용해서 복잡한 코드의 구현이 힘들때가 있는데, 이때 MATLAB Fcn을 사용하면 됩니다. 그러나 이 블럭은 M-File을 계속 가지고 다녀야해서 어떨때는 불편할 때가 있는데, 그럴때 embedded matlab function을 사용하면 유용합니다. 그러나 이 embedded블럭은 사용상의 범위가 약간 한정적입니다.

블럭 찾기 !

처음 사용하는 분이라면, 일일이 찾아다니며 내가 필요로 하는 블럭의 위치를 알아둘 필요가 있습니다만, 저같은 경우는 대부분 블럭찾기를 통해 사용할 블럭을 찾습니다.

위에 표시된 부분에 fcn이라고 치고 엔터를 누르면

fcn 과 관련있는 블럭들이 검색되는데 거기서 원하는 것을 사용하는 것이지요^^

간단한 예제 !

이제 간단한 예제를 통해 simulink의 사용을 익혀보겠습니다.

처음에 만들었던 untitled.mdl 창에서 위 블럭을 구성하려고 한번 시도해 보시길 바랍니다. Library에서 블럭을 마우스로 왼쪽 버튼으로 누르고 새로 열린 작업창에 가져다 놓으면 됩니다. 그리고, 왼쪽 버튼으로 누르고 선을 그어 주거나, Clock 블럭을 마우스 왼쪽 버튼을 누르고 키보드에서 Ctrl키를 누르고 다음 블럭을 마우스 오른쪽 버튼을 눌러가면서 클릭하면 위 그림처럼 흐름선이 만들어 집니다.

Sine Wave Function을 더블클릭하면 위의 창이 나타나는데요. 표시된 부분을 보시면 설명이 나타나있습니다. 이걸 보고 아래의 각 성분을 수정하시면 됩니다. 지금은 그저 첫 사용에서 사용법만 익히는 것이니 그대로 두도록 하지요. 작업창의 상단에 플레이버튼이 있습니다. 그걸 누르고, Scope창을 더블클릭하시면

와 같은 결과를 얻을 수 있습니다. 이제 조금더 확장해서

위 그림처럼 미분하고 적분까지 해서 원신호와 같이 세개의 신호를 한 Scope창에서 확인해보도록 하겠습니다. 이때 사용하는 것이 mux라는 블럭입니다. 이 블럭을 library에서 가져와서 더블클릭하시면

위와 같이 나타나는데, 여기서 우리는 신호가 세개니까 "3"이라고 입력하시면 됩니다.

mux블럭으로 scope블럭에 두개이상의 신호를 넣은 경우 노란색이 제일 위의 신호, 그 다음이 적색, 그 다음이 청록색입니다. 그런데 화면에서 청록색, 즉 미분된 신호의 처음이 좀 이상하죠? 그것은 시뮬레이션이 시작하는 첫 단계에서 미분값이 약간 오차를 가지기 때문인데다, 지금은 설정에 auto로 잡혀있는 샘플링간격이 좀 넓게 나타나서 눈에 거슬려보이기 때문입니다. 아까도 말했지만, 지금은 뭐 그냥 한번 실행해보는 것이 목적이니까. 패쓰~~~^^ 

MATLAB 05. Simulink의 기초.pdf

반응형