Чтобы успешно реализовать Блоки модели, прежде, чем организовать вашу модель в компоненты, рассматривают их требования и ограничения. Путем понимания требований и ограничений заранее, вы лучше готовы использовать Блоки модели.
Можно сослаться на модель несколько раз в иерархии модели, если модель, на которую ссылаются, не имеет ни одного из этих свойств:
Модель содержит К блокам Файла.
Модели - ссылки другая модель, которая установлена в единственный экземпляр.
Модель содержит внутренний сигнал или состояние с классом памяти, который не поддержан для моделей мультиэкземпляра. Внутренним сигналам и состояниям нужно было установить класс памяти на Auto
или Model default
, и класс памяти по умолчанию для внутренних данных должен быть классом памяти мультиэкземпляра.
Модель использует любое из этих построений Stateflow®:
Графические функции Stateflow
Порожденные машиной данные
Модель, на которую ссылаются, выполняется в режиме Accelerator и содержит:
Подсистема, которая отмечена как функция
S-функция, которая или не встраивается или встраивается, но не устанавливает опцию SS_OPTION_WORKS_WITH_CODE_REUSE
Модель содержит подсистему вызова функций что:
Simulink® обеспечивает, чтобы быть функцией
Вызван широким сигналом
Если модель, на которую ссылаются, имеет какое-либо из этих свойств, только один экземпляр модели может появиться в иерархии модели. Модели нужно было позволить Общее количество экземпляров на набор топ-модели к One
.
Можно использовать замаскированные блоки в модели, на которую ссылаются. Кроме того, можно замаскировать модель, на которую ссылаются (см., Создают и Ссылаются на Модель Маскированную).
Чтобы успешно использовать маски, рассмотрите эти требования и ограничения:
Если маска задает имя модели, на которую ссылаются, маска должна обеспечить имя модели, на которую ссылаются, непосредственно. Вы не можете использовать переменную рабочей области, чтобы обеспечить имя.
Рабочая область маски Блока модели не доступна модели, на которую ссылаются. Любая переменная, которую образцовое использование, на которое ссылаются, должно разрешить к любой из этих рабочих областей:
Рабочая область, которую, задает модель, на которую ссылаются
Базовое рабочее пространство MATLAB®
Обратные вызовы маски не могут добавить Блоки модели, изменить название Блока модели или изменить режим моделирования Блока модели.
Различные типы 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, определенном Общем номере экземпляров, позволенных на топ-модель 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 и От блоков не может пересечь контуры модели - ссылки. |
Подсистемы итератора | Если модель, на которую ссылаются, содержит блоки Присвоения, можно поместить Блок модели в подсистему итератора, только если блоки Присвоения находятся также в подсистеме итератора. |
Конфигурируемые подсистемы | В конфигурируемой подсистеме с Блоком модели, во время образцового обновления, не изменяют подсистему, которую выбирает конфигурируемая подсистема. |
Обратный вызов InitFcn | Обратный вызов |
Блок MATLAB function | Блок MATLAB function в модели, на которую ссылаются, которая выполняется в режиме Accelerator, не может вызвать функции MATLAB, которые объявляются внешние для генерации кода. |
Сигнал | Требования и ограничения |
---|---|
Распространение информации об индексации на основе 1 или на основе 0 | Смотрите распространение информации об индексе. |
Асинхронные уровни | Модели, на которые ссылаются, могут только использовать асинхронные уровни, если модель удовлетворяет обоим из этих условий:
|
Пользовательский ввод или вывод типа данных | Модель, на которую ссылаются, может ввод или вывод только пользовательские типы данных, которые являются фиксированной точкой или который задают |
Шины | Модель, на которую ссылаются, не может непосредственно получить доступ к сигналам в шине мультиуровня. Чтобы преодолеть это ограничение, смотрите Шины Мультиуровня Подключения к Моделям, на которые Ссылаются. При использовании виртуальный сигнал шины в качестве входного параметра или вывода для модели, на которую ссылаются, шина не может содержать элемент сигнала переменного размера. Смотрите, что Модель Ссылается на Ограничения для Виртуальных Шин. |
Объекты сигнала | Сигнал, который соединяется с Блоком модели, является функционально тем же сигналом внутри и снаружи блока. Поэтому тот сигнал подвергается ограничению, что данный сигнал может иметь самое большее один связанный объект сигнала. Смотрите |
Свойство моделирования | Требования и ограничения |
---|---|
Распространение времени непрерывной выборки | Время непрерывной выборки не может быть распространено к Блоку модели, который является независимой частотой дискретизации. |
Частоты дискретизации и решатели | Решатель самой верхней модели управляет всеми временами непрерывной выборки в иерархии модели. Например, для решателя фиксированного шага, всех непрерывных уровней в моделях, на которые ссылаются, запущенных в размере фиксированного шага самой верхней модели. Для получения информации о том, как частоты дискретизации влияют на решатели, видят Типы Частоты дискретизации. |
Инициализация состояния | Чтобы инициализировать состояния модели, которая ссылается на другие модели с состояниями, задайте начальные состояния в структуре или структуре с форматом времени. Для получения дополнительной информации смотрите информацию состояния для Моделей, на которые Ссылаются. |
Приспособляемость параметра | Когда вы моделируете модель, которая ссылается на другие модели при некоторых обстоятельствах, вы теряете некоторую приспособляемость блочных параметров (например, параметра Усиления блока 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 не обновляет Блок модели с sim устройством просмотра. |
Режим SIL и PIL | Смотрите поведение переопределения режима моделирования в иерархии модели - ссылки (Embedded Coder). |
Пользовательский код С для образцового моделирования, на которое ссылаются (SIM) предназначается для сборки для режима Accelerator | Чтобы использовать пользовательский код С в режиме Accelerator, включите Включать пользовательский код для параметра конфигурации моделей, на который ссылаются. ВниманиеИспользуя пользовательский код С для моделей, на которые ссылаются, в режиме Accelerator может привести к различным результатам чем тогда, когда вы моделируете модель, не используя пользовательский код. Если пользовательский код включает объявления структур для шин или перечислений, целевые сбои генерации SIM, если сборка приводит к двойным объявлениям тех структур. Кроме того, если пользовательский код использует структуру, представляющую шину или перечисление, можно получить неожиданные результаты симуляции. |
Инструмент | Требования и ограничения |
---|---|
Точки останова Отладчика Simulink | Работая с Отладчиком Simulink в родительской модели, можно установить точки останова на контурах Блока модели. Установка точек останова позволяет вам смотреть на значения ввода и вывода Блока модели. Можно установить точку останова в модели, на которую ссылаются, в режиме normal mode. Однако вы не можете установить точку останова в модели, на которую ссылаются, в режиме Accelerator. См. Отладчик Simulink для получения дополнительной информации. |
Профилировщик Simulink | В режиме normal mode, включая Профилировщику Simulink на родительской модели не позволяет профилировать для моделей, на которые ссылаются. Позвольте профилировать отдельно для каждой модели, на которую ссылаются. Смотрите Как Данные о производительности Получений Профилировщика. |
Инструменты Simulink, что доступ внутренние данные или настройки модели | Инструменты Simulink, которые требуют доступа к внутренним данным или настройке модели, не имеют никакого эффекта на модели, на которые ссылаются, выполняющиеся в режиме Accelerator. Проигнорированы сделанные спецификации и меры, принятые такими инструментами. Примеры инструментов, которые требуют, чтобы доступ смоделировал внутренние данные или настройку, включают:
|
Печать моделей, на которые ссылаются, | Вы не можете распечатать модель, на которую ссылаются, от топ-модели. |
Путем понимания требований генерации кода и ограничений заранее, вы лучше готовы правильно настроить иерархию модели для генерации кода. Смотрите, что Модель Simulink Coder Ссылается на Ограничения (Simulink Coder).