Решатель секционирования - это Simscape™ локальный решатель с фиксированным шагом, который повышает производительность для определенных моделей. Однако не все сети могут моделировать с помощью решателя разбиения. Некоторые модели, использующие решатель секционирования, могут привести к ошибкам и не могут быть инициализированы из-за числовых трудностей. Чтобы устранить численные трудности, препятствующие инициализации с помощью асинхронных, синхронных и постоянных магнитных роторных машинных блоков, можно исключить члены нулевой последовательности. Исключение паразитной проводимости устраняет числовые трудности с блоком плавающей нейтрали (трехфазного) и нейтрального соединения, которые включают такую проводимость по умолчанию.
Чтобы определить наилучший вариант решателя для модели, используйте ee_updateSolver вспомогательная функция, которая полезна для итерации с различными решателями. Функция обновляет определенные значения параметров для каждого экземпляра этих блоков в модели:
Блоки конфигурации решателя
Блоки станка с параметром нулевой последовательности
Соединительные блоки с параметром Parasitic conductivity to ground
Синтаксис функции: ee_updateSolver(solver,system). Укажите оба входных аргумента с помощью символьных векторов. В таблице показано, как функция обновляет значения в зависимости от указанного решателя.
| Входной аргумент | Блок конфигурации решателя (тип решателя) | Блок конфигурации решателя (использовать локальный решатель и использовать итерации согласованности среды выполнения с фиксированной стоимостью) | Асинхронные, синхронные и постоянные магнитные роторные блоки (нулевая последовательность) | Плавающий нейтральный (трехфазный) блок и нейтральный соединительный блок (паразитная проводимость на землю) |
|---|---|---|---|---|
| 'Разделение' | Разделение | Отобранный | Exclude | 0 |
| 'Обратный эйлер' или 'Обратный эйлер' | Назад Эйлер | Отобранный | Include | 1e-12 |
| 'Трапециевидный' | Трапециевидный | Отобранный | Include | 1e-12 |
| «Глобальный» или «Нелокальный» | Без изменений | Очищенный | Include | 1e-12 |
ee_solverUpdate ФункцияВ этом примере показано, как использовать ee_solverUpdate для конфигурирования блоков конфигурации решателя и PMSM в модели для моделирования с помощью решателя разбиения и решателя обратного Euler. Также показано, как сравнивать длительность моделирования и результаты.
Откройте модель. В командной строке MATLAB ® введите этот код.

Два блока, которые ee_solverUpdate могут обновляться блок конфигурации решателя и блок PMSM.
Сохраните настройки параметров для двух блоков.
Параметры сохраняются в configBaseline в рабочей области MATLAB.

Интересующие настройки блока конфигурации решателя:
Использовать локальный решатель - опция использования локального решателя Simscape очищена.
Тип решателя - Обратный эйлер, локальный решатель фиксированных затрат Simscape. Однако при открытии диалогового окна блока можно увидеть, что оно не включено, так как опция использования локального решателя снята.
Использовать итерации непротиворечивости среды выполнения с фиксированной стоимостью - опция использования фиксированной стоимости очищена. Эта опция также отключается, когда опция для использования локального решателя очищается.
Для машины параметр Zero sequence имеет значение Include. Уравнения нулевой последовательности могут вызвать числовые трудности при моделировании с помощью решателя секционирования.
Возврат всех выходных данных моделирования в пределах одного Simulink.SimulationOutput чтобы впоследствии можно было сравнить время моделирования, включите формат одиночного вывода sim команда.
% Enable single-output format set_param(model,'ReturnWorkspaceOutputs', 'on')
Отметьте сигнал крутящего момента ротора, который соединяет блок trqMotor From с блоком Mux, для регистрации и просмотра данных моделирования с помощью инспектора данных моделирования.
Значок регистрации
помечает сигнал в модели.
Определите результаты и продолжительность моделирования с помощью параметров опорной структуры.
Использовать ee_updateSolver для изменения конфигурации решателя Backward Euler. Сохраните настройки конфигурации и сравните их с настройками опорной структуры.
configDiff =
1×1 cell array
{'on'}

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

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