아래 포스팅에서도 소개한적이 있지만 요즘 Simulink 에서는 MDL 확장자 대신에 SLX 를 주로 사용합니다. 


MDL 파일의 경우 에디터에서 열어서 확인 해 볼 수가 있었는데 SLX 파일의 경우 에디터에서 열어 볼 수가 없더군요. 

그래서 오늘은 SLX 파일을 텍스트 에디터에서 확인 하는 방법에 대해 소개해 보려 합니다.

SLX 파일은 JAR 와 같이 아카이브 파일 형태라고 합니다.

test.slx 파일이 잇다면 파일의 확장자를 test.zip 으로 변경합니다.

다음과 같은 메시지가 나오는데 예를 클릭합니다.


test.zip 파일을 압축 프로그램을 사용하여 압축 해제 합니다. 저는 반디집을 사용했습니다.

압축을 해제 하고 폴더에 들어가 보면 아래 그림과 같이 xml 파일이 나타납니다.


Simulink 폴더에 들어가면 아래 그림과 같은 파일들이 나타나고


blockdiagram.xml 파일에는 Simulink블록도 정보가 나타나고

stateflow.xml 에는 stateflow 의 정보가 포함되어 있습니다.

에디터에서 Simulink정보를 수정한 경우에는 폴더를 압축한후 파일명을 slx 로 만들어 준 후에 Simulink에서 열면 될 것입니다.

막상 파일을 텍스트 에디터에서 열었더니 XML 의 각 태그의 의미가 어떻게 되는건지 정확히 모르겠네요.

텍스트 에디터를 통해 SLX 파일을 수정 할 때는 XML 파일의 구조를 완벽히 파악 한 후에 작업해야 할 것으로 생각되네요.



MATLAB 은 1 년에 두 번 업데이트를 진행하고 이에 따라 a, b 버전을 release 합니다.

 

2016 년에는 2016a, 2016b 버전이 나왔죠.

 

2012a 버전부터 Simulink 모델 파일의 확장자가 MDL 에서 SLX 형태로 변경 됐습니다.

 

최신 버전에서는 하위 호환을 위해 MDL, SLX 를 둘 다 지원하고 있습니다.

 

그냥 MDL 파일을 그대로 사용해도 되지만 기왕이면 최신 버전으로 사용하기 위해 저는 과거에 만들었던 MDL 파일을 SLX 로 변환해서 사용하고 있습니다.

 

단순히 MDL 확장자를 SLX 로 변경하는건 탐색기를 통해서도 가능 하겠지만 이렇게 변환한 경우에는 해당 모델 파일이 정상적으로 동작하지 않습니다. 단순히 확장자만 바뀐게 아니기 때문이죠.

 

MDL 파일을 SLX 로 변경 할 때는 Simulink 에서 모델을 연 다음에 다른 이름으로 저장하기에서 확장자를 바꿔 줘도 되지만

 

다음과 같이 스크립트를 작성해서 변환하는게 훨씬 더 효율적입니다.

 

아래 스크립트는 현재 폴더내의 MDL 파일을 모두 SLX 파일로 변경하는 코드 입니다.

 

mdlFiles = dir('*.mdl');

 

for n=1:length(mdlFiles)

    modelName = strrep(mdlFiles(n).name, '.mdl', '')

    newName = strrep(mdlFiles(n).name, '.mdl', '.slx')

      

    load_system(modelName)

    save_system(modelName, newName)    

    close_system(modelName)

end

 

위 코드를 조금만 바꾸면 SLX 파일을 MDL 로 바꾸는 것도 그리 어렵지 않게 하실 수 있을 겁니다.


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 함수를 사용했습니다.



 

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


+ Recent posts