Сгенерируйте представления Simulink пользовательских типов данных, заданных кодом C or C++
анализирует C или заголовочные файлы C++ (importInfo
= Simulink.importExternalCTypes(headerFiles
).h
или .hpp
) идентифицированный headerFiles
для typedef
Struct ()
, и enum
введите определения, и генерирует представления Simulink® типов. Выход, importInfo
, идентифицирует успешно и неудачно импортированные типы.
Можно использовать представления Simulink:
Снова используйте свой существующий алгоритмический код С и, посредством симуляции, протестируйте ее взаимодействие со своим алгоритмом управления Simulink. Для примера, который показывает, как использовать Legacy Code Tool, смотрите, Интегрируют Функцию C, Аргументы Которой Являются Указателями на Структуры.
Сгенерируйте код (Simulink Coder™), который снова использует типы и данные, которые задает ваш существующий код. Можно затем интегрировать и скомпилировать сгенерированный и существующий код в отдельное приложение. Для примера смотрите, обмениваются Структурированными и Перечислимыми Данными Между Сгенерированным и Внешним Кодом (Embedded Coder).
Создайте и организуйте данные (сигналы, параметры и состояния) в модели при помощи стандартных типов данных, которые ваша организация задает в коде С.
Чтобы создать структуры сигналов в Simulink, используйте невиртуальные шины. Смотрите Начало работы с Шинами.
Чтобы создать структуры параметров, используйте структуры MATLAB® и Simulink.Parameter
объекты. Смотрите Организуют Связанные Определения Параметров блоков в Структурах.
Чтобы создать перечисленные данные, смотрите Использование Перечислимые Данные в Моделях Simulink.
Совпадать с примитивным typedef
оператор, используйте Simulink.AliasType
возразите, чтобы установить параметр и типы данных сигнала в модели.
По умолчанию, функция:
Импортирует перечислимый тип путем генерации файла скрипта, который выводит класс перечисления из Simulink.IntEnumType
, как описано в Задают Перечисления Simulink. При необходимости можно затем отредактировать определение класса, чтобы настроить его (например, путем реализации addClassNameToEnumNames
метод).
Импортирует тип структуры путем генерации Simulink.Bus
объект в базовом рабочем пространстве.
Импортирует примитивный typedef
оператор путем генерации Simulink.AliasType
объект в базовом рабочем пространстве.
Интерпретирует типовые типы данных C, такие как int
или short
, согласно размерам слова вашего хоста - компьютера. Например, для большинства современных машин, int
имеет 32-битный размер слова, таким образом, функция представляет int
поле структуры как элемент шины, который использует тип данных Simulink int32
.
Чтобы заменить это поведение по умолчанию, идентифицируйте свою плату целевого компьютера при помощи HardwareImplementation
парный аргумент.
Для получения дополнительной информации о поведении по умолчанию смотрите Советы.
генерирует представления Simulink пользовательских типов данных C путем анализа модели, которую вы идентифицируете с importInfo
= Simulink.importExternalCTypes(modelName
)modelName
. Когда вы будете использовать параметры конфигурации Simulation Target в модели, чтобы идентифицировать заголовочные файлы для включения в процессе моделирования, используйте этот синтаксис, чтобы импортировать типы в целях симуляции модели на вашем хосте - компьютере. Функция интерпретирует типовые типы данных C согласно размерам слова вашего хоста - компьютера.
Когда вы будете использовать этот синтаксис, не используйте парные аргументы, такие как HardwareImplementation
, это может конфликтовать с параметрами конфигурации целевой модели. Когда вы используете такие парные аргументы с этим синтаксисом, функция генерирует предупреждение.
задает дополнительные опции с помощью одного или нескольких аргументов пары "имя-значение". Можно использовать этот синтаксис для:importInfo
= Simulink.importExternalCTypes(___,Name,Value)
Задайте имена типов, чтобы импортировать при помощи Names
парный аргумент.
Управляйте способом, которым Simulink хранит импортированные типы, например, путем генерации типов в словаре данных Simulink. Используйте MATFile
и DataDictionary
парные аргументы.
Управляйте способом, которым функция интерпретирует типовые типы данных C. Используйте HardwareImplementation
парный аргумент.
Обеспечьте синхронию между определениями кода С и представлениями Simulink путем попытки импортировать обновленные определения кода С снова. Можно выбрать, перезаписать ли существующие представления Simulink. Используйте Overwrite
и Verbose
парные аргументы.
Функция не поддерживает:
Типы данных C, которые не соответствуют типу, который поддерживает Simulink. Например, Simulink не распознает эквивалент за long double
. Для получения информации о типах данных, которые поддерживает Simulink, смотрите Типы данных, Поддержанные Simulink.
Типы указателей, такие как структура, которая задает поле, значение которого является указателем или 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
парный аргумент.
Simulink.AliasType
| Simulink.Bus
| enumeration