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

Решатель Разделения является фиксированным шагом 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)
'Разделение'РазделениеВыбранныйExclude0
'Обратный Эйлер' или 'BackwardEuler'Обратный ЭйлерВыбранныйInclude1e-12
'Трапециевидный'ТрапециевидныйВыбранныйInclude1e-12
'Глобальная переменная' или 'Нелокальный'Никакое изменениеОчищенныйInclude1e-12

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

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

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

     См. код

    Два блока, что ee_solverUpdate функция может обновиться, блок Solver Configuration и блок PMSM.

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

     См. код

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

    Представляющие интерес настройки для блока Solver 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 функция не гарантирует, что симуляция не генерирует ошибку или что симуляция приводит к точным результатам. Чтобы гарантировать, что точность симуляции удовлетворяет ваши требования, это - методические рекомендации, чтобы сравнить результаты симуляции с базовыми результатами каждый раз, когда вы изменяете настройки блока или модель.

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

|

Похожие темы