Main Content

Simulink.importExternalCTypes

C 또는 C++ 코드에서 정의한 사용자 지정 데이터형을 나타내는 Simulink 표현을 생성

설명

예제

importInfo = Simulink.importExternalCTypes(headerFiles)headerFiles로 식별된 C 또는 C++ 헤더 파일(.h 또는 .hpp)의 구문을 분석하여 typedef, struct, enum 유형 정의를 찾고, 유형에 대한 Simulink® 표현을 생성합니다. 출력값 importInfo는 성공적으로 가져온 유형과 성공적으로 가져오지 못한 유형을 식별합니다.

Simulink 표현을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

기본적으로 이 함수는 다음과 같은 작업을 수행합니다.

  • Define Simulink Enumerations 항목에 설명된 대로 Simulink.IntEnumType에서 열거형 클래스를 파생하는 스크립트 파일을 생성하여 열거형을 가져옵니다. 필요한 경우 클래스 정의를 편집하여 열거형을 사용자 지정할 수 있습니다(예: addClassNameToEnumNames 메서드 구현).

  • 기본 작업 공간에 Simulink.Bus 객체를 생성하여 구조체형을 가져옵니다.

  • 기본 작업 공간에 Simulink.AliasType 객체를 생성하여 프리미티브 typedef 문을 가져옵니다.

  • 호스트 컴퓨터의 워드 길이에 맞게 일반 C 데이터형(예: int 또는 short)을 해석합니다. 예를 들어, 대부분의 최신 컴퓨터에서는 int형이 32비트의 워드 길이를 가지므로 이 함수는 Simulink의 데이터형 int32형을 사용하는 버스 요소로 int형 구조체 필드를 표현합니다.

    이 디폴트 동작을 재정의하려면 HardwareImplementation 쌍 인수를 사용하여 타깃 하드웨어 보드를 식별하십시오.

디폴트 동작에 관한 추가 정보는 항목을 참조하십시오.

예제

importInfo = Simulink.importExternalCTypes(modelName)modelName으로 식별한 모델을 분석하여 사용자 지정 C 데이터형에 대한 Simulink 표현을 생성합니다. 시뮬레이션 중에 포함할 헤더 파일을 식별하도록 모델에서 시뮬레이션 타깃 구성 파라미터를 사용할 때, 호스트 컴퓨터에서 모델을 시뮬레이션할 용도로 이 구문을 사용하여 유형을 가져옵니다. 이 함수는 호스트 컴퓨터의 워드 길이에 맞게 일반 C 데이터형을 해석합니다.

이 구문을 사용할 때 타깃 모델의 구성 파라미터와 충돌할 수 있는 쌍 인수(예: HardwareImplementation)를 사용하지 마십시오. 이러한 쌍 인수를 이 구문과 함께 사용하면 함수가 경고를 생성합니다.

예제

importInfo = Simulink.importExternalCTypes(___,Name,Value)는 하나 이상의 이름-값 쌍 인수를 사용하여 추가 옵션을 지정합니다. 이 구문을 사용하여 다음과 같은 작업을 수행할 수 있습니다.

  • Names 쌍 인수를 사용하여 가져올 유형의 이름을 지정합니다.

  • Simulink가 가져온 유형을 저장하는 방식을 제어합니다(예: Simulink 데이터 사전에 유형 생성). MATFileDataDictionary 쌍 인수를 사용하십시오.

  • 함수가 일반 C 데이터형을 해석하는 방식을 제어합니다. HardwareImplementation 쌍 인수를 사용하십시오.

  • 업데이트된 C 코드 정의를 다시 가져오도록 시도하여 C 코드 정의와 Simulink 표현 사이의 동기화 상태를 유지합니다. 기존 Simulink 표현을 덮어쓸지 여부를 선택할 수 있습니다. OverwriteVerbose 쌍 인수를 사용하십시오.

예제

모두 축소

이 예제에서는 헤더 파일에서 C 구조체형(struct)과 열거형(enum) 데이터형의 Simulink 표현을 생성하는 방법을 보여줍니다.

현재 폴더에 ex_cc_simpleTypes.h 파일을 만듭니다.

typedef enum {
  PWR_LOSS = 0,                 /* Default value */
  OVERSPD,
  PRESS_LOW,
} fault_T;

typedef struct {
    double coeff;
    double init;
} params_T;

Simulink.importExternalCTypes를 호출하여 유형의 Simulink 표현을 생성합니다.

Simulink.importExternalCTypes('ex_cc_simpleTypes.h');

이 함수는 기본 작업 공간에 Simulink.Bus 객체인 params_T를 만듭니다.

객체의 속성을 검사하기 위해 유형 편집기를 엽니다.

typeeditor

각 버스 요소는 ex_cc_simpleTypes.h에서 해당 구조체 필드와 일치하는 이름과 데이터형(double형)을 사용합니다.

현재 폴더에서, 생성된 파일 fault_T.m을 검사합니다. 이 파일은 열거형 fault_T를 열거형 클래스로 정의합니다.

Bus 객체와 열거형 클래스를 사용하여 Simulink 모델에 신호 및 파라미터 데이터형을 설정할 수 있습니다.

이 예제에서는 사용자 지정 데이터형(typedef)을 사용하는 필드가 포함된 구조체형의 Simulink 표현을 생성하는 방법을 보여줍니다.

현재 폴더에 ex_integer_aliases.h 파일을 만듭니다.

typedef int sint_32;

typedef unsigned short uint_16;

현재 폴더에 ex_cc_struct_alias.h 파일을 만듭니다.

#include "ex_integer_aliases.h"

typedef struct {
    sint_32 accum;
    uint_16 index;
} my_ints_T;

기본 작업 공간에 있는 Simulink.Bus 객체로 구조체형을 Simulink에 가져옵니다. typedef 문을 Simulink.AliasType 객체로 가져옵니다.

Simulink.importExternalCTypes('ex_cc_struct_alias.h');

Bus 객체에 있는 버스 요소의 데이터형을 검사합니다. 예를 들어, 구조체 필드 accum에 대응하는 첫 번째 버스 요소의 DataType 속성을 검사합니다.

my_ints_T.Elements(1)
ans = 

  BusElement with properties:

              Name: 'accum'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'sint_32'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
        SampleTime: -1
              Unit: ''
       Description: ''

Simulink.importExternalCTypes 함수는 생성된 Simulink.AliasType 객체를 사용하여 버스 요소의 데이터형을 설정합니다.

기본 작업 공간에 있는 Simulink.AliasType을 검사합니다. 예를 들어, sint_32라는 이름의 객체는 ex_integer_aliases.h에 있는 typedef 문 중 하나에 대응합니다.

sint_32
sint_32 = 

  AliasType with properties:

    Description: ''
      DataScope: 'Imported'
     HeaderFile: 'ex_integer_aliases.h'
       BaseType: 'int32'

대부분의 호스트 컴퓨터(기본적으로 이 함수에서 타깃으로 하는 컴퓨터)의 경우 int의 워드 길이는 32비트고 unsigned short의 워드 길이는 16비트입니다. 이 함수는 intunsigned short를 Simulink 유형 int32uint16에 매핑합니다.

Embedded Coder를 사용한다면 모델에서 생성한 코드는 표준 데이터형 이름인 int32_Tuint16_T 대신 sint_32uint_16을 사용할 수 있습니다.

이 예제에서는 가져온 데이터형을 Simulink 데이터 사전에 저장하는 방법을 보여줍니다. 데이터 사전은 하나 이상의 Simulink 모델에 대해 데이터 사양(예: 신호 및 블록 파라미터 값), 데이터형 및 다른 설계 데이터를 저장합니다.

현재 폴더에 ex_cc_simpleTypes.h 파일을 만듭니다.

typedef enum {
  PWR_LOSS = 0,            /* Default value */
  OVERSPD,
  PRESS_LOW,
} fault_T;

typedef struct {
    double coeff;
    double init;
} params_T;

myDictionaries라는 이름의 하위 폴더를 만듭니다.

mkdir('myDictionaries')

Simulink.importExternalCTypes를 호출하여 유형의 Simulink 표현을 생성합니다. 새 하위 폴더에 새 데이터 사전 ex_cc_myTypes.sldd를 생성하여 유형 정의를 영구적으로 저장합니다.

Simulink.importExternalCTypes('ex_cc_simpleTypes.h',...
    'DataDictionary','ex_cc_myTypes.sldd',...
    'OutputDir','myDictionaries');

사전의 내용을 검사하려면 현재 폴더를 myDictionaries로 설정하고 사전 파일을 더블 클릭하십시오.

사전에서 Simulink 표현을 사용하려면 사전에 하나 이상의 모델을 연결해야 합니다. Migrate Models to Use Simulink Data Dictionary 항목을 참조하십시오.

이 예제에서는 사용자가 이름으로 식별하는 열거형과 구조체 데이터형에 대해서만 Simulink 표현을 생성하는 방법을 보여줍니다.

현재 폴더에 ex_cc_manySimpleTypes.h 파일을 만듭니다. 이 파일은 params_T, signals_T, states_T라는 세 개의 구조체형을 정의합니다.

typedef struct {
    double coeff;
    double init;
} params_T;

typedef struct {
    double flow_rate;
    double steam_press;
} signals_T;

typedef struct {
    double accum;
    double error;
} states_T;

params_Tsignals_T에 대해서만 Simulink 표현을 생성합니다.

Simulink.importExternalCTypes('ex_cc_manySimpleTypes.h',...
    'Names',{'params_T','signals_T'});

Simulink.Bus 객체인 params_Tsignals_T가 기본 작업 공간에 표시됩니다.

기본적으로 Simulink.importExternalCTypes는 내장 클래스 Simulink.IntEnumType에서 파생되는 열거형 클래스를 생성하여 열거형 데이터형을 표현합니다. 생성된 클래스를 사용하는 모델에서 시뮬레이션하거나 코드를 생성할 때, 모델에 대해 선택한 구성 파라미터(예: 하드웨어 구현 창)에 따라 Simulink.IntEnumType과 열거형 클래스에서 사용하는 특정 정수부 길이가 결정됩니다.

기본적으로 이 함수는 호스트 컴퓨터의 워드 길이에 따라 일반 프리미티브 C 데이터형(예: shortint)을 해석합니다. 예를 들어, int 구조체 필드를 표현하기 위해 이 함수는 일반적으로 32비트 데이터형인 int32를 해당 버스 요소에 적용합니다. 호스트 컴퓨터 이외의 하드웨어에 대해 시뮬레이션하거나 코드를 생성하려면 HardwareImplementation 쌍 인수를 사용하여 타깃 하드웨어를 식별하고, 더 나아가 하드웨어의 워드 길이를 식별하십시오.

이 예제에서는 16비트 하드웨어에서 사용하려는 코드에서 데이터형을 가져오는 방법을 보여줍니다. 이 보드의 경우 int는 16비트 길이이며 열거형 데이터(enum)의 각 항목은 16비트를 사용합니다.

현재 폴더에 ex_cc_intTypes.h 파일을 만듭니다.

typedef enum {
  PWR_LOSS = 0,            /* Default value */
  OVERSPD,
  PRESS_LOW,
} fault_T;

typedef struct {
    int coeff;
    int init;
} params_T;

이 코드는 일반 C 데이터형 int를 사용하는 필드가 포함된 열거형 데이터형과 구조체형을 정의합니다.

구조체형의 정확한 Simulink 표현을 생성하려면 먼저 기존 모델을 열거나 새 모델을 만드십시오. 이 예제에서는 ex_hdwImpl_16bit라는 새 모델을 만듭니다.

새 모델에서 구성 파라미터 > 하드웨어 구현 > 장치 공급업체Atmel로 설정합니다. 장치 유형AVR로 설정합니다.

또는, 명령 프롬프트에서 다음 명령을 사용하여 모델을 만들고 구성할 수도 있습니다.

new_system('ex_hdwImpl_16bit','Model');
set_param('ex_hdwImpl_16bit','ProdHWDeviceType','Atmel->AVR')

유형에 대한 Simulink 표현을 생성합니다. 타깃 16비트 하드웨어의 워드 길이를 지정하려면 모델 구성 파라미터(하드웨어 구현 설정을 포함하는 파라미터)를 Simulink.ConfigSet 객체로 추출하십시오.

configSet = getActiveConfigSet('ex_hdwImpl_16bit');
Simulink.importExternalCTypes('ex_cc_intTypes.h','HardwareImplementation',configSet);

Simulink.Bus 객체인 params_T가 기본 작업 공간에 표시됩니다. coeff와 같은 버스 요소는 Simulink 데이터형 int16형을 사용합니다.

params_T.Elements(1)
ans = 

  BusElement with properties:

              Name: 'coeff'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'int16'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

현재 폴더에서 fault_T.m 파일은 fault_T 열거형 클래스를 정의합니다. 이 클래스는 Simulink.IntEnumType에서 파생되므로, 모델 구성 파라미터를 사용하여 타깃 하드웨어를 식별하고, 더 나아가 올바른 네이티브 정수부 길이를 식별해야 합니다.

현재 폴더에 ex_cc_fixpt_struct.h 파일을 만듭니다.

typedef struct {
    
    int coeff;   /* Word length 16, 
       binary fraction length 7 */
    
    int init;   /* Word length 16, 
       binary fraction length 3 */
    
} params_T;

이 파일은 고정소수점 데이터형을 사용하는 필드가 포함된 구조체형을 정의합니다. 예를 들어, 이 구조체는 coeff 필드를 부호가 있는 16비트 정수 데이터형으로 저장합니다. 이진 소수부 길이 7은 저장된 정수 값을 실제 값에 연관 짓습니다.

이 코드가 16비트 하드웨어에서 작동한다고 가정해 보겠습니다(이런 경우 일반 C 데이터형 int는 16비트 워드 길이를 가짐). 유형의 Simulink 표현을 생성하려면 먼저 하드웨어를 식별하는 coder.HardwareImplementation 객체를 만드십시오.

hdw = coder.HardwareImplementation;
hdw.ProdHWDeviceType = 'Atmel->AVR';

구조체형의 Simulink 표현을 생성합니다.

Simulink.importExternalCTypes('ex_cc_fixpt_struct.h',...
    'HardwareImplementation',hdw);

Simulink.Bus 객체인 params_T가 기본 작업 공간에 표시됩니다. coeff와 같은 각 버스 요소는 데이터형 int16형을 사용합니다.

params_T.Elements(1)
ans = 

  BusElement with properties:

              Name: 'coeff'
        Complexity: 'real'
        Dimensions: 1
          DataType: 'int16'
               Min: []
               Max: []
    DimensionsMode: 'Fixed'
              Unit: ''
       Description: ''

Simulink.importExternalCTypes는 C 코드에서 고정소수점 스케일링(이진 소수부 길이)을 유추할 수 없습니다. 버스 요소의 데이터형을 직접 지정해야 합니다. 명령 프롬프트에서 데이터형을 지정하려면 fixdt 함수를 사용하십시오.

params_T.Elements(1).DataType = 'fixdt(1,16,7)';
params_T.Elements(2).DataType = 'fixdt(1,16,3)';

대화형 방식으로 데이터형을 지정하려면(데이터형 도우미 사용) 유형 편집기를 사용하십시오.

typeeditor

이 예제에서는 모델링 프로젝트의 수명 동안 C 데이터형의 정의를 수정한 경우 해당 데이터형의 Simulink 표현을 유지하는 방법을 보여줍니다.

사용자 지정 C 유형 가져오기

현재 폴더에 ex_cc_myTypes_rec.h 파일을 만듭니다. 이 파일은 사용자 지정 구조체형을 정의합니다.

typedef struct {
    double flow;
    double pres;
    double tqe;
} sigStructType;

유형을 나타내는 Simulink.Bus 객체를 생성합니다.

Simulink.importExternalCTypes('ex_cc_myTypes_rec.h');

C 코드에서 유형 정의 수정하기

ex_cc_myTypes_rec.h에서 spd라는 이름의 필드를 sigStructType에 추가합니다.

동일한 파일에서 새 구조체형 stateStructType을 만듭니다.

typedef struct {
    double flow;
    double pres;
    double tqe;
    double spd;
} sigStructType;

typedef struct {
    double err;
    double read;
    double write;
} stateStructType;

유형 가져오기를 다시 시도하기

유형을 나타내는 Bus 객체 생성을 시도합니다.

importInfo = Simulink.importExternalCTypes('ex_cc_myTypes_rec.h');

이 함수는 명령 프롬프트에 경고를 생성합니다. 경고에 의존하는 대신 출력값 importInfo를 검사하여 함수가 유형을 가져오는 데 실패했는지 확인할 수 있습니다.

importInfo.failedToImport.Bus
ans =

  1×1 cell array

    {'sigStructType'}

함수에서 sigStructType을 가져오지 않았습니다. 기본 작업 공간의 해당 Bus 객체는 세 개의 버스 요소만 가지고 있습니다. 함수가 sigStructType을 가져오지 못한 이유를 확인하려면 importInforeport 필드를 검사하십시오.

sigStructType을 다시 가져옵니다. 이번에는 기존 Bus 객체를 덮어씁니다.

importInfo = Simulink.importExternalCTypes('ex_cc_myTypes_rec.h',...
    'Names',importInfo.failedToImport.Bus,'Overwrite','on');

기존 Simulink 표현을 덮어쓸 때, 이전에 Simulink 표현에 적용한 사용자 지정(예: 버스 요소에 고정소수점 데이터형 적용)을 덮어씁니다.

입력 인수

모두 축소

구문 분석할 헤더 파일의 이름과 경로로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 또는 string형 배열로 지정됩니다. .h 또는 .hpp 파일 확장자를 포함하십시오.

HeaderFiles를 지정할 때 유형을 정의하기 위해 포함된(#include) 헤더 파일의 계층 구조를 사용한다면 진입점 파일만 식별해야 합니다. 이 함수는 포함된 파일과 식별된 진입점 파일의 구문을 분석합니다. 포함된 파일이 이에 대응하는 진입점 파일과 같은 폴더에 있지 않다면 IncludeDirs 쌍 인수를 사용하여 추가 폴더를 식별하십시오.

예: 'myHeader.h'

예: {'thisHeader.hpp','thatHeader.hpp'}

데이터형: char | cell | string

유형을 가져올 대상이 되는 불러온 Simulink 모델의 이름으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 예를 들어, 모델을 열거나 load_system 함수를 사용하면 모델을 불러옵니다. 이 인수를 사용하면 함수는 다음과 같은 작업을 수행합니다.

  • 모델 구성 파라미터에서 사용자 지정 헤더 파일을 검색하고 이러한 헤더 파일의 구문을 분석하여 가져올 데이터형을 찾습니다. 시뮬레이션 타깃 창의 구성 파라미터만 이 검색에 영향을 미칩니다.

    예를 들어, 모델에서 구성 파라미터 > 시뮬레이션 타깃 > include 헤더#include "myTypes.h"로 설정하면 이 함수는 myTypes.h의 구문을 분석하여 가져올 유형을 찾습니다.

  • 호스트 컴퓨터의 워드 길이에 맞게 일반 C 데이터형(예: int 또는 short)을 해석합니다. 이 해석을 재정의하는 데 HardwareImplementation 쌍 인수를 사용하지 마십시오.

예: 'myModel'

데이터형: char | string

이름-값 인수

선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN으로 지정합니다. 여기서 Name은 인수 이름이고 Value는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.

R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name을 따옴표로 묶으십시오.

예: Simulink.importExternalCTypes('myHdr.h','DataDictionary','myDictionary.sldd')

생성된 Simulink.Bus 객체와 Simulink.AliasType 객체를 저장하기 위해 만들 MAT 파일의 이름과 경로(선택 사항)로, 문자형 벡터 또는 string형으로 지정됩니다. MATFile을 사용하지 않을 경우 기본적으로 이 함수는 기본 작업 공간에 객체를 생성합니다.

이 함수는 MAT 파일에 열거형 정의를 생성하지 않습니다.

MATFile을 사용하여 struct 유형과 프리미티브 typedef 문의 일부를 가져오고 나중에 동일한 유형의 일부를 MATFile을 사용하여 다시 가져온다면 이 함수는 기존 MAT 파일을 새 MAT 파일로 완전히 교체합니다. 이 함수는 기존 MAT 파일에 변경한 내용은 모두 폐기합니다.

MATFileDataDictionary 쌍 인수를 동시에 사용할 수 없습니다.

예: 'myMat.mat'

예: 'myMat'

예: fullfile('subfolder','myMat')

데이터형: char | string

생성된 열거형과 객체를 저장하기 위해 사용하거나 만드는 Simulink 데이터 사전의 이름과 경로(선택 사항)로, 문자형 벡터 또는 string형으로 지정됩니다. 이 쌍 인수를 사용하면 이 함수는 열거형을 Simulink.data.dictionary.EnumTypeDefinition 객체로 가져오고 이러한 객체를 Simulink.Bus 객체 및 Simulink.AliasType 객체와 함께 타깃 사전에 저장합니다.

데이터 사전에 대한 자세한 내용은 What Is a Data Dictionary? 항목을 참조하십시오.

선택 사항으로, .sldd 확장자를 지정할 수 있습니다.

DataDictionaryMATFile 쌍 인수를 동시에 사용할 수 없습니다.

예: 'myDict.sldd'

예: 'myDict'

예: fullfile('subfolder','myDict.sldd')

데이터형: char | string

가져올 유형의 이름으로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 또는 string형 배열로 지정됩니다. 기본적으로 Names를 사용하지 않으면 이 함수는 식별된 헤더 파일에서 정의하는 모든 사용자 지정 유형을 가져오려고 시도합니다.

여러 유형 이름을 단일 문자형 벡터와 일치하게 하려면 별표(*)를 사용하십시오.

예: 'myEnumType'

예: {'myEnumType','myStructType'}

예: 'my*Type'

데이터형: char | cell | string

C 유형 정의에 영향을 주는 매크로를 정의하는 컴파일러 옵션으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 예를 들어, 매크로가 정의되어 있는지 검사하는 #ifdef 블록으로 정의를 묶으면 매크로는 유형 정의에 영향을 줍니다.

다른 환경에서 -D와 같은 컴파일러 옵션을 통해 정의하는 것처럼 Defines를 사용하여 매크로 정의를 지정하십시오.

예: 'SIGSTRUCT=1'

예: 'SIGSTRUCT=1 ENUM=1'

데이터형: char | string

C 유형 정의에 영향을 주는 매크로를 삭제하는 컴파일러 옵션으로, 문자형 벡터 또는 string형 스칼라로 지정됩니다. 예를 들어, 매크로가 정의되어 있는지 검사하는 #ifdef 블록으로 정의를 묶으면 매크로는 유형 정의에 영향을 줍니다.

다른 환경에서 -U와 같은 컴파일러 옵션을 통해 정의하는 것처럼 UnDefines를 사용하여 매크로 삭제를 지정하십시오.

예: 'SIGSTRUCT'

예: 'SIGSTRUCT ENUM'

데이터형: char | string

포함된(#include) 종속 헤더 파일을 포함하는 폴더로, 문자형 벡터, 문자형 벡터로 구성된 셀형 배열, string형 또는 string형 배열로 지정됩니다. 함수가 기본 헤더 파일(headerFiles 인수로 지정)이 의존하는 추가 헤더 파일의 위치를 지정하고 구문을 분석할 수 있도록 하려면 이 쌍 인수를 사용하십시오.

타깃 모델에서 headerFiles 구문 대신 modelName 구문을 사용하면 include 경로를 지정하는 시뮬레이션 타깃 구성 파라미터를 사용할 수 있습니다. 이 경우 IncludeDirs 쌍 인수를 사용하지 않아도 됩니다.

예: 'myHeaders'

예: fullfile('myProject','myHeaders')

예: {fullfile('myProject','myHeaders'),fullfile('myProject','myOtherHeaders')}

데이터형: char | cell | string

생성된 파일을 저장하는 폴더로, 문자형 벡터 또는 string형으로 지정됩니다. 이 함수는 생성된 파일(예: classdef 스크립트 파일 및 데이터 사전 파일)을 이 폴더에 배치합니다.

이 함수를 사용하기 전에 지정한 폴더가 존재해야 합니다.

예: 'myDictionaries'

예: fullfile('myProject','myDictionaries')

데이터형: char | string

C와 C++ 헤더 파일에서 호환되는 데이터형을 구문 분석하여 가져옵니다. C++ 기능이 포함된 헤더 파일을 지정한다면 Language'C++'로 지정하여 호환되는 C 데이터형을 가져오십시오.

hpp 확장자를 가진 헤더 파일에서 데이터형을 가져올 때 Language 설정이 지정되어 있지 않거나 'Auto'로 설정된 경우 헤더 파일의 구문을 분석하기 위해 'C++'가 선택됩니다. C++ 클래스와 C++ 구조체형은 무시됩니다. 비어 있는 구조체는 가져오지 않습니다.

불러온 모델에서 헤더 파일을 가져오고 Language가 지정되어 있지 않거나 'Auto'로 설정되어 있으면 Language 설정은 모델의 사용자 지정 설정을 상속합니다. 가져온 모델이 이미 구성 파라미터 > 시뮬레이션 타깃Language 설정을 가지고 있다면 이 설정은 가져온 모델 설정에 따라 무시됩니다.

일반적인 프리미티브 C 데이터형을 해석하기 위한 워드 길이로, Simulink.ConfigSet 또는 coder.HardwareImplementation (MATLAB Coder)으로 지정됩니다.

  • Simulink.ConfigSet 객체를 사용하려면 getConfigSetgetActiveConfigSet과 같은 함수를 사용하여 모델에서 구성 세트를 추출할 수 있습니다. 이 기법을 사용하면 사용자가 구성 파라미터 대화 상자를 사용하여 사용자의 타깃 하드웨어를 식별할 수 있습니다(하드웨어 구현 구성 파라미터 사용).

  • coder.HardwareImplementation 객체(프로그래밍 방식으로 만들고 구성한 객체)를 사용하려면 ProdHWDeviceType과 같은 객체의 속성을 지정하여 사용자의 타깃 하드웨어를 식별합니다. 그런 다음, 객체에서 하드웨어의 네이티브 정수 크기를 반영한 다른 속성(예: ProdBitPerInt)을 설정합니다.

이 함수는 객체를 검사하여 일반 C 데이터형(예: int)을 해석할 때 어떤 Simulink 정수 데이터형을 사용할지 결정합니다. 예를 들어, 16비트 하드웨어를 식별하기 위해 coder.HardwareImplementation 객체를 만든 다음, 이 함수를 사용하여 C 데이터형 int형을 사용하는 필드가 있는 구조체형을 가져온다면 이 함수는 버스 요소가 Simulink 데이터형 int16형을 사용하는 Bus 객체를 생성합니다. 이 함수는 테스트용 하드웨어 설정이 아닌 프로덕션 하드웨어 설정을 사용합니다.

Simulink 모델의 하드웨어 구현 설정에 대한 자세한 내용은 Configure Run-Time Environment Options (Simulink Coder) 항목을 참조하십시오.

기존 Simulink 표현을 덮어쓸지 지정하는 값으로, 'on' 또는 'off'로 지정됩니다. Simulink에 이미 가져온 유형에 대한 표현이 있다면 다음과 같이 처리합니다.

  • 'off'를 지정하거나 Overwrite를 지정하지 않으면 이 함수는 유형을 가져오지 않습니다. 출력 인수 importInfo에서 failedToImport 필드가 유형을 식별합니다.

  • 'on'을 지정하면 이 함수는 기존 Simulink 표현을 덮어씁니다.

이 함수를 사용하여 일부 유형을 기본 작업 공간이나 데이터 사전에 가져오고 생성된 Simulink 표현을 나중에 사용자 지정한다면, 이 함수를 다시 사용하고 Overwrite'on'으로 설정한 경우 함수에서 사용자 지정된 표현을 유지하지 않습니다. 이러한 사용자 지정은 다음을 포함합니다.

  • 열거형 클래스 정의에 추가 메서드를 구현하거나 생성된 메서드(예: getDataScope)를 수정하기(Customize Simulink Enumeration 항목 참조).

  • 생성된 Simulink.Bus 또는 Simulink.AliasType 객체의 속성을 수정하기(예: 버스 요소의 데이터형을 직접 고정소수점 데이터형으로 설정).

성공적인 가져오기 작업을 위해 메시지를 생성하도록 지정하는 값으로, 'on' 또는 'off'로 지정됩니다.

  • 'off'를 지정하거나 Verbose를 지정하지 않으면 이 함수는 메시지 표시 없이 유형을 가져옵니다. 함수에서 유형을 가져올 수 없는 경우가 아니면 명령 창에 메시지가 표시되지 않습니다.

  • 'on'으로 지정하면 이 함수는 가져오기 과정 동안 작업마다 명령 창에 메시지를 생성합니다.

출력 인수

모두 축소

가져온 유형과 가져오지 않은 유형에 대한 정보로, 다음과 같은 필드를 가진 구조체로 반환됩니다.

가져온 유형과 가져오지 않은 유형에 대한 설명으로, 문자형 벡터로 반환됩니다. 이 필드의 값을 검사하여 함수가 유형을 가져오지 못한 이유를 확인합니다.

가져오지 않은 유형으로, 다음과 같은 필드를 가진 구조체로 반환됩니다.

필드 이름필드 값용도
Bus문자형 벡터로 구성된 셀형 배열가져오지 않은 구조체(struct) 유형의 이름.
Enum문자형 벡터로 구성된 셀형 배열가져오지 않은 열거형(enum) 이름.
AliasType문자형 벡터로 구성된 셀형 배열가져오지 않은 프리미티브 typedef 문의 이름.

성공적으로 가져온 유형으로, 다음과 같은 필드를 가진 구조체로 반환됩니다.

필드 이름필드 값용도
Bus문자형 벡터로 구성된 셀형 배열가져온 구조체형(struct) 이름. 생성된 Simulink.Bus 객체가 이 이름을 사용합니다.
Enum문자형 벡터로 구성된 셀형 배열가져온 열거형(enum) 이름. 생성된 열거형 클래스 또는 Simulink.data.dictionary.EnumTypeDefinition 객체가 이 이름을 사용합니다.
AliasType문자형 벡터로 구성된 셀형 배열가져온 프리미티브 typedef 문의 이름. 생성된 Simulink.AliasType 객체가 이 이름을 사용합니다.

제한 사항

  • 이 함수는 다음을 지원하지 않습니다.

    • Simulink가 지원하는 유형에 해당되지 않는 C 데이터형. 예를 들어, Simulink는 long double에 상응하는 데이터형을 인식하지 못합니다. Simulink가 지원하는 데이터형에 대한 자세한 내용은 Simulink에서 지원되는 데이터형 항목을 참조하십시오.

    • 포인터 유형(예: 값이 포인터인 필드를 정의하는 구조체 또는 기본 유형이 포인터 유형인 typedef 문).

    • 공용체(union).

  • 구조체 필드가 고정소수점 데이터를 나타내거나 typedef 문이 고정소수점 기본 유형에 매핑되면, 이 함수는 해당 버스 요소 또는 Simulink.AliasType 객체의 데이터형을 적절한 Simulink 정수형으로 설정합니다(예: int16형). 코드 가져오기 툴이 C 코드 구문을 분석하여 고정소수점 스케일링을 결정할 수는 없습니다. 함수를 사용한 후에는 fixdt 함수를 사용하여 버스 요소의 데이터형 또는 Simulink.AliasType 객체의 기본 유형을 직접 지정해야 합니다.

  • 다음과 같은 경우에는 가져온 열거형 또는 구조체형을 정의하는 헤더 파일을 포함(#include)하도록 모델의 시뮬레이션 타깃 구성 파라미터를 구성해야 합니다.

    참고

    typedef 문에 명명되지 않은 유형을 가져오기 위해서는 시뮬레이션 타깃 구성 파라미터 사용자 지정 코드 가져오기가 선택되어 있는지 확인하십시오. 이 파라미터는 기본적으로 선택되어 있습니다.

  • 기본적으로 이 함수는 다음과 같은 작업을 수행합니다.

    • 가져온 열거형의 경우, Simulink 열거형 클래스는 Simulink.IntEnumType에서 파생되므로 모델에서 시뮬레이션하거나 코드를 생성할 때 열거형은 타깃 하드웨어의 네이티브 정수 크기를 사용합니다. 프로덕션 장치 공급업체 및 유형프로덕션 하드웨어의 네이티브 워드 크기와 같은 모델 구성 파라미터를 사용하여 타깃 하드웨어의 특성을 지정합니다.

    • 가져온 구조체형의 경우는 다음과 같습니다.

      • 이 함수는 필드가 수치적으로 복소수에 해당하는 Simulink Coder 구조체형 중 하나를 데이터형으로 사용할 때만 수치 복소수로 구조체 필드를 가져옵니다. 예를 들어, 외부 코드의 구조체 필드가 데이터형 cint8_T형을 사용하면 함수는 데이터형이 int8형이고 Complexity 속성이 'complex'로 설정된 버스 요소(Simulink.BusElement 객체)로 필드를 가져옵니다.

      • 중첩 구조체의 경우 함수는 고유한 구조체형마다 Bus 객체를 생성합니다.

    • 가져온 구조체나 열거형의 경우 외부 코드에서 typedef 문을 사용하여 유형의 이름을 지정하면, 생성된 Bus 객체 또는 Simulink 열거형 클래스의 이름은 typedef 이름과 일치합니다. 코드에서 유형의 이름을 지정하는 데 typedef 문을 사용하지 않으면 이름이 헤더 파일 내 다른 typedef 문에 정의된 유형 이름과 충돌하지 않는 한 객체나 클래스 이름은 태그 이름입니다. 이 경우 이 유형은 Simulink로 가져오지 않습니다. 태그 이름을 지정하지 않거나 typedef 이름을 적용하지 않으면 Simulink는 객체나 클래스에 임의의 이름을 생성합니다.

    • 이 함수는 생성된 Simulink 표현을 시뮬레이션 및 코드 생성 용도로 가져온 것으로 구성합니다. 예를 들어, Bus 객체의 경우 함수는 DataScope 속성을 'Imported'로 설정하고 HeaderFile 속성을 외부 헤더 파일의 이름으로 설정합니다. 이러한 Simulink 표현 중 하나를 사용하는 모델에서 시뮬레이션하거나 코드를 생성하려면 모델에서 헤더 파일을 사용할 수 있도록 해야 합니다.

  • 예를 들어, DataDictionary 쌍 인수를 사용하여 Simulink.importExternalCTypes에 사용하거나 생성할 파일을 지정할 때는 다음과 같이 합니다.

    • 사용할 기존 파일이 현재 폴더 또는 MATLAB 경로에 있으면 파일 경로를 지정하지 않아도 됩니다. 파일 경로 없이 파일 이름을 지정할 수 있습니다.

    • 생성된 파일의 폴더 위치를 제어하려면 파일 이름과 함께 경로를 지정할 수 있습니다. 또한 OutputDir 쌍 인수도 사용할 수 있습니다.

버전 내역

R2017a에 개발됨