Классы памяти для параметров и сигналов, используемых в блоках Model

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

Можно применить класс памяти к элементу данных в модели, такой как сигнал или параметр, к:

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

  • Предотвратите оптимизацию, такую как Default parameter behavior и Signal storage reuse от устранения элемента данных от сгенерированного кода.

Для примеров смотрите Настройку генерации кода C для Элементов Интерфейса модели.

Можно сопоставить класс памяти с категорией элементов данных модели или к отдельному элементу при помощи редактора Отображений Кода или API Отображений Кода (coder.mapping.api.CodeMapping). Чтобы задать настройки настроек кода, характерные для того класса памяти, такие как заголовочные файлы, файлы определения и разделы памяти, используют Property Inspector или API. Для получения дополнительной информации смотрите Code Mappings editor.

Классы памяти для параметров в блоках Model

Модели, содержащие блоки Model, могут использовать классы памяти для параметров, чтобы взаимодействовать через интерфейс с внешним кодом. Классы памяти, за исключением Auto, являются настраиваемыми. Поддерживаемые классы памяти включают:

  • Предопределенные классы памяти в Simulink® Coder™ и Embedded Coder®

  • Новый класс памяти создается при помощи Словаря Embedded Coder

Для ограничений на классы памяти Embedded Coder смотрите Ограничения Класса памяти.

Ограничения на параметры в моделях, на которые ссылаются:

  • Настраиваемые параметры не поддерживаются для невстроенных S-функций.

  • Набор настраиваемых параметров через диалоговое окно Model Parameter Configuration проигнорирован.

Касающееся, как глобальные настраиваемые параметры объявляются, задало и использовало в коде, сгенерированном для целей. рассмотрите:

  • Глобальный настраиваемый параметр является параметром в базовом рабочем пространстве, которое имеет класс памяти кроме Auto.

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

  • Если параметр экспортируется, топ-модель задает (выделяет память для), параметр, использует ли топ-модель параметр или нет.

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

  • В модели, на которую ссылаются, которая устанавливает класс памяти по умолчанию для категории данных о параметре к Default в Коде, Сопоставляющем редактор, символы для Model default параметры сгенерированы при помощи неструктурированных переменных (rtP_xxx) вместо того, чтобы быть записанным в modelP структура. Можно затем скомпилировать каждую модель, на которую ссылаются, независимо.

Параметры, которые вы используете в качестве аргументов блока Model, должны быть заданы в рабочем пространстве модели, на которое ссылаются. Для получения дополнительной информации смотрите, Параметрируют Экземпляры Допускающей повторное использование Модели, на которую Ссылаются.

Классы памяти для сигналов в блоках Model

Модели, содержащие блоки Model, могут использовать сигналы класса памяти Auto.

Глобальный сигнал является сигналом, который имеет класс памяти кроме Auto. Поддерживаемые классы памяти включают:

  • Предопределенные классы памяти в Simulink Coder и Embedded Coder

  • Новый класс памяти создается при помощи Словаря Embedded Coder

Если у вас есть Embedded Coder, можно создать глобальный сигнал при помощи класса памяти, заданного в Словаре Embedded Coder, которому установили Storage Type как Unstructured или путем создания устройства хранения данных в Словаре Embedded Coder, которому установили Storage Type как Unstructured.

Эти сигналы отличны от отдельных сигналов, которые используют класс памяти Model default. Когда вы устанавливаете класс памяти по умолчанию соответствующей категории данных к Default в Коде, Сопоставляющем редактор, эти сигналы обработаны как тестовые точки, которые имеют Auto класс памяти.

Когда вы объявляете сигналы как глобальную переменную, знать, как данные сигнала обработаны. Глобальные сигналы объявляются, задаются и используются можно следующим образом:

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

    В результате, если сигнал пересекает контур блока Model, топ-модель и модель, на которую ссылаются, оба генерируют extern объявления для сигнала.

  • Для экспортируемого сигнала топ-модель задает (выделяет память для), сигнал, использует ли топ-модель сам сигнал.

  • К глобальным сигналам, используемым моделью, на которую ссылаются, получают доступ непосредственно как глобальная память. Они не передаются в качестве аргументов функциям, которые сгенерированы для моделей, на которые ссылаются.

Классы памяти, которые вы создаете при помощи Словаря Embedded Coder также, следуют предыдущим правилам для топ-модели.

Примечание

В модели, на которую ссылаются вы не можете использовать класс памяти, что вы создаете при помощи Словаря Embedded Coder на корневом уровне Inports и Outports.

Определенные классы памяти ограничили поддержку использования с моделью - ссылкой. Смотрите Ограничения Класса памяти.

Несоответствия имени сигнала через контур модели - ссылки

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

Генератор кода принимает случаи, где сигналы ввода и вывода в модели, на которую ссылаются, имеют Auto класс памяти. Когда такие сигналы являются указанным тестом или глобальны, определенные ограничения применяются. Эта таблица описывает, как несоответствия в метках сигнала и классах памяти между родительскими и моделями, на которые ссылаются, обработаны программным обеспечением.

Отношения сигналов и классов памяти через контур модели - ссылки

Класс памяти в модели, на которую ссылаются,Класс памяти в родительской моделиМетод передачи сигналаПроверка несоответствия сигнала
AutoNon-AutoАргумент функцииSignal label mismatch

Model default (когда Код, Сопоставляющий редактор, задает Default класс памяти) или разрешенный, чтобы Сигнализировать об Объекте

Non-AutoАргумент функцииSignal label mismatch
Non-AutoAutoГлобальная переменная'none'
Non-AutoNon-AutoГлобальная переменнаяОдним из классов памяти должен быть Auto (в противном случае существует ошибка),

Эти правила разрешения сигнала применяются к генерации кода:

  • Если классом памяти корневого сигнала ввода или вывода в модели, на которую ссылаются, является Auto или Model default (когда вы устанавливаете класс памяти соответствующей категории данных к Default в Коде, Сопоставляющем редактор), сигнал передается как аргумент функции. Когда таким сигналом является Non-Auto или твердость к Simulink.Signal объект в родительской модели, диагностика Signal label mismatch применяется.

  • Если корневой сигнал ввода или вывода в модели, на которую ссылаются, является глобальной переменной, сигнал передается при помощи прямого доступа к памяти (глобальная переменная). Соответствующим сигналом в родительской модели должен быть Auto.

  • Вы не можете использовать класс памяти, который вы создаете при помощи Словаря Embedded Coder в модели, на которую ссылаются.

Можно установить параметр конфигурации модели диагностика Signal label mismatch на errorПредупреждение, или none.

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

Похожие темы