Модели, содержащие блоки Model, могут использовать сигналы класса памяти Auto
без ограничения. Однако, когда вы объявляете сигналы быть глобальной переменной, необходимо знать, как данные сигнала будут обработаны.
Глобальный сигнал является сигналом с классом памяти кроме Auto
:
ExportedGlobal
ImportedExtern
ImportedExternPointer
Custom
Вышеупомянутое отлично от сигналов, которые используют класс памяти Model default
, когда вы устанавливаете класс памяти по умолчанию соответствующей категории данных к Default
в Коде, Сопоставляющем Редактор, которые обработаны как тестовые точки с классом памяти Auto
.
Глобальные сигналы объявляются, задаются и используются можно следующим образом:
Объявление extern
сгенерировано для моделей, которые используют данный глобальный сигнал.
В результате, если сигнал пересекает контур блока Model, топ-модель и модель, на которую ссылаются, оба генерируют объявления extern
для сигнала.
Для экспортируемого сигнала топ-модель ответственна за определение (выделяющий память для) сигнал, использует ли топ-модель сам сигнал.
К глобальным сигналам, используемым моделью, на которую ссылаются, получают доступ непосредственно (как глобальная память). Они не передаются в качестве аргументов функциям, которые сгенерированы для моделей, на которые ссылаются.
Пользовательские классы памяти также следуют вышеупомянутым правилам. Однако определенные пользовательские классы памяти в настоящее время не поддержаны для использования с моделью - ссылкой. Для получения дополнительной информации смотрите Ограничения Класса памяти (Simulink Coder).
Классы памяти поддерживаются для симуляции и генерации кода. Классы памяти, за исключением Auto
, являются настраиваемыми. Поддерживаемые классы памяти таким образом включают
Model default
ExportedGlobal
ImportedExtern
ImportedExternPointer
Custom
Отметьте следующие ограничения на параметры в моделях, на которые ссылаются:
Настраиваемые параметры не поддержаны для невстроенных S-функций.
Набор настраиваемых параметров с помощью диалогового окна Model Parameter Configuration проигнорирован.
Отметьте следующие факторы относительно того, как глобальные настраиваемые параметры объявляются, задаются и используются в коде, сгенерированном для целей:
Глобальный настраиваемый параметр является параметром в базовом рабочем пространстве с классом памяти кроме Auto
.
Объявление extern
сгенерировано для моделей, которые используют данный параметр.
Если параметр экспортируется, топ-модель ответственна за определение (выделяющий память для) параметр (использует ли это параметр или не).
К глобальным параметрам получают доступ непосредственно (как глобальная память). Они не передаются в качестве аргументов функциям, которые сгенерированы для моделей, на которые ссылаются.
В модели, на которую ссылаются, которая устанавливает класс памяти по умолчанию для категории данных о параметре к Default
в Коде, Сопоставляющем Редактор, символы для параметров Model default
сгенерированы с помощью неструктурированных переменных (rtP_xxx
) вместо того, чтобы быть записанными в структуру
. Это - то, так, чтобы каждая модель, на которую ссылаются, могла быть скомпилирована независимо.model_P
Определенные пользовательские классы памяти для параметров в настоящее время не поддержаны для модели - ссылки. Для получения дополнительной информации смотрите Ограничения Класса памяти (Simulink Coder).
Параметры, используемые в качестве аргументов блока Model, должны быть заданы в рабочей области ссылаемой модели. Для получения дополнительной информации смотрите, Параметризовали Экземпляры Допускающей повторное использование Модели, на которую Ссылаются (Simulink).
В родительской модели имя и класс памяти для сигнала, входящего или оставляющего блок Model, не могут совпадать с теми из сигнала, присоединенного к корневому импорту или выходному порту в той модели, на которую ссылаются. Поскольку модели, на которые ссылаются, скомпилированы независимо без отношения к родительской модели, они не могут адаптироваться к возможным изменениям в том, как метка родительских моделей и хранит сигналы.
Генератор кода принимает случаи, где сигналы ввода и вывода в модели, на которую ссылаются, имеют класс памяти Auto
. Когда такие сигналы являются указанным тестом или являются глобальной переменной, как описано выше, определенные ограничения применяются. Следующая таблица описывает, как несоответствия в метках сигнала и классах памяти между родительскими и моделями, на которые ссылаются, обработаны:
Отношения сигналов и классов памяти через контур модели - ссылки
Модель, на которую ссылаются, | Родительская модель | Метод передачи сигнала | Проверка несоответствия сигнала |
---|---|---|---|
| Любой класс памяти | Аргумент функции | 'none' |
| Любой класс памяти | Аргумент функции | Signal label mismatch |
| Автоматический или | Глобальная переменная | Signal label mismatch |
|
| Глобальная переменная | Метки и классы памяти еще должны быть идентичными (ошибка) |
Подводя итоги, следующие правила разрешения сигнала применяются к генерации кода:
Если классом памяти корневого сигнала ввода или вывода в модели, на которую ссылаются, является Auto
(или Model default
, когда вы устанавливаете класс памяти соответствующей категории данных к Default
в Коде, Сопоставляющем Редактор), сигнал передается как аргумент функции.
Когда такой сигнал является Model default
или решает к объекту Simulink.Signal
, диагностика Signal label mismatch применяется.
Если корневой сигнал ввода или вывода в модели, на которую ссылаются, является глобальной переменной, он передается при помощи прямого доступа к памяти (глобальная переменная). Кроме того,
Если соответствующий сигнал в родительской модели является также глобальной переменной, имена и классы памяти должны соответствовать точно.
Если соответствующий сигнал в родительской модели не является глобальной переменной, диагностика Signal label mismatch применяется.
Можно установить диагностику Signal label mismatch на error
, warning
или none
в панели Diagnostics > Connectivity диалогового окна Configuration Parameters.