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

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

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

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

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

Для примеров смотрите Строение Генерации кода C для Элементов Интерфейса Модели.

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

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

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

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

  • Новый класс памяти, созданный с помощью словаря Embedded Coder

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

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

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

  • Настраиваемые параметры, установленные через диалоговое окно Параметра модели Строения, игнорируются.

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

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

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

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

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

  • В ссылочной модели, который устанавливает класс памяти по умолчанию для категории данных параметра равной Default в редакторе Code Mapping, символы для Model default параметры генерируются при помощи неструктурированных переменных (rtP_xxx) вместо записи в model_P структура. Затем можно компилировать каждую ссылочную модель независимо.

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

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

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

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

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

  • Новый класс памяти, созданный с помощью словаря Embedded Coder

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

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

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

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

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

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

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

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

Примечание

В ссылочной модели нельзя использовать класс памяти, который вы создаете с помощью словаря Embedded Coder Dictionary на входных и выходных портах корневого уровня.

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

Несоответствия имен сигналов между Моделью-ссылкой Контура

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

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

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

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

Model default (когда задает редактор соответствия кода Default класс памяти) или разрешен к объекту сигнала

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

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

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

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

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

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

См. также

Похожие темы