C Caller 블록을 사용하여 C 함수 호출하기
이 예제에서는 Simulink®에서 C Caller 블록을 사용하여 직접 작성한 C 함수를 호출하는 방법을 보여줍니다.
이 예제에서는 5개의 사용자 지정 C 함수가 my_func.h
에 정의되어 있고 my_func.c
에서 구현됩니다.
사용자 지정 코드에 사용되는 C 구조체와 열거형 가져오기
C Caller 블록은 C 구조체와 열거형을 지원합니다. 명령 Simulink.importExternalCTypes
를 사용하면 이러한 유형을 Simulink에서 일치하는 Simulink.Bus
객체 또는 Simulink.IntEnumType
클래스로 가져올 수 있습니다. 이 명령은 버스 유형 LIMITBUS
와 COUNTERBUS
, 열거형 TrafficLightColor
를 가져옵니다. 이러한 유형은 MATLAB 작업 공간에 나타납니다.
Simulink.importExternalCTypes('my_func.h', 'EnumClass', 'dynamic');
모델 열기
model = 'slexCCallerExample';
open_system(model);
시뮬레이션 타깃 구성에 헤더 파일 추가하기
모델 구성 파라미터의 시뮬레이션 타깃 창에서 사용자 지정 헤더 파일 및 소스 파일을 지정합니다. 절대 경로, 모델의 디렉터리에 대한 상대 경로, 또는 현재 MATLAB 디렉터리를 지정합니다.
"include 헤더" 창에서 C 전처리기 구문을 사용하여 사용자 지정 헤더 파일을 포함시킵니다. 예를 들어, my_func.h
헤더를 포함시키기 위해 다음 라인을 입력하십시오.
#include "my_func.h"
configset.highlightParameter(model, "SimCustomHeaderCode");
시뮬레이션 타깃 구성에 소스 파일 추가하기
시뮬레이션 타깃 구성의 "소스 파일" 창에서 공백으로 구분된 소스 파일 목록을 사용합니다. 파일 이름에 공백이 있는 경우에는 "my c file.c"
와 같이 큰따옴표로 묶으십시오.
configset.highlightParameter(model, "SimUserSources");
모델 시뮬레이션하기
모델을 시뮬레이션할 때 Simulink는 각 시간 스텝마다 사용자 지정 C 함수를 호출합니다.
sim(model);