Используйте классы памяти в повторно используемом, моделях мультиэкземпляра и компонентах

Кодом, который вы генерируете из модели или компонента (модель, на которую ссылаются, или подсистема) является multi-instance code, если это позволяет вашему приложению обеспечивать несколько независимых экземпляров компонента во время выполнения. Например, можно сгенерировать повторно используемый, код мультиэкземпляра из целой модели путем установки параметра конфигурации модели Code interface packaging на Reusable function. Для получения общей информации о моделях мультиэкземпляра и компонентах, смотрите Повторное использование кода (Simulink Coder).

При некоторых обстоятельствах применяя классы памяти может:

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

  • Заставьте некоторые элементы данных появляться в сгенерированном коде как одиночные элементы, что означает, что каждый экземпляр модели или компонента непосредственно получает доступ к тем же разделяемым, глобальным данным, создавая зависимости между экземплярами.

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

Непосредственно примененные классы памяти

Когда вы применяете класс памяти непосредственно к элементу данных (см., Применяют Классы памяти к Отдельному Сигналу, состоянию и Элементам данных Параметра (Simulink Coder)):

  • Чтобы сгенерировать код мультиэкземпляра, необходимо применить класс памяти только к объектам параметра, хранилищам глобальных данных, разделяемым локальным хранилищам данных и вводу-выводу корневого уровня.

  • Класс памяти дает только к одноэлементным данным.

Классы памяти, прикладные по умолчанию

То, когда вы применяете класс памяти по умолчанию при помощи Кода, Сопоставляющего Редактор (см., Конфигурируют Генерацию кода По умолчанию для Данных — требует Embedded Coder®):

  • Для этих категорий данных можно сгенерировать только одноэлементные данные:

    • Model parameters

    • External parameter objects

    • Global data stores

    • Shared local data stores

  • Для Internal data можно сгенерировать только специфичные для экземпляра данные, что означает каждый экземпляр модели, или компонент работает с отдельной копией данных. Для этой категории необходимо использовать класс памяти в качестве примера SignalStruct, который появляется после подготовки модели для генерации кода с инструментом Quick Start. В качестве альтернативы можно создать и использовать собственный класс структурированного хранилища при помощи Словаря Embedded Coder.

Похожие темы