Сгенерируйте представления пользовательских типов данных 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