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

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

Глобальный сигнал является сигналом с классом памяти кроме Auto:

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • Custom

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

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

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

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

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

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

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

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

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

  • Model default

  • ExportedGlobal

  • ImportedExtern

  • ImportedExternPointer

  • Custom

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Модель, на которую ссылаются,

Родительская модель

Метод передачи сигнала

Проверка несоответствия сигнала

Auto

Любой класс памяти

Аргумент функции

'none'

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

Любой класс памяти

Аргумент функции

Signal label mismatch

Global

Автоматический или Model default (когда Код, Сопоставляющий Редактор, задает класс памяти Default),

Глобальная переменная

Signal label mismatch

Global

Global

Глобальная переменная

Метки и классы памяти еще должны быть идентичными (ошибка)

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

  • Если классом памяти корневого сигнала ввода или вывода в модели, на которую ссылаются, является Auto (или Model default, когда вы устанавливаете класс памяти соответствующей категории данных к Default в Коде, Сопоставляющем Редактор), сигнал передается как аргумент функции.

    • Когда такой сигнал является Model default или решает к объекту Simulink.Signal, диагностика Signal label mismatch применяется.

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

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

    • Если соответствующий сигнал в родительской модели не является глобальной переменной, диагностика Signal label mismatch применяется.

Можно установить диагностику Signal label mismatch на error, warning или none в панели Diagnostics > Connectivity диалогового окна Configuration Parameters.

Похожие темы