Main Content

MATLAB Function 블록을 사용하여 C 코드 통합하기

Simulink® 모델에 사용하려는 C 코드가 있으면 MATLAB Function 블록을 사용하여 모델에 외부 C 코드를 호출할 수 있습니다. MATLAB Function 블록은 MATLAB® 명령을 사용하여 C 코드를 호출합니다. 외부 C 코드를 호출하는 MATLAB Function 블록을 사용하여 모델에서 코드를 생성할 수도 있습니다.

Simulink 모델에서 C 코드 호출하기

다음 단계를 따라 Simulink 모델에서 외부 C 코드를 호출합니다.

  1. 모델에서 사용하려는 C 코드가 포함된 소스 파일(.c)과 헤더 파일(.h)을 식별합니다.

  2. 모델에 MATLAB Function 블록을 삽입합니다.

  3. MATLAB Function 블록에서 coder.ceval 함수를 사용하여 C 코드를 호출합니다. 데이터를 참조로 전달하려면 coder.ref, coder.rref 또는 coder.wref를 사용하십시오.

  4. 구성 파라미터 창의 시뮬레이션 타깃 창에서 C 소스 파일과 헤더 파일을 지정합니다. 큰따옴표를 사용하여 헤더 파일을 포함시키십시오(예: #include "program.h"). 작업 폴더 외부에 있는 C 소스 파일 및 헤더 파일에 액세스해야 하는 경우 시뮬레이션 타깃 창의 Include 디렉터리 텍스트 상자에 경로를 나열하십시오.

    또는 coder.cinclude 함수 및 coder.updateBuildInfo 함수를 사용하여 MATLAB 코드에서 소스 파일 및 헤더 파일을 지정하십시오. 외부 코드에 대한 인터페이스를 개발하기 위해 coder.ExternalDependency 클래스를 사용할 수 있습니다. 지원되는 워크플로를 확인하려면 Import custom code 항목을 참조하십시오.

  5. Simulink 모델을 테스트하고 올바르게 작동하는지 확인합니다.

  6. Simulink Coder™ 라이선스가 있는 경우 타깃에 대한 코드를 생성할 수 있습니다. 코드 생성 시 동일한 소스 파일 및 헤더 파일을 사용하려면 구성 파라미터를 열고 코드 생성 > 사용자 지정 코드창으로 이동하여 [시뮬레이션 타깃]과 동일한 사용자 지정 코드 설정 사용을 활성화합니다. 다른 소스 파일 및 헤더 파일을 지정할 수도 있습니다.

    시뮬레이션 및 코드 생성에 다른 명령을 실행하도록 코드를 조건화하려면 coder.target 함수를 사용할 수 있습니다.

예제 MATLAB Function 블록에서 coder.ceval 사용하기

이 예제에서는 MATLAB Function 블록에서 간단한 C 프로그램 doubleIt을 호출하는 방법을 보여줍니다.

  1. 현재 작업 폴더에 소스 파일 doubleIt.c를 만듭니다.

    #include "doubleIt.h"
    
    double doubleIt(double u)
    {
         return(u*2.0);
    }
    
  2. 현재 작업 폴더에 헤더 파일 doubleIt.h를 만듭니다.

    #ifndef MYFN
    #define MYFN
    
    double doubleIt(double u);
    
    #endif
    
  3. 새 Simulink 모델을 만듭니다. myModel로 저장합니다.

  4. 라이브러리 브라우저에서 Simulink > User-Defined Functions 라이브러리로 이동하고 MATLAB Function 블록을 모델에 추가합니다.

  5. 블록을 더블 클릭하여 MATLAB Function 블록 편집기를 엽니다. doubleIt 프로그램을 호출하는 코드를 입력합니다.

    function y = callingDoubleIt(u)
    
    y = 0.0;
    y = coder.ceval("doubleIt",u);
    
  6. 값이 3.5Constant 블록을 MATLAB Function 블록 입력 포트에 연결합니다.

  7. Display 블록을 출력 포트에 연결합니다.

    This image shows a MATLAB Function block set to output to a Display block. The MATLAB Function uses a constant block with a value of 3.5 as an input.

  8. 구성 파라미터 창을 열고 시뮬레이션 타깃 창으로 이동합니다.

  9. 코드 정보 탭에서 include 헤더를 클릭한 다음 #include "doubleIt.h"를 입력합니다.

    This image shows the Simulation Target pane. The text #include "doubleIt.h" has been included in the Include headers section.

  10. 소스 파일 탭을 클릭하고 doubleIt.c를 입력합니다. 확인을 클릭합니다.

    This image shows the Simulation Target pane. The text #include doubleIt.c has been included in the Source file section.

  11. 시뮬레이션을 실행합니다. Display 블록에 값 7이 표시됩니다.

가져온 버스 및 열거형의 유형 정의 제어하기

MATLAB Function 블록을 사용하여 외부 C 코드를 호출할 때 모델에 가져온 버스와 열거형의 유형 정의를 제어할 수 있습니다. Simulink가 사용자를 위해 유형 정의를 생성하거나, 사용자가 유형 정의를 포함하는 헤더 파일을 제공할 수 있습니다. 가져온 버스와 열거형을 위한 typedef 생성 파라미터를 전환하여 이 동작을 제어할 수 있습니다. 이 파라미터를 찾으려면 구성 파라미터 창을 열고 시뮬레이션 타깃 창으로 이동한 다음 고급 파라미터 섹션을 확장하십시오.

Simulink를 구성하여 자동으로 유형 정의를 생성하려면 가져온 버스와 열거형을 위한 typedef 생성을 활성화하십시오. 열거형과 버스 유형을 정의하는 사용자 지정 헤더 파일을 포함하려면 가져온 버스와 열거형을 위한 typedef 생성을 지우고 헤더 파일 텍스트 상자에 헤더 파일을 나열하십시오.

참고 항목

클래스

함수

관련 항목