exponenta event banner

Общие соображения при построении моделей Simulink

Исключение недопустимых циклов

Можно подключить выход блока прямо или косвенно (т.е. через другие блоки) к его входу, тем самым создав цикл. Петли могут быть очень полезны. Например, контуры можно использовать для решения дифференциальных уравнений схематически (см. Модель непрерывной системы) или для моделирования систем управления с обратной связью. Однако также возможно создание контуров, которые невозможно смоделировать. Распространенные типы недопустимых циклов:

  • Циклы, создающие недопустимые соединения вызова функции или попытку изменить входные/выходные аргументы вызова функции (описание подсистем вызова функции см. в разделе Использование подсистем вызова функции)

  • Самозаверяющие подсистемы и петли, содержащие нефиксируемые срабатывающие подсистемы (описание срабатывающих подсистем см. в документе Использование срабатывающих подсистем в документации Using Simulink ®, а описание запертых входных данных - в справочной документации Simulink)

  • Контуры, содержащие подсистемы действий

Библиотека блоков «Примеры подсистем» в библиотеке «Порты и подсистемы» содержит модели, иллюстрирующие примеры допустимых и недопустимых циклов, включающих в себя инициируемые подсистемы и подсистемы функционального вызова. Примеры недопустимых циклов включают следующие модели:

  • 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 Model) на вкладке Моделирование (Modeling) панели инструментов. Если модель содержит недопустимые контуры, они подсвечиваются. Это показано в следующей модели (открытой),

и отображает сообщение об ошибке в средстве просмотра диагностики.

Затененные файлы

При наличии двух файлов модели с одинаковым именем (например, mylibrary.slx) на пути MATLAB ® загружается один выше на пути, а другой ниже на пути называется «теневым».

Совет

Чтобы избежать проблем с затененными файлами, включите настройку Simulink Не загружать модели, затененные по пути MATLAB. См. Не загружать модели, затененные на пути MATLAB.

Правила, используемые программным обеспечением Simulink для поиска файлов модели, аналогичны правилам, используемым программным обеспечением MATLAB. См. Что такое путь поиска MATLAB?. Тем не менее, существует важное различие между тем, как обрабатываются блок-схемы Simulink и функции MATLAB: загруженная блок-схема имеет приоритет над любыми выгруженными, независимо от своего положения на пути MATLAB. Это делается по причинам производительности в рамках методологии инкрементной загрузки программного обеспечения Simulink.

Приоритет загруженной блок-схемы над любыми другими может иметь важные последствия, в частности, поскольку блок-схема может быть загружена без отображения соответствующего окна Simulink.

Проверка загрузки правильной блок-схемы

При использовании библиотек и ссылочных моделей можно загрузить блок-схему без отображения ее окна. Если путь MATLAB или текущая папка MATLAB изменяется при наличии в памяти блок-схем, эти блок-схемы могут помешать использованию других файлов с тем же именем.

Например, откройте модель с библиотекой с именем mylib, перейдите в другую папку, а затем откройте другую модель с библиотекой с именем mylib. При запуске первой модели используется библиотека, связанная со второй моделью.

Это может привести к следующим проблемам:

  • Ошибки моделирования

  • Значки «Неразрешенная связь» на блоках, являющихся ссылками на библиотеки

  • Неправильные результаты

Обнаружение и устранение проблем

Чтобы избежать проблем с затененными файлами, можно включить настройку Simulink Не загружать модели, затененные по пути MATLAB. См. Не загружать модели, затененные на пути 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')

Советы по построению модели

Вот несколько подсказок по построению моделей, которые вы можете найти полезными:

  • Проблемы с памятью

    В целом, увеличение объема памяти повысит производительность.

  • Использование иерархии

    Более сложные модели часто выигрывают от добавления иерархии подсистем в модель. Группирование блоков упрощает верхний уровень модели и облегчает чтение и понимание модели. Дополнительные сведения см. в разделе Создание подсистем. Обозреватель моделей предоставляет полезную информацию о сложных моделях (см. Редактор Simulink).

  • Очистка моделей

    Хорошо организованные и документированные модели легче читать и понимать. Метки сигналов и аннотации модели могут помочь описать происходящее в модели. Дополнительные сведения см. в разделе Имена и метки сигналов и описание моделей с использованием заметок и аннотаций.

  • Стратегии моделирования

    Если в нескольких моделях используются одни и те же блоки, их можно сохранить для удобства повторного использования. Например, можно сохранить коллекцию блоков в пользовательской библиотеке. Затем при создании новых моделей можно скопировать эти блоки из библиотеки.

    Как правило, при построении модели сначала проектируйте ее на бумаге, а затем строите с помощью компьютера. Затем при объединении блоков в модель добавьте блоки в окно модели, прежде чем добавлять соединяющие их линии. Таким образом, можно уменьшить частоту открытия библиотек блоков.

Связанные примеры

Подробнее