Чтобы перенести данные между вашей эталонной моделью и верхней моделью, используйте сигналы и параметры. Можно также использовать параметры для интеграции внешних данных в иерархию моделей-ссылок. Чтобы включить одну модель в другую модель и создать иерархию модели-ссылки, используйте блок Model.
Можно применить класс памяти к элементу данных в модели, такому как сигнал или параметр, к:
Поместите элемент данных в сгенерированный код как глобальный символ, обычно как глобальную переменную.
Предотвратите оптимизацию, такую как Default parameter behavior и Signal storage reuse, от удаления элемента данных из сгенерированного кода.
Для примеров смотрите Строение Генерации кода C для Элементов Интерфейса Модели.
Можно сопоставить класс памяти с категорией элементов данных моделей или с отдельным элементом с помощью редактора Code Mappings или API Code Mappings (coder.mapping.api.CodeMapping
). Чтобы задать настройки строений кода, характерные для этого класса памяти, такие как заголовочные файлы, файлы определений и разделы памяти, используйте Property Inspector или API. Для получения дополнительной информации см. раздел Code Mappings editor.
Модели, содержащие блоки 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, могут использовать сигналы класса памяти 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
класс памяти. Когда такие сигналы являются тестовыми или глобальными, применяются определенные ограничения. Эта таблица описывает, как несоответствия в метках сигналов и классах памяти между родительскими и ссылочными моделями обрабатываются программным обеспечением.
Отношения сигналов и классов памяти через контур модели-ссылки
Класс памяти в ссылочных Моделях | Класс памяти в родительской модели | Метод передачи сигнала | Проверка несоответствия сигналов |
---|---|---|---|
Auto | Non-Auto | Аргумент функции | Signal label mismatch |
| Non-Auto | Аргумент функции | Signal label mismatch |
Non-Auto | Auto | Глобальная переменная | Ничего |
Non-Auto | Non-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
.