Решатели для симуляции в реальном времени

Чтобы запустить вашу модель на машине реального времени, сконфигурируйте свою модель для фиксированного шага, симуляции фиксированных затрат. Тип решателя фиксированного шага, размера шага и количества итераций, которые вы задаете, влияет на скорость и точность вашей симуляции в реальном времени.

Каждая отличная физическая сеть Simscape™ в вашей модели имеет свой собственный блок Simscape Solver Configuration. Можно установить выбор решателя по-другому для каждой физической сети. Если вы не проверяете локальную опцию решателя на физическую сеть, то та сеть использует глобальный решатель Simulink®, который вы задаете.

При выборе типа решателя фиксированного шага основные факторы, чтобы рассмотреть для каждой сети в модели:

  • Дискретна ли сеть или непрерывна

  • Вычислительная стоимость решателя

  • Числовая жесткость сети

Следующая таблица обобщает типы решателей фиксированного шага в библиотеках Simulink и Simscape.

ОбластьВводЧисленный методРешатель
Глобальный решатель SimulinkНепрерывныйЯвныйode1 (метод Эйлера)
ode2 (метод Хуена)
ode3 (Шемпин Богацков)
ode4 (Четвертый Порядок, Рунге-Кутта, RK4)
ode5 (Dormand-принц, RK5)
ode8 (Dormand-принц, RK8)
Неявныйode14x (экстраполяция)
ДискретныйНе применяетсяДискретный (никакие непрерывные состояния)
Simscape локальная сетьНепрерывныйНеявныйОбратный Эйлер
Метод трапеций
Разделение

Выбор между дискретными и непрерывными решателями

Чтобы выполнить симуляцию в реальном времени на дискретной модели, например, для проекта цифрового контроллера, задают глобальную переменную Simulink дискретный решатель. Если сеть, которая содержит контроллер, имеет какие-либо непрерывные состояния, дискретизируйте сеть. Для примера, который показывает, как дискретизировать контроллер для гидравлического привода, смотрите Гидравлический Привод, Сконфигурированный для Программное-аппаратного тестирования.

Примечание

Физическая сеть с помощью локального решателя появляется к глобальному решателю Simulink, как будто это имеет дискретные состояния.

Если ваши модели контроллеров действительно содержат непрерывные состояния, например, если вы моделируете аналоговый контроллер, используйте глобальную переменную Simulink непрерывный решатель.

Вычислительная стоимость для непрерывных решателей

Стоимость расчета является количеством вычислений на временной шаг, который выполняет процессор. Готовность в реальном времени изменяется обратно пропорционально стоимости расчета. Чем ниже вычислительная стоимость модели, тем более вероятно случается так, что симуляция в реальном времени доходов модели без переполнений и генерирует достаточно точные результаты.

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

Для заданной точности явные глобальные решатели обычно имеют более низкую вычислительную стоимость, чем неявные глобальные решатели. Локальный (только Simscape) решатели являются менее дорогостоящими, чем глобальные решатели.

Как числовая жесткость влияет на выбор решателя

Чтобы определить, использовать ли явный или неявный решатель фиксированного шага в симуляции вашей модели в режиме реального времени, рассмотрите эти два фактора:

  • Числовая жесткость системы

  • Вычислительная стоимость решателя

Чтобы определить, является ли ваша система жесткой или нежесткой, симулируйте с различными настройками решателя фиксированного шага и сравните результаты каждого со ссылочными результатами. Если размер шага является слишком большим, жесткие системы могут произвести колебания, потому что они содержат движущие силы, которые варьируются и быстро и медленно. Для получения дополнительной информации смотрите Жесткость Системы (Simulink) и Определите Системную Жесткость.

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

Если ваши модели контроллеров непрерывны и численно жестки, используйте неявный решатель ode14x. Если ode14x не позволяет вашей модели симулировать достаточно быстро для симуляции в реальном времени, за счет точности, вы можете:

  • Улучшите скорость симуляции путем увеличения размера шага или сокращения числа итераций.

  • Уменьшайте жесткость своей модели и задайте явный решатель вместо ode14x.

Чтобы определить явный решатель, который является лучшим выбором для ваших менее жестких или численно нежестких, непрерывных моделей контроллеров, выполните ограниченную симуляцию с помощью каждого из явных непрерывных решателей. Сконфигурируйте каждый решатель, чтобы использовать тот же размер шага и подобное количество итераций решателя. Сравните результаты симуляции и выберите решатель, который обеспечивает лучшую комбинацию точности и скорости.

Чтобы увеличить точность результатов, которые ваш явный решатель обеспечивает, за счет скорости, уменьшают размер шага или увеличивают число итераций. Для получения дополнительной информации о конфигурировании вашей модели для фиксированного шага видят симуляция фиксированных затрат и оценка результатов ограниченной симуляции, Выбирают Step Size и Number of Iterations.

Используя Simscape локальные решатели Фиксированного Шага

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

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

Выберите между тремя решателями фиксированного шага Simscape для симуляции в реальном времени.

  • Обратный Эйлер

  • Метод трапеций

  • Разделение

Обратный Эйлеров решатель более устойчив, и поэтому более устойчив, чем решатель Метода трапеций. Это имеет тенденцию ослаблять колебания. Решатель Метода трапеций более точен, но менее устойчив, чем Обратный Эйлеров решатель. Это имеет тенденцию получать колебания, как формы волны AC синусоиды, которые характерны для электрических систем. Решатель Разделения также более устойчив, чем решатель Метода трапеций, однако, это не может симулировать определенные модели. Для получения дополнительной информации смотрите, что Скорость симуляции Увеличения Использует Решатель Разделения. Независимо от локального решателя вы выбираете, симуляция использует Обратного Эйлера каждый раз, когда числовая устойчивость находится в опасности:

  • В начале симуляции.

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

Смотрите также

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

Больше о