MATLAB 은 일종의 소프트웨어 플랫폼이라고 볼 수가 있어서 매트랩 툴박스들은 MATLAB 위에서만 실행됩니다. 따라서 시뮬링크를 사용한다라고 해도 매트랩을 잘 다루어야 시뮬링크를 조금 더 효율적으로 사용할 수 있습니다.

요즘 저는 많은 차량용 로직들을 Simulink Stateflow 로 설계하고 Embedded Coder 를 사용하여 C 코드를 생성해서 개발 보드에 탑재하는 업무를 하고 있습니다. Simulink 를 사용하기 위해서는 샘플레이트를 비롯하여 다양한 configuration 을 하게 되고~ Embedded Coder 를 사용할 때 역시도 마찬가지로 설정 할 것들이 많이 있습니다.

이런 설정들은 그때그때 달라지기도 하지만 사용하는 MCU 가 동일하다면 그리 크게 달라지지는 않습니다. 따라서 한번만 설정하고 해당 설정을 저장해 놓고 사용하는 것이 효율적일 것입니다.

오늘은 MATLAB 스크립트를 사용하여 Simulink configuration 을 하는 방법을 소개하려 합니다. Simulink configuration은 Simulink 모델창에서 Simulation -> Model Configuration Parameters 를 선택하거나 Ctrl + E 를 누르면 실행 됩니다.

그 중에서 아래와 같이 All Parameters 탭에서 메뉴들을 검색 할 수 있는데~ 아래 그림과 같이 해당 메뉴에 대한 Command-Line Name 을 확인 할 수 있습니다. Simulink configuration 내용을 스크립트로 자동화 하고 싶은 경우에 Command-Line Name을 사용하면 됩니다.

Simulink 모델의 기본적인 설정값들은 아래 주소의 메뉴얼을 확인해 보시기 바랍니다.

https://kr.mathworks.com/help/simulink/slref/model-parameters.html

Embedded Coder 를 사용하여 코드 생성을 하기 위해서는 Simulink Solver 셋팅을 Fixed-step discrete (no continuous states) 로 설정하게 되는데~

해당 설정을 하기 위해서는 아래와 같이 명령어를 써주면 됩니다.

set_param(gcs, 'Solver', 'FixedStepDiscrete')

Code Generation 시 Embedded Coder 를 사용하기 위해서는 System target file 설정을 ert.tlc 로 하게 되는데~

이러한 과정을 MATLAB code 로 어떻게 설정하는지를 확인하기 위해서는 아래와 같이

“All Parameters” 에서 “target file” 등으로 검색을 해서 “Command-Line Name” 을 알아 낸 후에 설정해 주면 됩니다.

예로 든 Embedded Coder 를 사용하기 위한 설정은 아래와 같습니다.

set_param(gcs, 'SystemTargetFile', 'ert.tlc')

해당 MATLAB 명령어 설정을 해 본 후에 Simulink configuration 창을 확인 해보면 해당 설정들이 바뀐 것을 확인 할 수 있습니다.



회사에서 MATLAB 을 사용하는데 ver 명령어를 통해 어떤 툴박스가 설치되어 있는지 확인해 보니~ Simscape 툴박스가 설치되어 있더군요. Simscape 와 함께 Simscape Electronics, Simscape Power Systems 도 함께 깔려 있던데 저는 정확히 어떤 차이인지는 잘 모르겠더군요.

어쨌든 학부때 회로이론, 전자회로와 같은 과목을 좋아했던 지라 기왕 깔려 있는거 Simscape 를 한번 사용해 보고 싶다는 생각이 들어서 아래 메뉴얼을 조금 들여다 보고 Simscape 블록으로 아주 간단한 RC 회로를 구성해 봤습니다.

https://kr.mathworks.com/help/physmod/simscape/gs/essential-steps-for-constructing-a-physical-model.html

일단 ssc_new 라고 명령하면 Simscape 를 사용하기 위한 기본적인 configuration 이 설정되는 것 같더군요. 아래와 같이 기본적인 블록이 추가된 형태로 model 파일이 열립니다.

그럼 이제 왼쪽에 있는 Simscape Library 중에서 필요한 블록들을 선택해서 model 파일을 구성하면 되겠네요~

위 모델 파일의 블록 중 PS-Simulink Converter, Simulink-PS Converter 블록은 Simulink 의 블록과 Simscape 블록간에 데이터를 전달하기 위한 블록으로 보입니다.

저는 Simscape 초심자라 간단하게 아래와 같이 RC 회로를 구성해 봤습니다.

전류와 전압값 확인을 위해 Current Sensor 는 직렬로 Voltage Sensor 는 병렬로 연결해 줬고~ 데이터를 Scope 에서 확인하기 위해 PS-Simulink Converter 를 통해 Scope 와 연결 했습니다.

Ctrl + S 를 눌러서 model 파일을 저장하고~ 실행을 해 보니 다음과 같이 전류, 전압 값을 확인 할 수 있었습니다.

그냥 간단하게 해 본거긴 하지만 대충 어떻게 사용하는건지에 대한 감은 오네요. 위 Simscape 관련 tutorial 링크를 좀 더 정독하면서 공부를 한번 해 봐야 겠습니다.

혹시 필요하신 분이 있을까봐 위에 구성했던 모델 파일도 올립니다.

simscapetest2.slx



MATLAB 스크립트의 실행은 스크립트 에디터에서 F5 를 누르거나 command 창에서 해당 되는 스크립트 파일명을 치고 엔터를 쳐서 실행하곤 합니다.

 

함수 스크립트의 경우에도 마찬가지로 일반적인 실행 스크립트와 같이 실행 시킬 수 있지만~

 

입력 argument 가 있는 경우에는 그 상황이 좀 달라집니다.

 



예를 들어보죠.

 


function y=TempFunc()

 

x=1:10;

 

y=x.^2+2.*x+3;

 

figure,

plot(x,y), grid on

 

 

위와 같은 TempFunc () 함수는 에디터에서 바로 F5 를 누르거나 초록색 삼각형의 실행 버튼을 눌러도 실행이 됩니다.

 

하지만 다음과 같이 x 를 입력 argument 로 준 경우에는 에디터에서 F5 를 눌러서는 제대로 실행이 되지 않죠.

function y=TempFunc(x)

 

y=x.^2+2.*x+3;

 

figure,

plot(x,y), grid on

 

 

다음과 같이 에러가 납니다.

 

x 라는 값이 없으니 당연한 결과죠.

 

뭐 command 창에서 x 값을 정의해 준 후에 다음과 같이 하면 되겠지만~

 

버튼 한번에 실행되면 더욱 좋겠죠.

 

MATLAB Editor 의 Debug 메뉴à Run Configuration for 파일명 à Edit Configurations for 파일명 으로 들어가 줍니다.

 

이런 창이 나타나면~ 빨간색으로 표시한 부분의 버튼을 눌러서 Run Configuration 을 추가해 줍니다.

 

그리고 다음과 같이x 라는 argument 와 TempFunc(x) 함수를 작성해 줍니다. configuration name 이 TempFunc_2 이라는 것을 확인합니다.

 

이제 다시 MATLAB 에디터에서 다음같이 설정해 줍니다.

 

에디터의 실행 버튼 옆의 조그만 아래 삼각형 버튼을 눌러서 configuration을 선택 할 수도 있습니다.

 

이렇게 선택을 한 후에 에디터 창에서 F5 를 눌러 보시면 위에서 작성했던 TempFunc_2 configuration이 실행되기 때문에 함수를 실행 시킬 수 있습니다.


위 설명한 과정에 대한 animation입니다.  아래 그림을 클릭하시면 크게 보실수 있습니다. 






+ Recent posts