Main Content

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 클래스로 가져올 수 있습니다. 이 명령은 버스 유형 LIMITBUSCOUNTERBUS, 열거형 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);

참고 항목

관련 항목