Решатель Partitioning является Simscape™ локальным решателем с фиксированным шагом, который улучшает эффективность для определенных моделей. Однако не все сети могут симулировать с помощью решателя Partitioning. Некоторые модели, которые используют решатель Partitioning, могут привести к ошибкам и не могут инициализировать из-за численных трудностей. Чтобы решить числовые трудности, препятствующие инициализации с асинхронными, синхронными и блоками ротора с постоянными магнитами, можно исключить условия нулевой последовательности. Исключение паразитной проводимости разрешает числовые трудности с блоком Floating Neutral (Three-Phase) и Neutral Connection, которые включают такую проводимость по умолчанию.
Чтобы определить лучший выбор решателя для вашей модели, используйте ee_updateSolver Функция helper, которая полезна для итерации различными решателями. Функция обновляет определенные значения параметров для каждого образца этих блоков в вашей модели:
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 |
| 'Global' или 'Nonlocal' | Без изменений | Очищенный | Include | 1e-12 |
ee_solverUpdate ФункцияВ этом примере показано, как использовать ee_solverUpdate функция для конфигурирования блоков Solver Configuration и PMSM в модели для симуляции с помощью решателя Partitioning и решателя Backward Euler. Это также показывает, как сравнить время длительности симуляции и результаты.
Откройте модель. В 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 для Данных моделирования Логгирования и просмотра с помощью Данных моделирования Inspector.
Логгирующий значок
помечает сигнал в модели.
Определите результаты и продолжительность симуляции с настройками базовой линии.
Использовать ee_updateSolver функция для перехода к строению решателя Backward Euler. Сохраните настройки строения и сравните настройки с настройками опорной структуры.
configDiff =
1×1 cell array
{'on'}

Опция использовать локальный решатель, который по умолчанию установлен на Backward Euler, и опция использовать итерации согласованности во время выполнения с фиксированными затратами теперь выбраны.
Запустите размеченную по времени симуляцию с помощью решателя Backward Euler.
Если вы смените локальный решатель на решатель Partitioning и симулируете модель сейчас, возникает ошибка из-за членов нулевой последовательности. Используйте ee_updateSolver функция, чтобы сконфигурировать модель для симуляции с решателем Partitioning без генерации ошибки. Сохраните настройки строения, сравните настройки с настройками базовой линии и запустите временную симуляцию.
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 
Теперь для типа решателя задан решатель Partitioning, и машина сконфигурирована так, чтобы исключить условия нулевой последовательности.
Симуляция выполняется без генерации ошибки. Это генерирует предупреждение, потому что начальные условия для недифференциальных переменных не поддерживаются для решателя Partitioning.
Печать таблиц, в которых показаны:
Время симуляции для каждого решателя
Процентные различия скорости для локальных решателей от базового глобального решателя.
Время симуляции на вашей машине может отличаться, потому что скорость симуляции зависит от степени обработки машины и вычислительных затрат параллельных процессов. Локальные решатели fixed-step Partitioning и Backward Euler быстрее, чем решатель baseline, который является глобальным, переменно-шаговым решателем. Решатель Partitioning быстрее, чем решатель Backward Euler.
Чтобы сравнить результаты, откройте Данные моделирования Inspector.
Чтобы увидеть сравнение, нажмите Compare и затем нажмите From6.

Первый график показывает наложение результатов симуляции решателя Backward Euler и Partitioning. Второй график показывает, чем они отличаются. Допуск по умолчанию для различий 0. Чтобы определить, соответствует ли точность результатов вашим требованиям, можно настроить относительные, абсолютные и временные допуски. Для получения дополнительной информации см. «Сравнение данных моделирования».
Вы также можете использовать ee_updateSolver функция, чтобы сбросить модель для симуляции с глобальным решателем.
ee_updateSolver ФункцияИспользование ee_updateSolver функция не гарантирует, что симуляция не генерирует ошибку или что симуляция дает точные результаты. Чтобы убедиться, что точность симуляции соответствует вашим требованиям, рекомендуется сравнить результаты симуляции с результатами базовой линии всякий раз, когда вы меняете настройки модели или блока.