Simulink.importExternalCTypes

Сгенерируйте представления Simulink пользовательских типов данных, заданных кодом C or C++

Описание

пример

importInfo = Simulink.importExternalCTypes(headerFiles) анализирует C или заголовочные файлы C++ (.h или .hpp) идентифицированный headerFiles для typedefStruct (), и enum введите определения, и генерирует представления Simulink® типов. Выход, importInfo, идентифицирует успешно и неудачно импортированные типы.

Можно использовать представления Simulink:

По умолчанию, функция:

  • Импортирует перечислимый тип путем генерации файла скрипта, который выводит класс перечисления из Simulink.IntEnumType, как описано в Задают Перечисления Simulink. При необходимости можно затем отредактировать определение класса, чтобы настроить его (например, путем реализации addClassNameToEnumNames метод).

  • Импортирует тип структуры путем генерации Simulink.Bus объект в базовом рабочем пространстве.

  • Импортирует примитивный typedef оператор путем генерации Simulink.AliasType объект в базовом рабочем пространстве.

  • Интерпретирует типовые типы данных C, такие как int или short, согласно размерам слова вашего хоста - компьютера. Например, для большинства современных машин, int имеет 32-битный размер слова, таким образом, функция представляет int поле структуры как элемент шины, который использует тип данных Simulink int32.

    Чтобы заменить это поведение по умолчанию, идентифицируйте свою плату целевого компьютера при помощи HardwareImplementation парный аргумент.

Для получения дополнительной информации о поведении по умолчанию смотрите Советы.

пример

importInfo = Simulink.importExternalCTypes(modelName) генерирует представления Simulink пользовательских типов данных C путем анализа модели, которую вы идентифицируете с modelName. Когда вы будете использовать параметры конфигурации Simulation Target в модели, чтобы идентифицировать заголовочные файлы для включения в процессе моделирования, используйте этот синтаксис, чтобы импортировать типы в целях симуляции модели на вашем хосте - компьютере. Функция интерпретирует типовые типы данных C согласно размерам слова вашего хоста - компьютера.

Когда вы будете использовать этот синтаксис, не используйте парные аргументы, такие как HardwareImplementation, это может конфликтовать с параметрами конфигурации целевой модели. Когда вы используете такие парные аргументы с этим синтаксисом, функция генерирует предупреждение.

пример

importInfo = Simulink.importExternalCTypes(___,Name,Value) задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно использовать этот синтаксис для:

  • Задайте имена типов, чтобы импортировать при помощи Names парный аргумент.

  • Управляйте способом, которым Simulink хранит импортированные типы, например, путем генерации типов в словаре данных Simulink. Используйте MATFile и DataDictionary парные аргументы.

  • Управляйте способом, которым функция интерпретирует типовые типы данных C. Используйте HardwareImplementation парный аргумент.

  • Обеспечьте синхронию между определениями кода С и представлениями Simulink путем попытки импортировать обновленные определения кода С снова. Можно выбрать, перезаписать ли существующие представления Simulink. Используйте Overwrite и Verbose парные аргументы.

Примеры

свернуть все

В этом примере показано, как сгенерировать представления Simulink типа структуры C (struct) и перечислимое (enum) тип данных от заголовочного файла.

  1. В вашей текущей папке создайте файл ex_cc_simpleTypes.h.

    typedef enum {
      PWR_LOSS = 0,                 /* Default value */
      OVERSPD,
      PRESS_LOW,
    } fault_T;
    
    typedef struct {
        double coeff;
        double init;
    } params_T;

  2. Сгенерируйте представления Simulink типов путем вызова Simulink.importExternalCTypes.

    Simulink.importExternalCTypes('ex_cc_simpleTypes.h');

    Функция создает Simulink.Bus объект, params_T, в базовом рабочем пространстве.

  3. Чтобы смотреть свойства объекта, откройте Редактор Шины.

    buseditor

    Каждый элемент шины использует имя и тип данных (double) то соответствие соответствующее поле структуры в ex_cc_simpleTypes.h.

  4. В вашей текущей папке смотрите сгенерированный файл, fault_T.m, который задает перечислимый тип fault_T как класс перечисления.

    Можно использовать объект шины и eumeration класс, чтобы установить и типы данных параметров сигнала в моделях Simulink.

В этом примере показано, как сгенерировать представление Simulink типа структуры, поля которого используют пользовательские типы данных (typedef).

Создайте файл 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 как Simulink.Bus объект в базовом рабочем пространстве. Импортируйте typedef операторы как Simulink.AliasType объекты.

Simulink.importExternalCTypes('ex_cc_struct_alias.h');

Смотрите типы данных элементов шины в объекте шины. Например, смотрите DataType свойство первого элемента шины, который соответствует полю accum структуры.

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 соответствует одному из typedef операторы в ex_integer_aliases.h.

sint_32
sint_32 = 

  AliasType with properties:

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

Для большинства хостов - компьютеров (для которого функция предназначается по умолчанию), размер слова int 32 бита и размер слова unsigned short 16 битов. Функция сопоставляет int и unsigned short к Simulink вводит int32 и uint16.

Если у вас есть Embedded Coder, код, который вы генерируете из модели, может использовать sint_32 и uint_16 вместо стандартных имен типов данных, int32_T и uint16_T.

В этом примере показано, как сохранить импортированные типы данных в словаре данных 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 типов путем вызова Simulink.importExternalCTypes. Постоянно сохраните определения типа путем создания нового словаря данных, ex_cc_myTypes.sldd, в новой подпапке.

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

Чтобы смотреть содержимое словаря, установите свою текущую папку на myDictionaries и дважды кликните файл словаря.

Чтобы использовать представления Simulink в словаре, необходимо соединить модель или модели к словарю. Смотрите Перемещают Модели, чтобы Использовать Словарь Данных Simulink.

В этом примере показано, как сгенерировать представления 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;

Сгенерируйте представления Simulink только для params_T и signals_T.

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

Simulink.Bus объекты, params_T и signals_T, появитесь в базовом рабочем пространстве.

По умолчанию, Simulink.importExternalCTypes представляет перечислимый тип данных путем создания класса перечисления, который выводит из встроенного класса Simulink.IntEnumType. Когда вы симулируете или генерируете код из модели, которая использует сгенерированный класс, параметры конфигурации, которые вы выбираете для модели (например, на панели Аппаратной реализации) определяют определенную целочисленную длину что Simulink.IntEnumType и класс перечисления использует.

По умолчанию функция интерпретирует типовые, примитивные типы данных C, такие как short и int, согласно размерам слова вашего хоста - компьютера. Например, чтобы представлять 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-битного оборудования, извлеките параметры конфигурации модели (которые включают настройки Hardware Implementation) как 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'
        SampleTime: -1
              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'
        SampleTime: -1
              Unit: ''
       Description: ''

Simulink.importExternalCTypes не может вывести масштабирование фиксированной точки (длина двоичной дроби) от кода С. Необходимо вручную задать типы данных элементов шины. Чтобы задать типы данных в командной строке, используйте fixdt функция.

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

Чтобы задать типы данных в интерактивном режиме (при помощи Ассистента Типа данных), используйте Редактор Шины.

buseditor

В этом примере показано, как обеспечить представления Simulink типов данных C, определения которых вы изменяете во время срока действия проекта моделирования.

Импортируйте пользовательские типы C

Создайте файл ex_cc_myTypes_rec.h в вашей текущей папке. Файл задает пользовательский тип структуры.

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

Сгенерируйте Simulink.Bus объект, который представляет тип.

Simulink.importExternalCTypes('ex_cc_myTypes_rec.h');

Измените определение типа в коде С

В 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;

Попытайтесь импортировать типы снова

Попытайтесь сгенерировать объекты шины, которые представляют типы.

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

Функция генерирует предупреждения в командной строке. Вместо того, чтобы использовать предупреждения, можно смотреть выход, importInfo, определить, не удалось ли функции импортировать какие-либо типы.

importInfo.failedToImport.Bus
ans =

  1×1 cell array

    {'sigStructType'}

Функция не импортировала sigStructType. Соответствующий объект шины в базовом рабочем пространстве все еще имеет только три элемента шины. Определить причину, что функция не импортировала sigStructType, смотрите report поле importInfo.

Импортируйте sigStructType снова. На этот раз перезапишите существующий объект шины.

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

Когда вы перезаписываете существующие представления Simulink, перезаписываются любые индивидуальные настройки, которые вы сделали к представлениям Simulink (таким как приложение типов данных с фиксированной точкой, чтобы соединить шиной элементы).

Входные параметры

свернуть все

Имена и пути заголовочных файлов, чтобы проанализировать в виде вектора символов, массива ячеек из символьных векторов, строки или массива строк. Включайте .h или .hpp расширение файла.

Если вы используете иерархию включенных (#include) заголовочные файлы, чтобы задать ваши типы, когда вы задаете HeaderFiles, необходимо идентифицировать только файлы точки входа. Функция анализирует включенные файлы, а также идентифицированные файлы точки входа. Если включенные файлы не находятся в той же папке как соответствующий файл точки входа, используйте IncludeDirs парный аргумент, чтобы идентифицировать дополнительные папки.

Пример: 'myHeader.h'

Пример: {'thisHeader.hpp','thatHeader.hpp'}

Типы данных: char | cell | string

Имя загруженной модели Simulink, для которой можно импортировать типы в виде вектора символов или строкового скаляра. Модель загружается, если, например, вы открываете модель или используете load_system функция. Когда вы используете этот аргумент, функцию:

  • Ищет параметры конфигурации модели пользовательские заголовочные файлы и анализирует те заголовочные файлы для типов данных, чтобы импортировать. Только параметры конфигурации на панели Simulation Target влияют на этот поиск.

    Например, если в модели вы устанавливаете Configuration Parameters> Simulation Target> Insert custom C code in generated> Header file к #include "myTypes.h", функция анализирует myTypes.h для типов, чтобы импортировать.

  • Интерпретирует типовые типы данных C, такие как int или short согласно размерам слова вашего хоста - компьютера. Не используйте HardwareImplementation парный аргумент, чтобы заменить эту интерпретацию.

Пример: 'myModel'

Типы данных: char | string

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: Simulink.importExternalCTypes('myHdr.h','DataDictionary','myDictionary.sldd')

Назовите и, опционально, путь MAT-файла, чтобы создать для хранения сгенерированного Simulink.Bus и Simulink.AliasType объекты в виде вектора символов или строки. Если вы не используете MATFile, по умолчанию функция генерирует объекты в базовом рабочем пространстве.

Функция не генерирует определения перечисления в MAT-файлах.

Если вы импортируете некоторый struct типы и примитивный typedef операторы при помощи MATFile и более поздний импорт некоторые из тех же типов снова при помощи MATFile, функция полностью заменяет старый MAT-файл на новый. Функция отменяет любые изменения, которые вы внесли в содержимое старого MAT-файла.

Вы не можете использовать MATFile и DataDictionary парные аргументы одновременно.

Пример: 'myMat.mat'

Пример: 'myMat'

Пример: fullfile('subfolder','myMat')

Типы данных: char | string

Назовите и, опционально, путь словаря данных Simulink, чтобы использовать или создать для хранения сгенерированных перечислений и объектов в виде вектора символов или строки. Когда вы используете этот парный аргумент, функция импортирует перечислимые типы как Simulink.data.dictionary.EnumTypeDefinition объекты, и хранят те объекты (а также Simulink.Bus объекты и Simulink.AliasType объекты) в целевом словаре.

Для получения информации о словарях данных смотрите то, Что Словарь Данных?.

Можно опционально задать .sldd расширение.

Вы не можете использовать DataDictionary и MATFile парные аргументы одновременно.

Пример: 'myDict.sldd'

Пример: 'myDict'

Пример: fullfile('subfolder','myDict.sldd')

Типы данных: char | string

Имена типов, чтобы импортировать в виде вектора символов, массива ячеек из символьных векторов, строки или массива строк. По умолчанию, если вы не используете Names, функция пытается импортировать все пользовательские типы, которые задают идентифицированные заголовочные файлы.

Чтобы совпадать с несколькими именами типов односимвольному вектору, используйте звездочку (*).

Пример: 'myEnumType'

Пример: {'myEnumType','myStructType'}

Пример: 'my*Type'

Типы данных: char | cell | string

Параметры компилятора, чтобы задать макросы, которые влияют на определения типа C в виде вектора символов или строковый скаляр. Например, макрос влияет на определение типа, если вы заключаете определение в #ifdef блокируйтесь, который проверяет, задан ли макрос.

Используйте Defines задавать макроопределения, которые вы в противном случае задаете через параметры компилятора, такие как -D.

Пример: 'SIGSTRUCT=1'

Пример: 'SIGSTRUCT=1 ENUM=1'

Типы данных: char | string

Параметры компилятора, чтобы удалить макросы, которые влияют на определения типа C в виде вектора символов или строкового скаляра. Например, макрос влияет на определение типа, если вы заключаете определение в #ifdef блокируйтесь, который проверяет, задан ли макрос.

Используйте UnDefines задавать макро-удаления, которые вы в противном случае задаете через параметры компилятора, такие как -U.

Пример: 'SIGSTRUCT'

Пример: 'SIGSTRUCT ENUM'

Типы данных: char | string

Папки, которые содержат подчиненного, включенного (#include) заголовочные файлы в виде вектора символов, массива ячеек из символьных векторов, строки или массива строк. Используйте этот парный аргумент, чтобы позволить функции определить местоположение и проанализировать дополнительные заголовочные файлы, на которых первичные заголовочные файлы (который вы задаете с headerFiles аргумент), зависят.

Если вы используете modelName синтаксис вместо headerFiles синтаксис, в целевой модели, можно использовать параметры конфигурации Simulation Target, чтобы задать, включают пути. В этом случае вы не должны использовать IncludeDirs парный аргумент.

Пример: 'myHeaders'

Пример: fullfile('myProject','myHeaders')

Пример: {fullfile('myProject','myHeaders'),fullfile('myProject','myOtherHeaders')}

Типы данных: char | cell | string

Папка для того, чтобы хранить сгенерированные файлы в виде вектора символов или строки. Функция помещает сгенерированные файлы, такие как classdef файлы скрипта и файлы словаря данных, в этой папке.

Папка, которую вы задаете, должна существовать, прежде чем вы будете использовать функцию.

Пример: 'myDictionaries'

Пример: fullfile('myProject','myDictionaries')

Типы данных: char | string

Размеры слова для интерпретации типовых, примитивных типов данных C в виде Simulink.ConfigSet или coder.HardwareImplementation объект.

  • Использовать Simulink.ConfigSet объект, можно извлечь конфигурацию модели из модели при помощи функций, таких как getConfigSet и getActiveConfigSet. Этот метод позволяет вам использовать диалоговое окно Configuration Parameters, чтобы идентифицировать ваш целевой компьютер (через параметры конфигурации Hardware Implementation).

  • Использовать coder.HardwareImplementation объект (который вы создаете и конфигурируете программно), задайте свойства объекта, такие как ProdHWDeviceType, идентифицировать ваш целевой компьютер. Объект затем устанавливает другие свойства, такие как ProdBitPerInt, то отражение нативный целочисленный размер оборудования.

Функция смотрит объект определить который целочисленные типы данных Simulink использовать при интерпретации типовых типов данных C, таких как int. Например, если вы создаете coder.HardwareImplementation объект идентифицировать 16-битное оборудование и затем использовать функцию, чтобы импортировать тип структуры, поля которого используют тип данных C int, функция генерирует объект шины, элементы шины которого используют тип данных Simulink int16. Функция использует производственные аппаратные настройки, не тестовые аппаратные настройки.

Для получения дополнительной информации о настройках аппаратной реализации для моделей Simulink, смотрите, Конфигурируют Опции Среды выполнения (Simulink Coder).

Спецификация, чтобы перезаписать существующие представления Simulink в виде 'on' или 'off'. Если импортированный тип уже имеет представление в Simulink:

  • Если вы задаете 'off' или если вы не задаете Overwrite, функция не импортирует тип. В выходном аргументе, importInfo, failedToImport поле идентифицирует тип.

  • Если вы задаете 'on', функция перезаписывает существующее представление Simulink.

Если вы используете функцию, чтобы импортировать некоторые типы в базовое рабочее пространство или словарь данных и позже настроить сгенерированные представления Simulink, когда вы используете функцию снова и устанавливаете Overwrite к 'on', функция не сохраняет ваши индивидуальные настройки. Эти индивидуальные настройки могут включать:

  • В определении класса перечисления, реализовывая дополнительные методы или изменяя сгенерированные методы, такие как getDataScope (см., настраивают перечисление Simulink).

  • Изменение свойств сгенерированного 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 объекты используют эти имена.

Ограничения

  • Функция не поддерживает:

    • Типы данных C, которые не соответствуют типу, который поддерживает Simulink. Например, Simulink не распознает эквивалент за long double. Для получения информации о типах данных, которые поддерживает Simulink, смотрите Типы данных, Поддержанные Simulink.

    • 64-битные целочисленные типы.

    • Типы указателей, такие как структура, которая задает поле, значение которого является указателем или typedef оператор, базовый тип которого является типом указателя.

    • Структуры, которые задают поле, значение которого имеет больше чем одну размерность.

      Если значение поля является 1D массивом, функция создает элемент шины, который представляет вектор, не матрицу.

    • Объединения.

  • Если поле структуры представляет данные фиксированной точки, или если typedef оператор сопоставляет с базовым типом фиксированной точки, функция устанавливает тип данных соответствующего элемента шины или Simulink.AliasType возразите против соответствующего целочисленного типа Simulink (такого как int16). Средство импорта не может определить фиксированную точку, масштабирующуюся путем парсинга кода С. После использования функции необходимо вручную задать тип данных элемента шины или базовый тип Simulink.AliasType объект при помощи fixdt функция.

Советы

  • Если блок MATLAB Function или график Stateflow® в вашей модели используют импортированное перечисление или тип структуры, сконфигурируйте параметры конфигурации модели, чтобы включать (#include) определение типа от вашего внешнего заголовочного файла. Смотрите Управление Импортированные Определения Шины и Перечисляемого типа (для блока MATLAB Function) и доступ к Переменным Пользовательского кода и Функциям в диаграммах Stateflow (Stateflow) и Интегрируйте Пользовательские Структуры в диаграммах Stateflow (Stateflow) (для графика).

  • По умолчанию:

    • Для импортированного перечисления, потому что класс перечисления Simulink выводит из Simulink.IntEnumType, когда вы симулируете или генерируете код из модели, перечисление использует целочисленный размер, который является нативным к вашему целевому компьютеру. Вы задаете характеристики своего целевого компьютера при помощи параметров конфигурации модели, таких как Production device vendor and type и Native word size in production hardware.

    • Для импортированного типа структуры:

      • Функция импортирует поле структуры, так же численно объединяют, только если поле использует один из соответствующих типов структуры Simulink Coder как тип данных. Например, если поле структуры в вашем внешнем коде использует тип данных cint8_T, функция импортирует поле как элемент шины (Simulink.BusElement объект), чьим типом данных является int8 и чей Complexity свойство установлено в 'complex'.

      • Для вложенных структур функция генерирует объект шины для каждого уникального типа структуры.

    • Для импортированного типа структуры или перечисления, если ваш внешний код использует typedef оператор, чтобы назвать тип, имя сгенерированного объекта шины или класса перечисления Simulink совпадает с typedef имя. Если ваш код не использует typedef оператор, имя объекта или класса является struct_type или enum_type где type имя тега типа. Если вы не задаете имя тега или применяете typedef имя, Simulink генерирует произвольное имя для объекта или класса.

    • Функция конфигурирует сгенерированные представления Simulink, как импортировано в целях симуляции и генерации кода. Например, для объектов шины, функция устанавливает DataScope свойство к 'Imported' и HeaderFile свойство к имени вашего внешнего заголовочного файла. Чтобы симулировать или сгенерировать код из модели, которая использует одно из этих представлений Simulink, необходимо сделать заголовочный файл доступным для модели.

  • Когда вы задаете файлы для Simulink.importExternalCTypes использовать или сгенерировать, например, при помощи DataDictionary парный аргумент:

    • Если существующие файлы, чтобы использовать находятся в вашей текущей папке или на пути MATLAB, вы не должны задавать путь к файлу. Можно задать имя файла отдельно.

    • Чтобы управлять местоположением папки сгенерированных файлов, можно задать пути, а также имена файлов. Можно также использовать OutputDir парный аргумент.

Введенный в R2017a