Решатель Разделения является фиксированным шагом Simscape™ локальный решатель, который улучшает производительность для определенных моделей. Однако не все сети могут симулировать с решателем Разделения. Некоторые модели, которые используют решатель Разделения, могут произвести ошибки и могут не инициализировать из-за числовых трудностей. Чтобы разрешить числовые трудности, предотвращающие инициализацию с асинхронными, синхронными блоками машины ротора, и постоянного магнита, можно исключить условия нулевой последовательности. Исключая числовые трудности твердости паразитной проводимости с блоком Floating Neutral (Three-Phase) и Neutral Connection, которые включают такую проводимость по умолчанию.
Чтобы определить лучший выбор решателя для вашей модели, используйте ee_updateSolver
функция помощника, которая полезна для итерации с различными решателями. Функция обновляет определенные значения параметров для каждого экземпляра этих блоков в вашей модели:
Блоки Solver Configuration
Блоки машины, которые имеют параметр Zero sequence
Блоки связи, которые имеют параметр Parasitic conductance to ground
Синтаксис функций ee_updateSolver(solver,system)
. Задайте оба входных параметра с помощью векторов символов. Таблица показывает, как функция обновляет значения, в зависимости от решателя, который вы задаете.
Входной параметр | Блок Solver Configuration (Solver type) | Блок Solver Configuration (Use local solver и Use fixed-cost runtime consistency iterations) | Асинхронные, синхронные блоки машины ротора, и постоянного магнита (Zero sequence) | Блок Floating Neutral (Three-Phase) и блок Neutral Connection (Parasitic conductance to ground) |
---|---|---|---|---|
'Разделение' | Разделение | Выбранный | Exclude | 0
|
'Обратный Эйлер' или 'BackwardEuler' | Обратный Эйлер | Выбранный | Include | 1e-12 |
'Трапециевидный' | Трапециевидный | Выбранный | Include | 1e-12 |
'Глобальная переменная' или 'Нелокальный' | Никакое изменение | Очищенный | Include | 1e-12 |
ee_solverUpdate
ФункцияВ этом примере показано, как использовать ee_solverUpdate
функция, чтобы сконфигурировать Solver Configuration и PMSM блокируется в модели для симуляции с решателем Разделения и Обратным Эйлеровым решателем. Это также показывает, как сравнить времена длительности симуляции и результаты.
Откройте модель. В командной строке MATLAB® введите этот код.
Два блока, что ee_solverUpdate
функция может обновиться, блок Solver Configuration и блок PMSM.
Сохраните установки параметров для двух блоков.
Настройки сохранены в configBaseline
массив в рабочем пространстве MATLAB.
Представляющие интерес настройки для блока Solver Configuration:
Use local solver — Опция, чтобы использовать локальный решатель Simscape очищена.
Solver type — Обратный Эйлер, Simscape локальный решатель фиксированных затрат, задан. Однако, если вы открываете диалоговое окно блока, вы видите, что оно не включено, потому что опция, чтобы использовать локальный решатель очищена.
Use fixed-cost runtime consistency iterations — Опция, чтобы использовать фиксированные затраты очищена. Эта опция также отключена, когда опция, чтобы использовать локальный решатель очищена.
Для машины параметр Zero sequence устанавливается на Include
. Уравнения нулевой последовательности могут вызвать числовую трудность, когда вы симулируете с решателем Разделения.
Возвратить всю симуляцию выходные параметры в одном Simulink.SimulationOutput
возразите так, чтобы можно было позже сравнить времена симуляции, включите одно выходной формат sim
команда.
% Enable single-output format set_param(model,'ReturnWorkspaceOutputs', 'on')
Отметьте сигнал крутящего момента ротора, который соединяет блок trqMotor From с блоком Mux для Логгирования Данных моделирования и просмотра с Инспектором Данных моделирования.
Значок логгирования отмечает сигнал в модели.
Определите результаты и сколько времени это берет, чтобы симулировать с базовыми настройками.
Использование ee_updateSolver
функционируйте, чтобы превратиться в Обратную Эйлеровую настройку решателя. Сохраните параметры конфигурации и сравните настройки с базовыми настройками.
configDiff = 1×1 cell array {'on'}
Опция, чтобы использовать локальный решатель, который установлен в Обратного Эйлера по умолчанию и опцию, чтобы использовать итерации непротиворечивости времени выполнения фиксированных затрат, теперь оба выбрана.
Запустите синхронизированную симуляцию с помощью Обратного Эйлерового решателя.
Если вы изменяете локальный решатель в решатель Разделения и симулируете модель теперь, ошибка происходит из-за условий нулевой последовательности. Используйте ee_updateSolver
функция, чтобы сконфигурировать модель для симуляции с решателем Разделения, не генерируя ошибку. Сохраните параметры конфигурации, сравните настройки с базовыми настройками и запустите синхронизированную симуляцию.
configDiff = 3×1 cell array {'NE_PARTITIONING_ADVANCER' } {'ee.enum.park.zerosequence.exclude'} {'on' } Warning: Initial conditions for nondifferential variables not supported. The following states may deviate from requested initial conditions: ['<a href="matlab:open_and_hilite_system('ee_pmsm_drive/Battery')"... >ee_pmsm_drive/Battery</a>'] Battery.num_cycles o In ee.sources.battery_base ['<a href="matlab:open_and_hilite_system('ee_pmsm_drive/Permanent Magnet Synchronous Motor')">ee_pmsm_drive/Permanent Magnet Synchronous Motor</a>'] Permanent_Magnet_Synchronous_Motor.angular_position
Тип решателя теперь установлен в решатель Разделения, и машина сконфигурирована, чтобы исключить условия нулевой последовательности.
Симуляция запускается, не генерируя ошибку. Это действительно генерирует предупреждение, потому что начальные условия для недифференциальных переменных не поддерживаются для решателя Разделения.
Распечатайте таблицы, которые показывают:
Время симуляции для каждого решателя
Различия в проценте в скорости для локальных решателей по сравнению с базовым глобальным решателем.
Время симуляции на вашей машине может отличаться, потому что скорость симуляции зависит от вычислительной мощности машины и вычислительной стоимости параллельных процессов. Локальное Разделение фиксированного шага и Обратные Эйлеровы решатели быстрее, чем базовый решатель, который является глобальной переменной, решателем переменного шага. Решатель Разделения быстрее, чем Обратный Эйлеров решатель.
Чтобы сравнить результаты, откройте Инспектора Данных моделирования.
Чтобы видеть сравнение, нажмите Compare и затем нажмите From6.
Первый график показывает наложение Обратных результатов симуляции решателя Эйлера и Разделения. Второй график показывает, как они отличаются. Допуском по умолчанию к различиям является 0
. Чтобы определить, удовлетворяет ли точность результатов ваши требования, можно настроить относительное, абсолютное, и допуски времени. Для получения дополнительной информации смотрите, Сравнивают Данные моделирования.
Можно также использовать ee_updateSolver
функционируйте, чтобы сбросить модель для симуляции с глобальным решателем.
ee_updateSolver
ФункцияИспользуя ee_updateSolver
функция не гарантирует, что симуляция не генерирует ошибку или что симуляция приводит к точным результатам. Чтобы гарантировать, что точность симуляции удовлетворяет ваши требования, это - методические рекомендации, чтобы сравнить результаты симуляции с базовыми результатами каждый раз, когда вы изменяете настройки блока или модель.