Примите эти методы конструирования для больших моделей с алгебраическими циклами:
Избегайте создания циклов, содержащих разрывы или типы данных, которые не являются двойными. Решатель алгебраических циклов Simulink ® основан на градиенте и должен решать алгебраические ограничения с высокой точностью .
Разработать схему четкого определения атомных подсистем как прямых или не прямых. Используйте визуальную схему, например раскраску блоков или определение соглашения об именовании блоков.
Если планируется создать код для модели, включите параметр Минимизировать вхождения алгебраического цикла для всех атомных подсистем. По возможности убедитесь, что входные порты атомных подсистем подключены непосредственно к блокам с непрямым проходом.
Избегайте объединения путей, не являющихся прямыми и прямыми, с использованием блоков Bus Creator или Mux. Simulink может быть не в состоянии устранить любые результирующие искусственные алгебраические петли. Вместо этого рассмотрите возможность кластеризации объектов, не являющихся прямыми и прямыми, в отдельные подсистемы.
Блоки выбора шины используются для передачи в атомарные подсистемы только требуемых сигналов.
Если блок модели является частью цикла, а блок является блоком прямой подачи, может получиться алгебраический цикл. Алгебраический цикл в модели не обязательно является ошибкой, но он может дать неожиданные результаты. См.:
Выделите алгебраические контуры в модели для получения информации о графическом отображении алгебраических контуров.
Отображение информации алгебраического цикла для получения информации об отслеживании алгебраических циклов в отладчике.
Опция Алгебраического цикла панели «Параметры конфигурации модели: Диагностика» для получения информации об автоматическом обнаружении алгебраических циклов.
Блок модели может быть блоком прямой подачи из-за структуры ссылочной модели. Если прямая подача результатов из структуры подмодели и вызывает нежелательный алгебраический цикл, можно:
Автоматически устранить алгебраический цикл с помощью методов, описанных в:
Вручную вставьте количество блоков единичной задержки, необходимое для разрыва алгебраического цикла.
Общее время в реальном времени (grt) и встраиваемых систем в реальном времени (ert) на основе целевых объектов в диалоговом окне «Параметры конфигурации» предусмотрена опция функции Single output/update. Эта опция определяет, имеет ли сгенерированный код отдельные функции вывода и обновления или комбинированную функцию вывода/обновления. См.:
Сконфигурируйте генерацию кода C для функций точек входа модели (Simulink Coder) для получения информации об отдельных и объединенных функциях вывода и обновления.
Одна функция вывода/обновления (Simulink Coder) для получения информации о том, имеет ли код отдельные или комбинированные функции.
Если включена функция одиночного вывода/обновления (по умолчанию), блок модели имеет комбинированную функцию вывода/обновления. Функция делает блок блоком прямой подачи для всех входов, независимо от структуры ссылочной модели. Если возникает нежелательный алгебраический цикл, можно:
Отключить функцию одиночного вывода/обновления. Затем код для блока модели имеет отдельные функции вывода и обновления, исключая прямую подачу и, следовательно, алгебраический цикл.
При необходимости вручную вставьте один или несколько блоков единичной задержки, чтобы разорвать алгебраический цикл.
Во время фазы обновления моделирования Simulink определяет порядок выполнения моделирования блочных методов. Порядок вызова блока - это порядок выполнения.
Если назначить приоритеты невиртуальным блокам, чтобы указать Simulink их порядок выполнения относительно других блоков, решатель алгебраических циклов не учитывает эти приоритеты при попытке решить какие-либо алгебраические циклы.