본문 바로가기
Embedded SW/Control Theory

Simulink를 이용한 전달함수 시뮬레이션 수행 방법 정리

by 방구석 임베디드 2022. 9. 22.
반응형

안녕하세요.

지난시간에 매트랩 명령어를 이용하여

DC모터의 전달함수를 만들고

응답에 따른 Output을 그래프로 그려보는 시간을 가졌습니다.

 

오늘은 동일한 작업을 수행할 것인데

Simulink를 통해서 수행해 보도록 하겠습니다.

 

그런데 매트랩 Simulink는 무엇을 의미하는 것일까요?

결국 매트랩은 명령어의 집합입니다.

그런데 이러한 명령어를 조금더 편하게 블록 단위의 그래프로 만들어서

마치 라이브러리를 사용하는 것처럼 사용할수 있게 만들었습니다.

 

이러한 시뮬링크 기능을 활용하면

블록단위의 라이브러리를 연결하여

코드를 만들수도 있고

시뮬레이션도 수행할수 있습니다.

그렇다면 지금부터 시뮬링크를 한번 활용해 보도록 하겠습니다.

matlab command 창에 simulink를 기입해 보도록 하겠습니다.

그러면 아래와 같은 창이 나오게 됩니다.

여기서 빈모델을 선택해 보도록 하겠습니다.

그리고 아래와 같이 라이브러리 브라우저를 선택하시면

다양한 블록이 나오는 것을 확인하실 수 있습니다.

그러면 아래와 같이 constant block을 하나 만들어서

1의 값을 주도록 설정하고

여기에 sin함수를 해서 output값을 출력하도록 만들어 보겠습니다.

그리고 아래와 같이 Scope Block을 이용하면

output의 그림이 시간단위로 그려지게 됩니다.

아래 그림에서 중지시간 10초가 보이시나요?

이 말은 시뮬레이션을 10초동안 하겠다는 뜻입니다.

그리고 이 데이터를 workspace로 가져올수도 있습니다.

우와 같이 workplace block을 사용하면

아래와 같이 workplace에 저장이 됩니다.

지금 Time과 Data가 보이고 있습니다.

이것을 이용해서

한번 그래프를 그려 보도록 하겠습니다.

plot(out.simout.Time, out.simout.Data)

결국 시뮬링크를 이용하여

0 에서 0.02간격으로 10까지

51개의 시간 데이터를 만들고

이 시간에 따른 결과값을 저장하여 그림을 그리고 있는 것을 볼 수 있습니다.

우리가 직접 명령어를 기입할 필요없이

직관적으로 시뮬레이션을 수행해 주고 있습니다.

 

이것이 시뮬레이션의 장점이라고 할수 있습니다.

 

따라서 우리는

매틀랩을 이용하여

모듈을 만들고 이것을 오프라인으로 테스트 할수 있습니다. 

이것을 Model In the Loop Simulation 이라고 부르고 있습니다.

MILS라고 부르기도 합니다.

 

나중에 MILS, SILS, PILS, HILS에 대해서 조금더 공부할게요.

 

그러면 이제 이전 글에서 수행했던 시뮬레이션을 한번 수행해 보도록 하겠습니다.

여기서 G(s)는 아래와 같습니다.

이제 시뮬링크로 한번 그림을 그려보도록 하겠습니다.

아래와 같이 동일한 결과를 그릴수 있습니다.

이때 지금 사용한 블록은

Transfer Function (전달함수) 블록입니다.

 

 

시뮬링크를 언제 사용하면 좋을까요?

저는 시뮬링크를 이용하여

가독성이 좋은 블록으로 알고리즘을 구현하고

이것을 auto code generation 하여

c코드로 gen하고 

이것을 코드에 merge 하여 사용한 경험이 있습니다.

이렇게 복잡한 알고리즘을 직접 c 코드로 작성하는 것이

실수도 많을 뿐더러, 

복잡합니다. ㅎㅎㅎ

 

따라서 제어알고리즘을 simulink로 만든다음

이것을 코드 gneration하는 것이 더 편한 방법일 수 있습니다.

 

하지만 simulink로 구현하는 코드는

포인터에 약합니다.

따라서 실제 우리가 개발하는 코드에서

포인터를 많이 사용하고 있는 

부분에서는

직접 코딩을 하는 것이 더 수월한 방법일수 있습니다.

 

그래서 많은 곳에서는

하이브리드 형태로 사용하기도 합니다.

시뮬링크 + 손코드

이렇게요 ㅎㅎ

 

이제 매트랩에 대한 정말 정말 기본 공부가 된것 같습니다.

이제 부터 DC 모터 속도 제어를 어떻게 하는지 알아 보도록 하겠습니다.

반응형

댓글