Сгенерируйте представления пользовательских типов данных Simulink, заданные кодом C or C++
анализирует файлы заголовков C или C++ (importInfo
= Simulink.importExternalCTypes(headerFiles
).h
или .hpp
) идентифицировано по headerFiles
для typedef
, struct
, и enum
type definitions и генерирует 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
оператор, базовый тип которого является типом указателя.
Структуры, определяющие поле, значение которого имеют более одного размерности.
Если значение поля является 1-D массивом, функция создает элемент шины, который представляет вектор, а не матрицу.
Объединения.
Если поле структуры представляет данные с фиксированной точкой, или если 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_<reservedrangesplaceholder0 >
где enum_<reservedrangesplaceholder0 >
type
- имя тега типа. Если вы не задаете имя тега или не применяете typedef
name, Simulink генерирует произвольное имя для объекта или класса.
Функция конфигурирует сгенерированные представления Simulink как импортированные в целях симуляции и генерации кода. Для примера, для объектов шины, функция устанавливает DataScope
свойство к 'Imported'
и HeaderFile
свойство имени внешнего файла заголовка. Чтобы симулировать или сгенерировать код из модели, которая использует одно из этих представлений Simulink, вы должны сделать свой заголовочный файл доступным для модели.
Когда вы задаете файлы для Simulink.importExternalCTypes
использовать или сгенерировать, например, при помощи DataDictionary
аргумент в виде пары:
Если существующие файлы для использования находятся в текущей папке или в пути MATLAB, вам не нужно указывать путь к файлу. Вы можете задать имя файла самостоятельно.
Чтобы контролировать расположение папок сгенерированных файлов, можно задать пути, а также имена файлов. Можно также использовать OutputDir
аргумент в виде пары.
enumeration
| Simulink.AliasType
| Simulink.Bus