Чтобы передать данные между вашей на которую ссылаются и топ-моделью модели, используйте сигналы и параметры. Можно также использовать параметры, чтобы интегрировать внешние данные в иерархию модели - ссылки. Чтобы включать одну модель в другой модели и создать иерархию модели - ссылки, используйте блок Model.
Можно применить класс памяти к элементу данных в модели, такой как сигнал или параметр, к:
Заставьте элемент данных появиться в сгенерированном коде как глобальный символ, обычно глобальная переменная.
Предотвратите оптимизацию, такую как Default parameter behavior и Signal storage reuse от устранения элемента данных от сгенерированного кода.
Для примеров смотрите Настройку генерации кода C для Элементов Интерфейса модели.
Можно сопоставить класс памяти с категорией элементов данных модели или к отдельному элементу при помощи редактора Отображений Кода или API Отображений Кода (coder.mapping.api.CodeMapping
). Чтобы задать настройки настроек кода, характерные для того класса памяти, такие как заголовочные файлы, файлы определения и разделы памяти, используют Property Inspector или API. Для получения дополнительной информации смотрите Code Mappings editor.
Модели, содержащие блоки Model, могут использовать классы памяти для параметров, чтобы взаимодействовать через интерфейс с внешним кодом. Классы памяти, за исключением Auto
, являются настраиваемыми. Поддерживаемые классы памяти включают:
Предопределенные классы памяти в Simulink® Coder™ и Embedded Coder®
Новый класс памяти создается при помощи Словаря Embedded Coder
Для ограничений на классы памяти Embedded Coder смотрите Ограничения Класса памяти.
Ограничения на параметры в моделях, на которые ссылаются:
Настраиваемые параметры не поддерживаются для невстроенных S-функций.
Набор настраиваемых параметров через диалоговое окно Model Parameter Configuration проигнорирован.
Касающееся, как глобальные настраиваемые параметры объявляются, задало и использовало в коде, сгенерированном для целей. рассмотрите:
Глобальный настраиваемый параметр является параметром в базовом рабочем пространстве, которое имеет класс памяти кроме Auto
.
extern
объявление сгенерировано для моделей, которые используют данный параметр.
Если параметр экспортируется, топ-модель задает (выделяет память для), параметр, использует ли топ-модель параметр или нет.
К глобальным параметрам получают доступ непосредственно как глобальная память. Они не передаются в качестве аргументов функциям, которые сгенерированы для моделей, на которые ссылаются.
В модели, на которую ссылаются, которая устанавливает класс памяти по умолчанию для категории данных о параметре к Default
в Коде, Сопоставляющем редактор, символы для Model default
параметры сгенерированы при помощи неструктурированных переменных (rtP_xxx
) вместо того, чтобы быть записанным в
структура. Можно затем скомпилировать каждую модель, на которую ссылаются, независимо.model
P
Параметры, которые вы используете в качестве аргументов блока 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
класс памяти. Когда такие сигналы являются указанным тестом или глобальны, определенные ограничения применяются. Эта таблица описывает, как несоответствия в метках сигнала и классах памяти между родительскими и моделями, на которые ссылаются, обработаны программным обеспечением.
Отношения сигналов и классов памяти через контур модели - ссылки
Класс памяти в модели, на которую ссылаются, | Класс памяти в родительской модели | Метод передачи сигнала | Проверка несоответствия сигнала |
---|---|---|---|
Auto | Non-Auto | Аргумент функции | Signal label mismatch |
| Non-Auto | Аргумент функции | Signal label mismatch |
Non-Auto | Auto | Глобальная переменная | 'none' |
Non-Auto | Non-Auto | Глобальная переменная | Одним из классов памяти должен быть Auto (в противном случае существует ошибка), |
Эти правила разрешения сигнала применяются к генерации кода:
Если классом памяти корневого сигнала ввода или вывода в модели, на которую ссылаются, является Auto
или Model default
(когда вы устанавливаете класс памяти соответствующей категории данных к Default
в Коде, Сопоставляющем редактор), сигнал передается как аргумент функции. Когда таким сигналом является Non-Auto
или твердость к Simulink.Signal
объект в родительской модели, диагностика Signal label mismatch применяется.
Если корневой сигнал ввода или вывода в модели, на которую ссылаются, является глобальной переменной, сигнал передается при помощи прямого доступа к памяти (глобальная переменная). Соответствующим сигналом в родительской модели должен быть Auto
.
Вы не можете использовать класс памяти, который вы создаете при помощи Словаря Embedded Coder в модели, на которую ссылаются.
Можно установить параметр конфигурации модели диагностика Signal label mismatch на error
Предупреждение
, или none
.