Можно соединить выход блока прямо или косвенно (т.е. через другие блоки) к его входу, таким образом, создав цикл. Циклы могут быть очень полезными. Например, можно использовать циклы, чтобы решить дифференциальные уравнения схематически (см. Модель Непрерывная Система), или системы управления с обратной связью модели. Однако также возможно создать циклы, которые не могут быть симулированы. Общие типы недопустимых циклов включают:
Циклы, которые создают недопустимые связи вызова функции или попытку изменить аргументы ввода/вывода вызова функции (см. Используя Подсистемы вызова функций для описания подсистем вызова функций),
Самоинициирование подсистем и циклов, содержащих нефиксируемые инициированные подсистемы (см. Используя Инициированные Подсистемы в Использовании документации Simulink® для описания инициированных подсистем и Inport в справочной документации Simulink для описания фиксируемого входа),
Циклы, содержащие подсистемы действия
Библиотека блоков Подсистемы В качестве примера в библиотеке Ports & Subsystems содержит модели, который иллюстрирует примеры допустимого и недопустимого инициированного включения циклов и подсистемы вызова функций. Примеры недопустимых циклов включают следующие модели:
simulink/Ports&Subsystems/sl_subsys_semantics/Triggered subsystem/sl_subsys_trigerr1
(sl_subsys_trigerr1
)
simulink/Ports&Subsystems/sl_subsys_semantics/Triggered subsystem/sl_subsys_trigerr2
(sl_subsys_trigerr2
)
simulink/Ports&Subsystems/sl_subsys_semantics/Function-call systems/sl_subsys_fcncallerr3
(sl_subsys_fcncallerr3
)
Вы можете найти полезным изучить эти примеры, чтобы не создавать недопустимые циклы в ваших собственных моделях.
Чтобы обнаружить, содержит ли ваша модель недопустимые циклы, выберите Update Diagram из меню Simulation модели. Если модель содержит недопустимые циклы, недопустимые циклы подсвечены. Это проиллюстрировано в следующей (открытой) модели,
и отображает сообщение об ошибке в Диагностическом Средстве просмотра.
Если существует два файла Модели с тем же именем (например, mylibrary.slx
) на пути MATLAB®, один выше на пути загружается, и один ниже на пути, как говорят, "затенен".
Чтобы помочь избежать проблем с затененными файлами, включите настройку Simulink Do not load models that are shadowed on the MATLAB path. Смотрите не загружают модели, которые затенены на пути MATLAB.
Правила использование программного обеспечения Simulink, чтобы найти файлы Модели похожи на используемых программным обеспечением MATLAB. Смотрите то, Что Путь поиска файлов MATLAB? (MATLAB) в документации MATLAB. Однако существует важное различие между тем, как обработаны Диаграммы Simulink и функции MATLAB: загруженная блок-схема более приоритетна по сравнению с любыми разгруженными единицами, независимо от ее позиции по пути MATLAB. Это сделано по причинам производительности как часть инкрементной методологии загрузки программного обеспечения Simulink.
Приоритет загруженной блок-схемы по любым другим может иметь важные последствия, особенно поскольку блок-схема может загрузиться без соответствующего отображающегося окна Simulink.
При использовании библиотек и моделей, на которые ссылаются, можно загрузить блок-схему, не показывая ее окно. Если путь MATLAB или текущая папка MATLAB изменяются, в то время как блок-схемы находятся в памяти, эти блок-схемы могут вмешаться в использование других файлов того же имени.
Например, откройте модель с библиотекой под названием mylib
, превратитесь в другую папку, и затем откройте другую модель с библиотекой также под названием mylib
. Когда вы запускаете первую модель, она пользуется библиотекой, сопоставленной со второй моделью.
Это может привести к проблемам включая:
Ошибки симуляции
"Неразрешенная Ссылка" значки на блоках, которые являются ссылками библиотеки
Неправильные результаты
Чтобы помочь избежать проблем с затененными файлами, можно включить настройку Simulink Do not load models that are shadowed on the MATLAB path. Смотрите не загружают модели, которые затенены на пути MATLAB.
При обновлении блок-схемы программное обеспечение Simulink проверяет положение своего файла на пути MATLAB и выдаст предупреждение, если это обнаруживает, что другой файл того же имени существует и выше на пути MATLAB. Чтения предупреждения:
The file containing block diagram 'mylibrary' is shadowed by a file of the same name higher on the MATLAB path.
mylibrary.slx
используется. Видеть который файл под названием mylibrary.slx
загружается в память, введите:which mylibrary C:\work\Model1\mylibrary.slx
mylibrary
которые находятся на пути MATLAB, включая скрипты MATLAB, введите:which -all mylibrary C:\work\Model1\mylibrary.slx C:\work\Model2\mylibrary.slx % Shadowed
mylibrary
и позвольте программному обеспечению Simulink загрузить файл, который является самым высоким на пути MATLAB, введите:close_system('mylibrary')
Вот некоторые подсказки построения моделей, которые вы можете найти полезным:
В общем случае больше памяти увеличит производительность.
Более сложные модели часто извлекают выгоду из добавления иерархии подсистем к модели. Группировка блоков упрощает верхний уровень модели и может облегчить читать и изучать модель. Для получения дополнительной информации смотрите, Создают Подсистему. Model Browser предоставляет полезную информацию о сложных моделях (см. Simulink Editor).
Хорошо организованные и зарегистрированные модели легче читать и понять. Метки сигнала и аннотации модели могут помочь описать то, что происходит в модели. Для получения дополнительной информации смотрите Имена Сигнала и Метки и Опишите Модели Используя Примечания и Аннотации.
Если несколько из ваших моделей используют те же блоки, можно сохранить эти блоки для легкого повторного использования. Например, можно сохранить набор блоков в пользовательской библиотеке. Затем когда вы создаете новые модели, можно скопировать эти блоки из библиотеки.
Обычно при создавании модели, спроектируйте его сначала на бумаге, затем создайте его с помощью компьютера. Затем когда вы начинаете соединять блоки в модель, добавьте блоки в окно модели прежде, чем добавить линии, которые соединяют их. Таким образом, можно уменьшать, как часто необходимо открыть библиотеки блоков.