Чтобы успешно реализовать блоки Model, прежде, чем организовать вашу модель на компоненты, рассматривают их требования и ограничения. Путем понимания требований и ограничений заранее, вы лучше готовы использовать блоки Model.
Можно сослаться на модель несколько раз в иерархии модели, если модель, на которую ссылаются, не имеет ни одного из этих свойств:
Модель содержит К блокам Файла.
Модели - ссылки другая модель, которая установлена в один экземпляр.
Модель содержит внутренний сигнал или состояние с классом памяти, который не поддержан для моделей мультиэкземпляра. Внутренним сигналам и состояниям нужно было установить класс памяти на Auto
или Model default
, и класс памяти по умолчанию для внутренних данных должен быть классом памяти мультиэкземпляра.
Модель использует любое из этих построений Stateflow®:
Графические функции Stateflow
Порожденные машиной данные
Модель, на которую ссылаются, выполняется в режиме Accelerator и содержит:
Подсистема, которая отмечена как функция
S-функция, которая или не встраивается или встраивается, но не устанавливает опцию SS_OPTION_WORKS_WITH_CODE_REUSE
Модель содержит подсистему вызова функций что:
Simulink® обеспечивает, чтобы быть функцией
Вызван широким сигналом
Если модель, на которую ссылаются, имеет какое-либо из этих свойств, только один экземпляр модели может появиться в иерархии модели. Модели нужно было установить Total number of instances allowed per top model на One
.
Можно использовать маскированные блоки в модели, на которую ссылаются. Кроме того, можно замаскировать модель, на которую ссылаются (см., Создают и Ссылаются на Модель Маскированную).
Чтобы успешно использовать маски, рассмотрите эти требования и ограничения:
Если маска задает имя модели, на которую ссылаются, маска должна обеспечить имя модели, на которую ссылаются, непосредственно. Вы не можете использовать переменную рабочей области, чтобы обеспечить имя.
Рабочая область маски блока Model не доступна модели, на которую ссылаются. Любая переменная, которую образцовое использование, на которое ссылаются, должно разрешить к любой из этих рабочих областей:
Рабочая область, которую, задает модель, на которую ссылаются
Базовое рабочее пространство MATLAB®
Коллбэки маски не могут добавить блоки Model, изменить название блока Model или изменить режим симуляции блока Model.
Различные типы S-функций обеспечивают разные уровни поддержки моделей - ссылок.
Тип S-функции | Поддержка моделей - ссылок |
---|---|
Уровень 1 S-функция MATLAB | Не поддерживаемый |
Уровень 2 S-функция MATLAB |
|
Рукописная S-функция MEX C |
|
Разработчик S-функции и Legacy Code Tool и поддерживают нормальный и режимы Accelerator для моделей - ссылок.
Для получения информации о том, как использовать S-функции в моделях, смотрите S-функции Использования в Моделях.
Если S-функция зависит от наследованного шага расчета, S-функция должна явным образом объявить зависимость от наследованного шага расчета. Чтобы управлять наследованием шага расчета, используйте ssSetModelReferenceSampleTimeInheritanceRule
по-другому на основе того, разрешает ли S-функция или устраняет наследование. Для получения дополнительной информации смотрите Наследованный Шаг расчета для Моделей, на которые Ссылаются (Simulink Coder).
Для модели, на которую ссылаются, которая выполняется в режиме Accelerator, устанавливает Total number of instances allowed per top model на One
, если модель содержит S-функцию, которая является также:
Встроенный, но не установил флаг SS_OPTION_WORKS_WITH_CODE_REUSE
Не встроенный
Поскольку режим Accelerator сослался на модели, которые содержат S-функцию, которая требует встраивания с помощью файла Компилятора Выходного языка, S-функция должна использовать макрос ssSetOptions
, чтобы установить опцию SS_OPTION_USE_TLC_WITH_ACCELERATOR
в ее методе mdlInitializeSizes
. Цель симуляции не встраивает S-функцию, если S-функция не устанавливает эту опцию.
Модель, на которую ссылаются, не может использовать невстроенные S-функции в этих случаях:
Модель использует решатель переменного шага.
S-функция поддерживает использование чисел фиксированной точки как входные параметры, выходные параметры или параметры.
На модель ссылаются несколько раз в иерархии модели - ссылки. Чтобы работать вокруг этого ограничения, используйте режим normal mode или:
Сделайте копии модели, на которую ссылаются.
Присвойте различные имена к копиям.
Сошлитесь на различную копию в каждом местоположении, которому нужна модель.
S-функция использует параметры вектора символов.
Модель, на которую ссылаются, в режиме Accelerator не может использовать S-функции, сгенерированные программным обеспечением Simulink Coder™.
При определенных обстоятельствах, когда S-функция C появляется в модели, на которую ссылаются, которая выполняется в режиме normal mode, успешное выполнение невозможно. Для получения дополнительной информации смотрите S-функции в Режиме normal mode Модели, на которые Ссылаются.
Чтобы задать, может ли S-функция использоваться в режиме normal mode модель, на которую ссылаются, используйте функцию ssSetModelReferenceNormalModeSupport
SimStruct.
Для S-функции, чтобы работать с несколькими экземплярами моделей, на которые ссылаются, в режиме normal mode, S-функция должна указать явным образом, что это поддерживает несколько экземпляров exec
. Для получения дополнительной информации смотрите Поддержку Использования Нескольких Экземпляров Моделей, на которые Ссылаются, Которые Находятся в Режиме normal mode.
Защищенная модель не может использовать невстроенные S-функции прямо или косвенно.
Элемент | Требования и ограничения |
---|---|
Goto и От блоков | Goto и От блоков не может пересечь контуры модели - ссылки. |
Подсистемы итератора | Если модель, на которую ссылаются, содержит блоки Присвоения, можно поместить блок Model в подсистему итератора, только если блоки Присвоения находятся также в подсистеме итератора. |
Конфигурируемые подсистемы | В конфигурируемой подсистеме с блоком Model, во время образцового обновления, не изменяют подсистему, которую выбирает конфигурируемая подсистема. |
Коллбэк InitFcn | Коллбэк |
Блок MATLAB function | Блок MATLAB function в модели, на которую ссылаются, которая выполняется в режиме Accelerator, не может вызвать функции MATLAB, которые объявляются внешние для генерации кода. |
Сигнал | Требования и ограничения |
---|---|
Распространение информации об индексации на основе 1 или на основе 0 | Смотрите распространение информации об индексе. |
Асинхронные уровни | Модели, на которые ссылаются, могут только использовать асинхронные уровни, если модель удовлетворяет обоим из этих условий:
|
Пользовательский ввод или вывод типа данных | Модель, на которую ссылаются, может ввод или вывод только пользовательские типы данных, которые являются фиксированной точкой или который задают |
Шины | Если вы используете виртуальную шину в качестве входа или вывода для модели, на которую ссылаются, шина не может содержать элемент сигнала переменного размера. Смотрите Требования Модели - ссылки для Невиртуальных Шин. |
Объекты сигнала | Сигнал, который соединяется с блоком Model, является функционально тем же сигналом внутри и снаружи блока. Поэтому тот сигнал подвергается ограничению, что данный сигнал может иметь самое большее один связанный объект сигнала. Смотрите |
Свойство симуляции | Требования и ограничения |
---|---|
Распространение времени непрерывной выборки | Время непрерывной выборки не может быть распространено к блоку Model, который является независимым шагом расчета. |
Шаги расчета и решатели | Решатель самой важной модели управляет всеми временами непрерывной выборки в иерархии модели. Например, для решателя фиксированного шага, всех непрерывных уровней в моделях, на которые ссылаются, запущенных в размере фиксированного шага самой важной модели. Для получения информации о том, как шаги расчета влияют на решатели, видят Типы Шага расчета. |
Инициализация состояния | Чтобы инициализировать состояния модели, которая ссылается на другие модели с состояниями, задайте начальные состояния в структуре или структуре с форматом времени. Для получения дополнительной информации смотрите информацию состояния для Моделей, на которые Ссылаются. |
Приспособляемость параметра | Когда вы моделируете модель, которая ссылается на другие модели при некоторых обстоятельствах, вы теряете некоторую приспособляемость параметров блоков (например, параметр Gain блока Gain). Для получения дополнительной информации смотрите Факторы Приспособляемости и Ограничения для Других Целей Моделирования. |
Видимость режима normal mode для нескольких экземпляров модели, на которую ссылаются, | Можно моделировать модель, которая имеет несколько экземпляров модели, на которую ссылаются, которые находятся в режиме normal mode. Все экземпляры модели, на которую ссылаются, являются частью симуляции. Однако Simulink отображает только один из экземпляров в окне модели. Установка видимости режима normal mode определяет, какой экземпляр Simulink отображает. Видимость режима normal mode включает отображение блоков Осциллографа и значений порта данных. Чтобы управлять, какой экземпляр модели, на которую ссылаются, в режиме normal mode имеет видимость и гарантировать соответствующую симуляцию модели, смотрите, Конфигурируют Модели с Несколькими Образцовыми Экземплярами, на которые Ссылаются. |
Сохраните перед использованием режима Accelerator | Когда вы создаете модель, вы не можете использовать ту модель в качестве режима Accelerator модель, на которую ссылаются, пока вы не сохранили модель на диск. Можно работать вокруг этого ограничения путем установки модели на режим normal mode. Смотрите Моделируют Иерархии модели. |
Диагностические параметры конфигурации в режиме Accelerator | Для моделей, на которые ссылаются в режиме Accelerator, Simulink игнорирует определенную диагностику во время выполнения, которую вы устанавливаете на значение кроме |
Блоки с проверками на этапе выполнения в режиме Accelerator | Некоторые блоки включают проверки на этапе выполнения, которые отключены, когда вы включаете блок в модель, на которую ссылаются, в режиме Accelerator. Примеры этих блоков включают Присвоение, Селектор и блоки MATLAB function. |
Команда sim в режиме Accelerator | Когда команда |
Регистрация данных и визуализация в режиме Accelerator | Эти методы журналирования имеют ограничения, когда задано для моделей, на которые ссылаются, выполняющихся в режиме Accelerator.
|
Линеаризация дискретных состояний в режиме Accelerator | В режиме Accelerator дискретные состояния моделей - ссылок не подвергнуты линеаризации. Эти дискретные состояния не встревожены во время линеаризации и, поэтому, не действительно свободны в процессе обрезки. |
Обрезка в режиме Accelerator | Выходные параметры случайных блоков не сохранены постоянными во время обрезки. Выходные параметры, которые не сохранены постоянными, могут влиять на процесс оптимизации. |
Режим external mode в режиме Accelerator | Режим Accelerator не поддерживает опцию External mode. Если вы включаете опцию External mode, режим Accelerator игнорирует ее. |
Устройство просмотра Сима в быстром режиме Accelerator | В быстром режиме Accelerator Simulink не обновляет блок Model с sim устройством просмотра. |
Режим SIL и PIL | Смотрите поведение переопределения режима симуляции в иерархии модели - ссылки (Embedded Coder). |
Пользовательский код С для симуляции модели, на которую ссылаются (SIM) предназначается для сборки для режима Accelerator | Чтобы использовать пользовательский код С в режиме Accelerator, включите параметр конфигурации Include custom code for referenced models. ВниманиеИспользуя пользовательский код С для моделей, на которые ссылаются, в режиме Accelerator может привести к различным результатам чем тогда, когда вы моделируете модель, не используя пользовательский код. Если пользовательский код включает объявления структур для шин или перечислений, целевые сбои генерации SIM, если сборка приводит к двойным объявлениям тех структур. Кроме того, если пользовательский код использует структуру, представляющую шину или перечисление, можно получить неожиданные результаты симуляции. |
Инструмент | Требования и ограничения |
---|---|
Точки останова Отладчика Simulink | Работая с Отладчиком Simulink в родительской модели, можно установить точки останова на контурах блока Model. Установка точек останова позволяет вам смотреть на значения ввода и вывода блока Model. Можно установить точку останова в модели, на которую ссылаются, в режиме normal mode. Однако вы не можете установить точку останова в модели, на которую ссылаются, в режиме Accelerator. Смотрите Отладчик Simulink для получения дополнительной информации. |
Профилировщик Simulink | В режиме normal mode, включая Профилировщику Simulink на родительской модели не позволяет профилировать для моделей, на которые ссылаются. Позвольте профилировать отдельно для каждой модели, на которую ссылаются. Смотрите Как Данные о производительности Получений Профилировщика. |
Инструменты Simulink, что доступ внутренние данные или настройки модели | Инструменты Simulink, которые требуют доступа к внутренним данным или настройке модели, не имеют никакого эффекта на модели, на которые ссылаются, выполняющиеся в режиме Accelerator. Проигнорированы сделанные спецификации и меры, принятые такими инструментами. Примеры инструментов, которые требуют, чтобы доступ смоделировал внутренние данные или настройку, включают:
|
Печать моделей, на которые ссылаются, | Вы не можете распечатать модель, на которую ссылаются, от топ-модели. |
Путем понимания требований генерации кода и ограничений заранее, вы лучше готовы правильно настроить иерархию модели для генерации кода. См., что Модель Генерации кода Ссылается на Ограничения (Simulink Coder).