본문 바로가기
programming language/MATLAB

MATLAB Code를 사용하여 Simulink model 구성하기

by __observer__ 2015. 3. 29.
반응형

Simulink 사용시 보통 마우스를 사용하여 모델을 구성하곤 합니다.

 

하지만 이런 GUI 방식은 자동화를 위해서는 그리 좋은 방법은 아닙니다.

 

대량의 시스템 구성시 GUI 을 사용한 구성방식은 한없는 노가다일 수 있습니다.

 

단순 반복적인 작업들은 당연히 자동화를 해야 하고 이를 위해서는 Script 가 필수라고 할 수 있죠.

 

simulink 를 구성하기 위한 MATLAB 명령어들로는 add_block, add_line, new_system, open_system, delete_line, delete_block, replace_block, set_param 와 같은 명령어들이 있습니다.

 

new_system() 을 사용하여 Simulink 블록을 구성하고 open_system 명령어를 사용하여 해당 파일을 열 수 있습니다.

 

다음으로 add_block, add_line 함수를 활용하여 블록과 라인을 구성하고 delete_line, delete_block 함수를 활용하여 라인과 블록을 지울 수 있습니다.

 

다음으로 블록을 교체 하기 위해서는 replace_block 함수를 활용합니다.

 

위에 명령어들만 알면 기본적으로 Simulink 블록을 구성하는건 대부분 다 할 수 있을 것 같더군요.

 

마지막으로 set_param 함수를 사용하면 블록의 세세한 파라미터들을 설정 할 수 있습니다.

 

simulink 블록을 시뮬레이션 하는 명령어는 Sim() 이라는 명령어를 사용합니다.

 

아래 참고사이트에 나와 있는 예제를 실행해보면~ 아래 코드와 같습니다. Simulink 모델을 저장하기 위해 save_system 함수를 사용했습니다.


sys = 'testModel';
new_system(sys) % Create the model
open_system(sys) % Open the model
x = 30;
y = 30;
w = 30;
h = 30;
offset = 60;
pos = [x y+h/4 x+w y+h*.75];
add_block('built-in/Inport',[sys '/In1'],'Position',pos);
pos = [(x+offset) y (x+offset)+w y+h];
add_block('built-in/Integrator',[sys '/Int1'],'Position',pos)
add_line(sys,'In1/1','Int1/1','autorouting','on')
pos = [(x+offset*2) y (x+offset*2)+w y+h];
add_block('built-in/Integrator',[sys '/Int2'],'Position',pos)
add_line(sys,'Int1/1','Int2/1','autorouting','on')
pos = [(x+offset*2) y+offset (x+offset*2)+w (y+offset)+h];
add_block('built-in/Scope',[sys '/Scope1'],'Position',pos)
add_line(sys,'Int1/1','Scope1/1','autorouting','on')
delete_line(sys,'Int1/1','Int2/1')
delete_block([sys '/Int2'])
pos = [(x+offset*2) y+h/4 (x+offset*2)+w y+h*.75];
add_block('built-in/Outport',[sys '/Out1'],'Position',pos)
add_line(sys,'Int1/1','Out1/1')
replace_block(sys,'Name','In1','built-in/Sin','noprompt');
set_param([sys '/In1'],'Position',[x y x+w y+h],'Name','Sine Wave');
[t,x,y] = sim(sys);
plot(t,y), ylim([-.5 2.5]), grid on
save_system(sys)
view raw simulinkTest.m hosted with ❤ by GitHub


 

save_system 함수를 사용하여 모델을 저장하면 testModel.slx 라는 모델 파일이 만들어집니다.

 

위 코드를 실행해 보면 다음과 같은 Simulink 모델과 ~

 

다음과 같은 그래프를 MATLAB figure 그래프를 확인 할 수 있습니다.

 

참고 사이트

http://blogs.mathworks.com/seth/2010/01/21/building-models-with-matlab-code/

http://www.goddardconsulting.ca/simulink-creating-using-matlab-code.html


반응형

댓글