exponenta event banner

Оптимизация параметров блоков для моделирования с помощью решателя секционирования

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

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

  • Блоки конфигурации решателя

  • Блоки станка с параметром нулевой последовательности

  • Соединительные блоки с параметром Parasitic conductivity to ground

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

Входной аргументБлок конфигурации решателя (тип решателя)Блок конфигурации решателя (использовать локальный решатель и использовать итерации согласованности среды выполнения с фиксированной стоимостью)Асинхронные, синхронные и постоянные магнитные роторные блоки (нулевая последовательность)Плавающий нейтральный (трехфазный) блок и нейтральный соединительный блок (паразитная проводимость на землю)
'Разделение'РазделениеОтобранныйExclude0
'Обратный эйлер' или 'Обратный эйлер'Назад ЭйлерОтобранныйInclude1e-12
'Трапециевидный'ТрапециевидныйОтобранныйInclude1e-12
«Глобальный» или «Нелокальный»Без измененийОчищенныйInclude1e-12

Обновление параметров решателя и нулевой последовательности с помощью ee_solverUpdate Функция

В этом примере показано, как использовать ee_solverUpdate для конфигурирования блоков конфигурации решателя и PMSM в модели для моделирования с помощью решателя разбиения и решателя обратного Euler. Также показано, как сравнивать длительность моделирования и результаты.

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

     См. Код

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

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

     См. Код

    Параметры сохраняются в configBaseline в рабочей области MATLAB.

    Интересующие настройки блока конфигурации решателя:

    • Использовать локальный решатель - опция использования локального решателя Simscape очищена.

    • Тип решателя - Обратный эйлер, локальный решатель фиксированных затрат Simscape. Однако при открытии диалогового окна блока можно увидеть, что оно не включено, так как опция использования локального решателя снята.

    • Использовать итерации непротиворечивости среды выполнения с фиксированной стоимостью - опция использования фиксированной стоимости очищена. Эта опция также отключается, когда опция для использования локального решателя очищается.

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

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

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

     См. Код

    Значок регистрации помечает сигнал в модели.

  5. Определите результаты и продолжительность моделирования с помощью параметров опорной структуры.

     См. Код

  6. Использовать ee_updateSolver для изменения конфигурации решателя Backward Euler. Сохраните настройки конфигурации и сравните их с настройками опорной структуры.

     См. Код

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

    Теперь выбрана опция использования локального решателя, для которого по умолчанию задано значение Обратный эйлер (Backward Euler), и опция использования итераций согласованности среды выполнения с фиксированной стоимостью.

  7. Запустите моделирование по времени с помощью решателя обратного Euler.

     См. Код

  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. Печать таблиц, отображающих:

    • Время моделирования для каждого решателя

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

     См. Код

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

  10. Чтобы сравнить результаты, откройте инспектор данных моделирования.

     См. Код

    Чтобы увидеть сравнение, щелкните Сравнить (Compare), а затем нажмите кнопку From6.

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

Вы также можете использовать ee_updateSolver для сброса модели для моделирования с помощью глобального решателя.

 См. Код

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

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

См. также

|

Связанные темы