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

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

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

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

  • Является ли сеть дискретной или непрерывной

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

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

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

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

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

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

Примечание

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Используйте решатель ode1be Backward Euler.

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

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

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

Использование локальных решателей с фиксированным шагом Simscape

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

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

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

  • Эйлер Назад

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

  • Разделение

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

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

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

См. также

Похожие примеры

Подробнее о