Выберите Data Configuration Approach

Когда вы генерируете код из модели, код включает данные проектирования, такие как сигналы, состояния и параметры, из которых ваш код приложения может читать и записать в. При решении, как вы хотите эти данные, представленные в сгенерированном коде, рассмотрите:

  • Какие типы элементов данных я хочу использовать в своей модели?

  • Где я хочу хранить данные?

  • Каковы мои цели генерации кода?

  • Как я могу сконфигурировать данные, чтобы достигнуть моих целей генерации кода?

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

Категории элемента данных

Возможные элементы данных в вашей модели подпадают под типы элемента данных, перечисленные в этой таблице.

Тип элемента данныхОписание
InportsВходные порты корневого уровня модели, такие как Inport и блоки Bus Element In.
Выходные портыВыходные порты корневого уровня модели, такие как Outport и блоки Bus Element Out.
Ограниченные по объему моделью параметры
  • Аргументы параметра модели — Переменные в рабочем пространстве модели, которое вы конфигурируете в качестве аргументов модели. Эти параметры отсоединены в блоке модели, чтобы позволить родительской модели ввести различные значения для каждого экземпляра модели.

  • Параметры модели — Параметры, которые заданы в рабочем пространстве модели. В отличие от аргументов модели, эти параметры совместно используются каждым экземпляром модели.

Внешние параметрыПараметры, которые вы задаете как объекты в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти параметры.
Хранилища данных
  • Внутренние данные (локальные хранилища данных) — Хранилища данных, которые доступны отовсюду в иерархии подсистемы, которая является в или ниже уровня, на котором вы задаете хранилище данных. Заданный графически в модели включением блока Data Store Memory или путем создания объекта сигнала в рабочем пространстве модели.

  • Хранилища глобальных данных — Хранилища данных, которые заданы объектом сигнала в базовом рабочем пространстве или в словаре данных. Многоуровневые модели в приложении могут использовать эти хранилища данных.

  • Разделяемые локальные хранилища данных — блоки Data Store Memory, которые имеют параметры блоков набор Share across model instances. Эти хранилища данных доступны только в системе, где блок Data Store Memory расположен. Значение хранилища данных совместно используется через экземпляры модели.

Внутренние данныеЛокальные данные, такие как внутренние сигналы и состояния блока. Включает локальные хранилища данных.
КонстантыПостоянные параметры и блок постоянного значения выводятся в модели.

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

Где сохранить элементы данных, используемые вашей моделью

То, где вы храните данные для своей модели, может зависеть от типа архитектуры модели, которую вы используете и ваши цели моделирования:

  • Базовое рабочее пространство MATLAB® — Используемый для временного хранения данных при экспериментировании с техниками моделирования.

  • Рабочее пространство модели — Используемый, чтобы постоянно хранить данные, которые локальны для одной модели. Поскольку данные хранятся с моделью, использование этой рабочей области может улучшить мобильность модели. Рабочее пространство модели преимущественно используется, чтобы сохранить параметры, аргументы и числовые переменные. Эти элементы обычно не хранятся в рабочем пространстве модели:

    • Объекты сигнала — Вы не можете сконфигурировать объект сигнала в рабочем пространстве модели для генерации кода. Вы не должны задавать объект сигнала сконфигурировать сигнал для генерации кода.

    • Объекты типа данных.

  • Словарь данных Simulink® — Используемый, чтобы постоянно хранить глобальные данные, типы данных и данные, которые совместно используются моделями.

Для получения дополнительной информации смотрите, Определяют, Где Сохранить Переменные и Объекты для Моделей Simulink.

Когда сконфигурировать элемент данных для генерации кода

Настраиваете ли вы генерацию своих данных для генерации кода, зависит от ваших целей для сгенерированного кода. Если вы принимаете решение не сконфигурировать индивидуальные настройки, генератор кода определяет, устранить ли или изменить представление данных в сгенерированном коде в целях оптимизации.

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

  • Настройки параметров.

  • Контролируйте сигналы и состояния во время выполнения.

  • Сконфигурируйте размещение данных в памяти.

  • Обменивайтесь данными с внешним кодом.

  • Улучшите удобочитаемость и трассируемость сгенерированного кода.

Сконфигурируйте элемент данных для генерации кода

Чтобы сконфигурировать ваши данные для генерации кода, примените класс памяти. Класс памяти является настройкой генерации кода, которая позволяет вам управлять внешним видом и размещением элемента данных в сгенерированном коде и предотвращает оптимизацию, которая может устранить устройство хранения данных для того элемента данных. Можно использовать классы памяти, доступные с Simulink Coder™ и Embedded Coder®. Если у вас есть особые требования, которым не отвечают эти классы памяти, и вы генерируете код для основанной на ERT цели, можно задать и использовать новый класс памяти. Для получения дополнительной информации о классах памяти и свойствах класса памяти, смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code.

Когда сконфигурировать данные при помощи объекта данных

Для большинства данных модели можно сопоставить класс памяти непосредственно с элементом данных при помощи редактора Отображений Кода или кода, сопоставляющего API. Необходимо сконфигурировать некоторые данные, включая которые модель использует для генерации кода при помощи объекта данных:

  • Параметры — Включают параметры в базовое рабочее пространство, рабочее пространство модели или словарь данных. Сконфигурируйте параметры при помощи Simulink.Parameter объект.

  • Хранилища глобальных данных — Конфигурируют при помощи объекта сигнала.

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

Сконфигурируйте данные модели при помощи отображения кода

Данные модели состоят из блоков выходного порта, сигнальных линий, состояний блока, хранилищ данных и объектов параметра в рабочем пространстве модели. Для этих данных можно сопоставить класс памяти с элементом данных в приложении кодера при помощи редактора Отображений Кода или при помощи API отображений кода. Для удобства можно также сконфигурировать внешние объекты данных в редакторе Отображений Кода, хотя для внешних объектов данных, класс памяти хранится на объекте данных а не в модели. Чтобы видеть эти объекты, в редакторе, щелкают по ссылке Refresh справа от названия категории.

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

  • Во вкладке C Code выберите Code Interface > Default Code Mappings.

  • На вкладке Data Defaults выберите категорию данных, затем выберите класс памяти по умолчанию для той категории. Если вы не задаете класс памяти для категории, Default класс памяти применяется. В этом случае генератор кода помещает код для категории элементов данных в стандартных структурах. Другие опции класса памяти включают:

    • Соответствующие встроенные классы памяти, такие как ExportedGlobal.

    • Соответствующие классы памяти в доступном пакете, такие как ImportFromFile (требует Embedded Coder).

    • Классы памяти задали в Словаре Embedded Coder (требует Embedded Coder). Для получения дополнительной информации о доступных классах памяти смотрите, Выбирают Storage Class for Controlling Data Representation in Generated Code.

  • В Property Inspector сконфигурируйте свойства для того класса памяти. (Например, заголовок и файлы определения).

Для получения дополнительной информации см. Настройка генерации кода C для элементов интерфейса моделиНастройка генерации кода C для элементов интерфейса модели (Embedded Coder).

Для определенных категорий данных, включая импорт, выходные порты, хранилища данных и состояния блока, отображение по умолчанию вероятно единственная настройка, которую необходимо выполнить. Но для элементов данных, таких как параметры и внутренние сигналы, вы можете должны быть задать индивидуума, сопоставляющего, чтобы препятствовать тому, чтобы данные были оптимизированы далеко. Применять класс памяти к отдельному элементу данных:

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

  • Выберите класс памяти для элемента данных. Чтобы применить настройку по умолчанию, выберите класс памяти Model default.

  • В Property Inspector сконфигурируйте свойства для того класса памяти. (Например, заголовок и файлы определения).

Для получения дополнительной информации см. Настройка генерации кода C для элементов интерфейса моделиНастройка генерации кода C для элементов интерфейса модели (Embedded Coder).

Сконфигурируйте внешние данные

Сконфигурируйте внешние объекты данных для генерации кода при помощи редактора Отображений Кода или Model Explorer. Выберите объект данных в панели Contents. Затем в панели Dialog, на вкладке Code Generation, выбирают класс памяти и устанавливают свойства для того класса памяти. Для удобства можно также сконфигурировать внешние объекты данных в редакторе Отображений Кода. Чтобы просмотреть и сконфигурировать эти объекты, в редакторе, щелкают по ссылке Refresh справа от названия категории.

Можно сконфигурировать программно внешние объекты данных. Например, чтобы сконфигурировать Simulink.Parameter объект для генерации кода путем применения класса памяти ExportedGlobal, можно использовать код, похожий на:

P = Simulink.Parameter;
P.Value = 5;
P.DataType = 'int32';
P.CoderInfo.StorageClass = 'ExportedGlobal';

Загрузите пакеты класса памяти в словарь Embedded Coder

Чтобы применить класс памяти от пакета класса памяти кроме Simulink (такого как пакет, который вы создаете):

  1. Откройте приложение Embedded Coder.

  2. Откройте Словарь Embedded Coder. На вкладке C Code выберите Code Interface> Embedded Coder Dictionary.

  3. В Словаре Embedded Coder нажмите кнопку Manage Packages.

  4. В диалоговом окне Manage Packages выберите пакет. Если пакет интереса не находится в списке, нажмите Refresh. Затем выберите свой пакет.

  5. Закройте словарь Embedded Coder.

  6. Нажмите Load.

  7. Используйте API отображений редактора или кода Отображений Кода, чтобы сконфигурировать интерфейсные элементы модели.

Для получения дополнительной информации смотрите Embedded Coder Dictionary (Embedded Coder), Code Mappings Editor (Embedded Coder) и coder.mapping.api.CodeMapping (Embedded Coder).

Применять класс памяти при помощи объекта данных (обязательные параметры), вместо того, чтобы создать Simulink.Signal или Simulink.Parameter возразите, создайте myPackage.Signal или myPackage.Parameter объект. Чтобы создать объекты данных из вашего пакета, смотрите, Создают Объекты данных из Другого Пакета Класса Данных. Для примера, который показывает, как создать и применить ваш собственный класс памяти, смотрите, Создают и Применяют Класс памяти (Embedded Coder).

Смотрите также

|

Похожие темы