Примите эти методы проектирования для больших моделей с алгебраическими циклами:
Постарайтесь не создавать циклы, которые содержат разрывы или недвойные типы данных. Simulink® алгебраический решатель цикла основан на градиенте и должен решить алгебраические ограничения к высокой точности.
Разработайте схему того, чтобы ясно идентифицировать атомарные подсистемы как прямое сквозное соединение или не прямое сквозное соединение. Используйте визуальную схему, такую как окраска блоков или определение соглашения о присвоении имен блока.
Если вы планируете сгенерировать код для своей модели, включите параметр Minimize algebraic loop occurrences для всех атомарных подсистем. Когда возможно, убедитесь, что входные порты для атомарных подсистем соединяются непосредственно с блоками "не прямое сквозное соединение".
Постарайтесь не комбинировать "не прямые проходные" и прямые проходные пути с помощью блоков Создателя или Мультиплексора Шины. Simulink не может смочь устранить любые получившиеся искусственные алгебраические циклы. Вместо этого рассмотрите кластеризацию "не прямых проходных" и прямых проходных объектов в отдельных подсистемах.
Используйте блоки Селектора Шины, чтобы передать только необходимые сигналы в атомарные подсистемы.
Когда блок Model является частью цикла, и блок является прямым каналом через блок, алгебраический цикл может закончиться. Алгебраический цикл в модели является не обязательно ошибкой, но он может дать неожиданные результаты. См.:
Подсветите Алгебраические Циклы в Модели для получения информации о наблюдении алгебраических циклов графически.
Отобразите Алгебраическую информацию о Цикле для получения информации о трассировке алгебраических циклов в отладчике.
Образцовые Параметры конфигурации: панель Диагностики Алгебраическая опция цикла для получения информации об обнаружении алгебраических циклов автоматически.
Блок Model может быть прямым каналом через блок из-за структуры модели, на которую ссылаются. Где прямой канал посредством результатов структуры подмодели и причин нежелательный алгебраический цикл, вы можете:
Автоматически устраните алгебраический цикл с помощью методов, описанных в:
Вручную вставьте количество блоков Единичной задержки, должен был повредить алгебраический цикл.
Типичное Реальное время (grt
) и Встроенные Оперативные основанные на (ert
) цели предоставляет возможность Single output/update function на диалоговом окне Configuration Parameters. Эта опция управляет, имеет ли сгенерированный код отдельные функции вывода и обновления или объединенную функцию вывода/обновления. См.:
Сконфигурируйте Генерацию кода для Образцовых Функций Точки входа (Simulink Coder) для получения информации об отдельном и объединенном выводе и обновите функции.
Одна функция вывода/обновления (Simulink Coder) для получения информации об определении, имеет ли код отдельные или объединенные функции.
Когда функции вывода/обновления Single включают (значение по умолчанию), блок Model имеет объединенную функцию вывода/обновления. Функция делает блок прямым каналом через блок для всего импорта, независимо от структуры модели, на которую ссылаются. Где нежелательный алгебраический цикл заканчивается, вы можете:
Отключите функцию вывода/обновления Single. Код для блока Model затем имеет отдельные функции вывода и обновления, устраняя прямой канал через и следовательно алгебраический цикл.
Автоматически устраните алгебраический цикл с помощью методов, описанных в:
Вручную вставьте один или несколько блоков Единичной задержки по мере необходимости, чтобы повредить алгебраический цикл.
Во время фазы обновления симуляции Simulink определяет порядок выполнения симуляции методов блока. Этим упорядоченным расположением вызова блока является sorted order.
Если вы присваиваете приоритеты невиртуальным блокам, чтобы указать к Simulink на их порядок выполнения относительно других блоков, алгебраический решатель цикла не соблюдает эти приоритеты при попытке решить любые алгебраические циклы.