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

Этот пример определяет начальное положение ротора (в электрических радианах) стационарного внутреннего PMSM. Пример использует метод высокочастотной пульсации (PHF), который работает, когда двигатель имеет высокое отношение выступа$({L_q} > {L_d})$. Предполагаемое положение ротора лежит в диапазоне от 0 к 2π электрические радианы. Из-за ограничения в методе PHF, предполагаемое положение может показать неоднозначность π (пи). Метод двойного импульса (DP) использует обнаружение полярности, чтобы разрешить неоднозначность π и применяет π компенсацию, если существует ошибка.

Часть A: пульсирующий высокочастотный метод

Для методов блока управления приводом как Ориентированное на поле управление (FOC) нужна обратная связь положения в реальном времени от рабочего двигателя, чтобы отследить угол ротора точно. Алгоритм FOC использует положение ротора в реальном времени наряду с текущей обратной связью, чтобы вычислить ссылочные напряжения и рабочие циклы, которые управляют двигателем. Поэтому важно точно отследить положение ротора, чтобы вычислить правильные ссылочные напряжения, чтобы запустить двигатель на определенной скорости с помощью эффективного значения крутящего момента. Датчики как квадратурные энкодеры и датчики эффекта Холла могут обеспечить данные о положении ротора в реальном времени, чтобы реализовать отслеживание положения в приложениях FOC. Однако эти датчики могут иметь механические ограничения (например, комплексный процесс установки датчика) и могут быть дорогими. Кроме того, при использовании некоторых из этих датчиков, это затрудняет, чтобы определить исходное положение ротора.

Принимая во внимание, что, sensorless методы экономически эффективны и может обеспечить более точное отслеживание положения без любого механического ограничения. Этот пример использует метод PHF, чтобы определить начальное положение ротора. Алгоритм в качестве примера вводит синусоидальное высокочастотное напряжение вдоль d- ось (приводящий к несбалансированному трехфазному напряжению в двигателе) и чтения текущий ответ от двигателя. Алгоритм выполняет числовой анализ получившегося статора текущий ответ, чтобы вычислить исходное положение стационарного ротора (в электрических радианах).

Алгоритм в качестве примера выполняет итеративные тесты на двигателе. Поэтому, когда вы запускаете симуляцию, предполагаемое положение показывает нулем, но повышается постоянно, чтобы насыщать под предполагаемым углом ротора (относительно aось.

Метод PHF имеет ограничение, из-за которого он может вычислить положение ротора с неоднозначностью π. Если ротор находится в диапазоне${\theta _{actual}} = \left[ {0,{\pi \over 2}} \right) \cup \left( {{{3\pi } \over 2},2\pi } \right]$ электрические радианы (область 1), предполагаемое положение точно (π, компенсация не требуется).

Если ротор находится в диапазоне${\theta _{actual}} = \left( {{\pi \over 2},{{3\pi } \over 2}} \right)$ электрические радианы (область 2), предполагаемое положение показывает неоднозначность π (π, компенсация требуется).

Поэтому пример использует двойной импульсный метод, чтобы определить, нужна ли предполагаемому положению π компенсация.

Примечание: можно использовать эти переменные в скрипте инициализации модели mcb_ipmsm_pos_est_f28379d_data.m настроить сигнал PHF:

  • PHF.Frequency — Частота сигнала PHF

  • PHF.Amplitude — Амплитуда (в относительных единицах) из сигнала PHF

  • PHF.PHF_Duration — Время выполнения алгоритма PHF

Часть B: двойной импульсный метод

Алгоритм в качестве примера вводит два импульса напряжения очень короткой продолжительности (с той же шириной и величиной) в d- ось ротора относительно магнитного севера ротора:

  • Импульс 1, который использует положение ротора, оцененное частично A

  • Импульс 2, который использует положение ротора, оцененное частично + π

Поскольку ширина импульса очень коротка, двигатель не запускается, и ротор остается стационарным после импульсной инжекции. Взаимодействие между получившимся магнитным потоком статора и постоянными магнитами ротора приводит к двум текущим импульсам вдоль d- ось ротора тот взлет и падение быстро.

Поскольку ядро статора насыщается, оно показывает нелинейное поведение. Маленькие${L_d}$ результаты в более высоком токе${I_d}$, и высокие${L_d}$ результаты в меньшем токе${I_d}$. Поэтому${I_d}$ текущие импульсы, сгенерированные Импульсом 1 и Импульсом 2, показывают различные пиковые значения.

Алгоритм в качестве примера вычисляет различие между пиковыми значениями двух текущих импульсов$\Delta {I_d}$ определить если положение, оцененное частично потребности π компенсация.

$$\Delta {I_d} = \left| {{I_{d1}}} \right| - \left| {{I_{d2}}} \right|$$

Примечание:

  • Этот пример не поддерживает оценку положения, когда${\theta _{actual}}$ приблизительно равно${\pi \over 2}$ или${{3\pi } \over 2}$ (граничные точки между областью 1 и областью 2).

  • Можно использовать эти переменные в скрипте инициализации модели mcb_ipmsm_pos_est_f28379d_data.m настроить сигналы DP:

  • DP.PulseAmp — Амплитуда (в относительных единицах) из импульсов

  • DP.Duration_width — Ширина импульсов

  • DP.Duration_delay — Задержитесь между этими двумя импульсами

Модель

Пример включает целевую модель mcb_ipmsm_pos_est_f28379d.

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

open_system('mcb_ipmsm_pos_est_f28379d.slx');

Необходимый MathWorks® Products

  • Motor Control Blockset™

  • Embedded Coder®

  • Пакет поддержки Embedded Coder для процессоров Texas Instruments C2000™

  • Simscape™ Electrical™ (только для симуляции)

Необходимые условия

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

Однако, если у вас есть оборудование блока управления приводом, можно оценить параметры для двигателя при помощи инструмента оценки параметра Motor Control Blockset. Для инструкций смотрите Оценку Параметры PMSM Используя Рекомендуемое Оборудование. Инструмент оценки параметра обновляет motorParam переменная (в рабочей области MATLAB®) с предполагаемыми параметрами двигателя.

2. Обновите параметры двигателя и инвертора в скрипте инициализации модели, сопоставленном с целевой моделью. Для инструкций смотрите Оценочные Усиления Управления от Параметров двигателя.

Модель симулируется

Следуйте инструкциям в разделе Simulate Nonlinear Stator Core Behavior, чтобы ввести высокий выступ в моторном блоке. Затем выполните эти шаги, чтобы симулировать целевую модель.

1. Откройте целевую модель, включенную в этот пример.

2. Введите начальное значение положения ротора (который блок Interior PMSM должен использовать для симуляции) во Входе электрическое положение ротора (радианы) поле, доступное во Входе Симуляции & области вывода целевой модели.

3. Нажмите работает на вкладке Simulation, чтобы симулировать целевую модель. Модель оценивает положение ротора с помощью метода PHF. Затем это использует метод DP, чтобы определить, нужна ли предполагаемому положению ротора π компенсация. Целевая модель применяет π компенсацию в случае необходимости.

Это затем отображает предполагаемое положение ротора в Предполагаемом электрическом положении ротора (радианы) поле.

4. Наблюдайте регистрируемые сигналы в Инспекторе Данных моделирования.

Этот график показывает ток вдоль d- ось$({I_d})$ в процессе моделирования.

Этот график показывает предполагаемое положение ротора, когда целевая модель не применяет π компенсацию$({\theta _{init}} = {\theta _{est}})$ и когда целевая модель применяет π компенсацию$({\theta _{init}} = {\theta _{est}} + \pi )$.

5. Предполагаемое Положение Ротора (Электрические Радианы) блок отображения в области вывода целевой модели показывает начальное положение ротора, оцененное целевой моделью.

Сгенерируйте код и разверните модель в целевой компьютер

Следуйте инструкциям в этом разделе, чтобы сгенерировать код и запустить пример на целевом компьютере.

Этот пример использует хост и целевую модель. Модель хоста является пользовательским интерфейсом к плате оборудования контроллеров. Можно запустить модель хоста на хосте - компьютере. Прежде чем можно будет запустить модель хоста на хосте - компьютере, развернуть целевую модель в плату оборудования контроллеров. Модель хоста использует последовательную передачу, чтобы управлять целевой моделью Simulink® и запустить двигатель в управлении с обратной связью.

Необходимое оборудование

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

Контроллер LAUNCHXL-F28379D + инвертор BOOSTXL-DRV8305 + iPMSM (такой как Adlee BM-180): mcb_ipmsm_pos_est_f28379d

Для связей, связанных с этой аппаратной конфигурацией, см. LAUNCHXL-F28069M и Настройки LAUNCHXL-F28379D.

Сгенерируйте код и запущенную модель на целевом компьютере

1. Симулируйте целевую модель и наблюдайте результаты симуляции.

2. Завершите аппаратные связи.

3. По умолчанию модель вычисляет значения смещения ADC для фазы текущее измерение. Чтобы отключить эту функциональность, обновите значение inverter.ADCOffsetCalibEnable переменная в скрипте инициализации модели к 0.

В качестве альтернативы можно вычислить значения смещения ADC и обновить их вручную в скрипте инициализации модели. Для инструкций смотрите Запуск 3-фазовые электродвигатели переменного тока в Регулировании без обратной связи и Калибруйте Смещение ADC.

4. Откройте целевую модель. Если вы хотите изменить настройки аппаратной конфигурации по умолчанию для модели, смотрите Параметры конфигурации Модели.

5. Загрузите пример программы к CPU2 платы LAUNCHXL-F28379D. Например, загрузите программу, которая управляет синим CPU2 Во главе с использованием GPIO31 (c28379D_cpu2_blink.slx). Это гарантирует, что CPU2 по ошибке не сконфигурирован, чтобы использовать периферийные устройства платы, предназначенные для CPU1.

6. Click Build, Deploy & Start на вкладке Hardware, чтобы развернуть целевую модель в оборудование. Проверьте переменные, которые целевая модель добавляет в рабочую область.

7. Кликните по гиперссылке модели хоста в целевой модели, чтобы открыть связанную модель хоста. Можно также использовать open_system команда, чтобы открыть модель хоста.

open_system('mcb_ipmsm_pos_est_f28379d_host_model.slx');

Для получения дополнительной информации на последовательной передаче между хостом и целевыми моделями, смотрите Целевую Хостом Коммуникацию.

8. В диалоговом окне блока Host Serial Setup в модели хоста выберите имя порта в параметре имени Порта.

9. Нажмите работает на вкладке Simulation, чтобы запустить модель хоста.

10 Меняют положение переключателя Estimate Position, чтобы Начать начинать запускать алгоритм в качестве примера. Целевая модель оценивает положение ротора с помощью метода PHF. Затем это использует метод DP, чтобы определить, нужна ли предполагаемому положению ротора π компенсация. Целевая модель применяет π компенсацию в случае необходимости.

Модель хоста получает предполагаемое положение ротора из целевого компьютера и отображает его в Предполагаемом роторе электрическое положение (радианы) поле.

11, Чтобы оценить различное положение ротора, смените положение переключателя Estimate Position, чтобы Остановиться. Предполагаемый ротор электрическое положение (радианы) поле отображает значение 0.

Поверните вал двигателя к новому положению. Затем смените положение переключателя Estimate Position, чтобы Начать запускать алгоритм в качестве примера снова и оценивать новое положение.

12 Наблюдают предполагаемое положение, Id, и Iq сигналы в осциллографе времени, доступном в модели хоста.

Этот график показывает предполагаемому ротору электрическое положение (${\theta _{init}}$) и токи статора (Id) и (Iq).

Симулируйте нелинейное поведение ядра статора

Алгоритм метода DP работает только, когда ядро статора насыщает и показывает нелинейное поведение. Чтобы сгенерировать это поведение в симуляции, целевая модель использует блок PMSM (Simscape Electrical) из Simscape™ Electrical™. Выполните эту процедуру, чтобы экспериментально определить сведенный в таблицу${L_d}$${L_q}$, и${I_d}$ данные для фактического двигателя и использовать эти данные, чтобы сделать моторный блок нелинейным в целях симуляции.

Определите${L_d}$ данные

1. Создайте целевую модель, чтобы запустить PMSM, использующий регулирование без обратной связи. Измените алгоритм так, чтобы он ввел напряжения${V_d} = {V_{ac}}\sin (\omega t) + {V_{dc}}$ и${V_q} = 0$ в фактический двигатель. Это генерирует ток${I_d} = {I_{ac}}\sin (\omega t + \phi ) + {I_{dc}}$ в двигателе где:

   ${V_d}$напряжение, которое алгоритм вычисляет и вводит вдоль d ротораось

   ${V_{ac}}\sin (\omega t)$компонент AC${V_d}$ (таким образом, что${V_{ac}}$ и ω константы, которые алгоритм должен принять),

   ${V_{dc}}$компонент DC${V_d}$ этого, вы обеспечиваете как вход

   ${I_d}$ток вдоль d- ось ротора, который алгоритм вычисляет из измеренных${I_a}$${I_b}$ токов и токов фазы

   ${I_{ac}}\sin (\omega t + \phi )$компонент AC${I_d}$ (ϕ, разность фаз между${V_d}$ и${I_d}$ что алгоритм должен измериться),

   ${I_{dc}}$компонент DC${I_d}$, который фиксируется для${V_{dc}}$ входа (алгоритм должен вычислить это значение при помощи${V_{dc}}$ и моторное сопротивление),

Примечание: поскольку${V_q} = {I_q} = 0$, ротор остается стационарным.

a. Добавьте алгоритм, чтобы читать${I_a}$ и${I_b}$ токи фазы, которые чертит двигатель.

b. Добавьте алгоритм, чтобы преобразовать${I_a}$ и${I_b}$ текущие значения фазы в${I_d}$ эквивалентную стоимость при помощи Кларка, и Парк преобразовывает.

c. Добавьте алгоритм, чтобы вычислить ϕ и${I_{dc}}$.

d. Добавьте алгоритм, чтобы вычислить${I_{ac}}$.

$${I_{ac}} = \left( {{{{I_d} - {I_{dc}}} \over {\sin (\omega t + \phi )}}} \right)$$

e. Добавьте алгоритм, чтобы вычислить${L_d}$.

${L_d} = {{\sqrt {V_{ac}^2 - I_{ac}^2{R^2}} } \over {\omega {I_{ac}}}}$ (для фиксированного${I_{dc}}$)

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

2. Создайте скрипт инициализации модели (.m файл) к initializate параметры и выполняют другие вычисления. Используйте Свойства Модели> Коллбэки, чтобы интегрировать этот скрипт с целевой моделью. Для получения дополнительной информации о том, как Motor Control Blockset™ использует этот скрипт, смотрите Оценочные Усиления Управления от Параметров двигателя.

3. Сконфигурируйте целевую модель, чтобы работать на целевом компьютере. Для инструкций смотрите Параметры конфигурации Модели.

4. Создайте отдельную модель хоста, чтобы управлять и связаться с целевой моделью, работающей на оборудовании блока управления приводом в режиме реального времени. Можно добавить Окно редактирования на модели хоста и использовать ее, чтобы отправить${V_{dc}}$ вход в целевой компьютер. Используйте поля Display, чтобы получить вычисленный${L_d}$ и${I_{dc}}$ значения от целевого компьютера.

Для получения дополнительной информации о целевом хостом коммуникационном интерфейсе, смотрите Целевую Хостом Коммуникацию.

5. Click Build, Deploy & Start на вкладке Hardware, чтобы развернуть целевую модель в оборудование.

6. Симулируйте модель хоста. Отправьте${V_{dc}}$ вход в целевой компьютер и запишите${L_d}$ и${I_{dc}}$ значения, которые вы получаете.

7. Изменитесь${V_{dc}}$ вручную через область значений между отрицательным и положительным напряжением и запишите получившееся${L_d}$ и${I_{dc}}$ значения для каждой рабочей точки.

Определите${L_q}$ значение

Выполните эти шаги, чтобы определить${L_q}$ значение, которое выше, чем последовательность${L_d}$ значений, полученных из раздела Determine Ld. Это необходимо, чтобы обеспечить высокое отношение выступа (${L_q} > {L_d}$) для симулированного моторного блока.

1. Измените целевую модель, которую вы использовали в разделе Determine Ld так, чтобы это ввело напряжения${V_d} = {V_{dc}}$ и${V_q} = {V_{ac}}\sin (\omega t)$ в фактический двигатель. Это генерирует ток${I_q} = {I_{ac}}\sin (\omega t + \phi )$ в двигателе где:

   ${V_d} = {V_{dc}}$напряжение постоянного тока ${I_d} = {I_{dc}} = 0$(соответствующее), который алгоритм вводит вдоль d ось ротора

   ${V_q} = {V_{ac}}\sin (\omega t)$напряжение переменного тока, которое алгоритм вычисляет и вводит вдоль q- ось ротора. (таким образом, что${V_{ac}}$ и ω константы, которые алгоритм принял в разделе Determine Ld),

   ${I_q} = {I_{ac}}\sin (\omega t + \phi )$переменный ток вдоль q- ось ротора, который алгоритм вычисляет из измеренных${I_a}$${I_b}$ токов и токов фазы (ϕ разность фаз между${V_q}$ и${I_q}$ что алгоритм должен измериться),

Примечание: поскольку${I_d} = 0$, ротор остается стационарным.

a. Обновите существующий алгоритм, чтобы преобразовать${I_a}$ и${I_b}$ текущие значения фазы в${I_q}$ эквивалентную стоимость при помощи Кларка, и Парк преобразовывает.

b. Обновите существующий алгоритм, чтобы вычислить ϕ.

c. Обновите существующий алгоритм, чтобы вычислить${I_{ac}}$.

$${I_{ac}} = \left( {{{{I_q}} \over {\sin (\omega t + \phi )}}} \right)$$

d. Добавьте алгоритм, чтобы вычислить${L_q}$.

${L_q} = {{\sqrt {V_{ac}^2 - I_{ac}^2{R^2}} } \over {\omega {I_{ac}}}}$ ${I_d} = {I_{dc}} = 0$для

2. Обновите скрипт инициализации модели, чтобы выполнить предыдущие модифицированные вычисления.

3. Обновите модель хоста, чтобы получить и отобразить${L_q}$ значение, вычисленное целевым компьютером.

4. Click Build, Deploy & Start на вкладке Hardware, чтобы развернуть целевую модель в оборудование.

5. Симулируйте модель хоста. Отправьте${V_{dc}}$ вход ${I_d} = {I_{dc}} = 0$(соответствие) в целевой компьютер и запишите${L_q}$ значение, которое вы получаете.

Спроектируйте высокий моторный блок выступа

Разделы Определяют Данные Ld и Решают, что Значение Lq обеспечивает следующие данные:

  • Последовательность${L_d}$ значений

  • Последовательность${I_{dc}}$ (${I_d}$для постоянного тока) значения

  • ${L_q}$Постоянное значение

Кроме того, мы можем принять${I_q}$ множество значений, которое мы можем использовать, чтобы добавить высокий выступ в моторный блок.

Используйте переменные pmsm.nonlin.idVec, pmsm.nonlin.Ld_data, pmsm.nonlin.iqVec, и pmsm.nonlin.Lq_data хранить эти данные в скрипте инициализации модели mcb_ipmsm_pos_est_f28379d_data.m сопоставленный с примером предназначаются для модели mcb_ipmsm_pos_est_f28379d.slx.

Примечание: Этот скрипт отличается от скрипта инициализации модели, используемого в разделах, Определяют Данные Ld и Определяют Значение Lq.

Кроме того, задайте переменные pmsm.nonlin.LdMatrix, pmsm.nonlin.LqMatrix, и pmsm.nonlin.PmMatrix.

В PMSM (Simscape Electrical) диалоговое окно параметров блоков, установленное параметр точности Моделирования на Сведенный в таблицу Ld, Lq и PM и, добавляют эти переменные как показано в следующем рисунке.

Переменные pmsm.nonlin.idVec, pmsm.nonlin.Ld_data, pmsm.nonlin.iqVec, и pmsm.nonlin.Lq_data справка насыщает ядро статора и вводит нелинейное поведение в процессе моделирования. Это позволяет алгоритму метода DP сгенерировать${I_d}$ текущие импульсы (соответствующий Импульсу 1 и Импульсу 2) с различным peaks.

Ссылки

[1] В. Зин, Л. Идхэджайн, Э. Монмэссон, З. Мэни, П. Човенет, Б. Кондэмин и А. Бруйер, "Оптимизация параметров ввода сигналов HF для приложений EV на основе sensorless IPMSM диски", Приложения Электроэнергии IET, Объем 12, Выпуск 3, март 2018, p. 347 - 356 (doi:10.1049/iet-epa.2017.0228).

[2] Гэолин Ван, Гоцян Чжан и Дяньго Сюй, "Положение Методы Управления Sensorless для Постоянного магнита Синхронные Диски Машины", Спрингер, Сингапур, 2020 p. 41 - 43 (doi: https://doi.org/10.1007/978-981-15-0050-3).