Оптимизируйте настройки блока для симуляции с решателем разделения

Решатель Разделения является фиксированным шагом Simscape™ локальный решатель, который улучшает производительность для определенных моделей. Однако не все сети могут моделировать с решателем Разделения. Некоторые модели, которые используют решатель Разделения, могут произвести ошибки и могут не инициализировать из-за числовых трудностей. Чтобы разрешить числовые трудности, предотвращающие инициализацию с асинхронными, синхронными блоками машины ротора, и постоянного магнита, можно исключить условия нулевой последовательности. Исключая числовые трудности твердости паразитной проводимости с блоком Floating Neutral (Three-Phase) и Neutral Connection, которые включают такую проводимость по умолчанию.

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

  • Блоки Configuration решателя

  • Блоки машины, которые имеют параметр Zero sequence

  • Блоки связи, которые имеют параметр Parasitic conductance to ground

Синтаксисом функций является ee_updateSolver(solver,system). Задайте оба входных параметра с помощью векторов символов. Таблица показывает, как функция обновляет значения, в зависимости от решателя, который вы задаете.

Входной параметрБлок Configuration решателя (Solver type)Блок Configuration решателя (Use local solver и Use fixed-cost runtime consistency iterations)Асинхронные, синхронные блоки машины ротора, и постоянного магнита (Zero sequence)Плавание нейтрального (трехфазного) блока и нейтрального блока связи (Parasitic conductance to ground)
'Разделение'РазделениеВыбранныйExclude0
'Обратный Эйлер' или 'BackwardEuler'Обратный ЭйлерВыбранныйInclude1e-12
'Трапециевидный'ТрапециевидныйВыбранныйInclude1e-12
'Глобальная переменная' или 'Нелокальный'Никакое изменениеОчищенныйInclude1e-12

Обновите настройки решателя и Нулевой Последовательности Используя функцию ee_solverUpdate

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

  1. Откройте модель. В командной строке MATLAB® введите этот код.

     См. код

    Два блока, которые может обновить функция ee_solverUpdate, являются блоком Блок Configuration и PMSM Решателя.

  2. Сохраните установки параметров для двух блоков.

     См. код

    Настройки сохранены в массив configBaseline в рабочем пространстве MATLAB.

    Представляющие интерес настройки для Блока Configuration Решателя:

    • Use local solver — Опция, чтобы использовать локальный решатель Simscape очищена.

    • Solver type — Обратный Эйлер, Simscape локальный решатель фиксированных затрат, задан. Однако, если вы открываете диалоговое окно блока, вы видите, что оно не включено, потому что опция, чтобы использовать локальный решатель очищена.

    • Use fixed-cost runtime consistency iterations — Опция, чтобы использовать фиксированные затраты очищена. Эта опция также отключена, когда опция, чтобы использовать локальный решатель очищена.

    Для машины параметр Zero sequence устанавливается на Include. Уравнения нулевой последовательности могут вызвать числовую трудность, когда вы моделируете с решателем Разделения.

  3. Чтобы возвратить всю симуляцию выходные параметры в одном объекте Simulink.SimulationOutput так, чтобы можно было позже сравнить времена симуляции, включите одно выходной формат команды sim.

    % Enable single-output format 
    set_param(model,'ReturnWorkspaceOutputs', 'on')
  4. Отметьте сигнал крутящего момента ротора, который соединяет блок trqMotor From с блоком Mux для регистрации данных Simulink® и просматривающий с Data Inspector Simulink.

     См. код

    Значок журналирования отмечает сигнал в модели.

  5. Определите результаты и сколько времени это берет, чтобы моделировать с базовыми настройками.

     См. код

  6. Используйте функцию ee_updateSolver, чтобы измениться на Обратную Эйлеровую настройку решателя. Сохраните параметры конфигурации и сравните настройки с базовыми настройками.

     См. код

    configDiff =
    
      1×1 cell array
    
        {'on'}
    

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

  7. Запустите синхронизированную симуляцию с помощью Обратного Эйлерового решателя.

     См. код

  8. Если вы изменяете локальный решатель на решатель Разделения и моделируете модель теперь, ошибка происходит из-за условий нулевой последовательности. Используйте функцию 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 

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

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

  9. Распечатайте таблицы, которые показывают:

    • Время симуляции для каждого решателя

    • Различия в проценте в скорости для локальных решателей по сравнению с базовым глобальным решателем.

     См. код

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

  10. Чтобы сравнить результаты, откройте Data Inspector Simulink.

     См. код

    Чтобы видеть сравнение, нажмите Compare и затем нажмите From6.

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

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

 См. код

Ограничения функции ee_updateSolver

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

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

|

Похожие темы