Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Бездатчиковая оценка положения ротора BLDC/PMSM
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Электрические машины, Электропривод и Управление
amaora
Отлаживаю алгоритм (модификация вот этого, там EKF на 5 переменных, токи в dq, скорость, положение и момент нагрузки) на численной модели (модель BLDC основана на этом, форма ЭДС синусоидальная, ШИМ обсчитывается на каждом отрезке между переключениями ключей). Появляются некоторые вопросы.

1. Ошибка по положению возростает с ростом скорости. Добился некоторого улучшения путем доработки решателя ОДУ (тот который часть EKF). Но все ещё остается ~4 градуса ошибки на ~90000 rpm электрической скорости при 20 кГц ШИМ (ошибка пропорциональна скорости и периоду, на 40кГц будет ~2 градуса). Как можно бороться с этой проблемой? Пытаться дальше уточнять решение ОДУ по моему бессмысленно, на реальной системе проявяться другие детали и будет та же проблема. Компенсировать смещение самой оценки положения после EKF тоже плохая идея, надо устранять эти "вредные" невязки которые приводят к смещенности оценки. Или может быть я хочу слишком много и надо просто увеличивать частоту ШИМ?

2. Во всей литературе по теме упоминается field weakening. Я решил проверить, на своей модели, т.к. я не понимаю каким образом ток по прямой оси может привести к уменьшению постоянной ЭДС, что вызывает сомнения в правильности модели. Задал отрицательный ток по D, и действительно скорость возросла, но почему? Глядя на уравнения BLDC или PMSM это не очевидно.

Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла

Спасибо.

Если кому не лень посмотреть, код здесь.
Turnaev Sergey
Да, на таких скоростях, а точнее кратностях, возникают проблемы.

Надо копать в сторону предикативного управления, причём у меня коллега с пол года отлаживал предикативное управление, и жаловался на то, что статей IEEE по этому вопросу реально полезных почти нет. В итоге отладил, получив быстродействие на 100% наброс нагрузки порядка трёх - пяти периодов ШИМ, но это не привод был, а инвертор работающий на сеть.

Кто это реализовал, тот это не особо афиширует. Поищите зарубежные патенты на эту тему.

У меня на реальном PMSM бездатчиковые алгоритмы в широком диапазоне частот вращения не работали, максимум до 20-30 тыс кажется, дальше полученный фазовый угол сильно искажался, это при тех же 20кГц ШИМ. Но EKF я не делал.
Поэтому кстати BLDC проще реализовать на высоких оборотах, чем FOC.

А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения.
oleg_d
Цитата(Turnaev Sergey @ Jan 2 2014, 22:39) *
У меня на реальном PMSM бездатчиковые алгоритмы в широком диапазоне частот вращения не работали, максимум до 20-30 тыс кажется

У Вас получалось поддерживать заданный крутящий момент когда ротор PMSM не вращается, без датчика положения конечно.
Turnaev Sergey
Вот это, к сожалению не получилось, там возникали колебания положения ротора. Потом перешёл на отладку BLDC, а PMSM забросил.

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

Вообще хотел реализовать способ определения положения по полным измерениям пульсаций тока, там никаких параметров двигателя знать не надо, индуктивности по D и Q однозначно вычисляются из полных пульсаций тока, но к сожалению забросил это дело.
Вот эта статья: Нажмите для просмотра прикрепленного файла
Хотя даже в ней как раз говорится о проблемах из-за прерывистого тока, с этим я как раз тоже сталкивался. Возможно актуально всёже делать инжекцию высокой частоты на очень низких частотах вращения.
Либо как я хотел, измерять пульсацию тока на интервале нарастания, однако это накладывает ограничения на минимальную глубину модуляции.
amaora
Цитата(Turnaev Sergey @ Jan 3 2014, 00:39) *
А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения.


Так это электрическая скорость, а механическая при этом ~8000 об./мин.

Цитата
Надо копать в сторону предикативного управления, причём у меня коллега с пол года отлаживал предикативное управление, и жаловался на то, что статей IEEE по этому вопросу реально полезных почти нет. В итоге отладил, получив быстродействие на 100% наброс нагрузки порядка трёх - пяти периодов ШИМ, но это не привод был, а инвертор работающий на сеть.


EKF не предикативен? Ошибка возникает не от запаздывания оценки, а от того, что при таком крупном шаге (~30 градусов) возникает большая погрешность интегрирования уравнений. Ведь в dq координатах, вектор напряжения приложенного от инвертора, уже нельзя считать неподвижным в течении такта. Появляются "ненормальные" невязки, фильтр пытается их устраниить и уводит оценку в какое-то смещение.

В какой-то степени помогает добавление простенькой адаптации по постоянной двигателя. Но идентификатор и без того капризен, а здесь ещё и от скорости все будет ползти. Может быть все таки стоит интегрировать с учетом формы ШИМ, во всех виденных мной статьях эти вопросы умалчиваются. На замер пульсаций тока от ШИМ переходить желания нет.
amaora
Не хочется засорять форум ещё одной темой, добавлю сюда. Хотел это сделать при создании темы, но сейчас лучше смогу сформулировать вопрос.

3. Хочется что-то почитать на тему идентификации параметров системы. Успел попробовать градиентный метод (можно называть основанным на MRAS) и немного МНК (фильтр Калмана). Везде проблема в том, что я не отслеживаю идентифицируема система или нет, и оценки могут начать дрейфовать. Исправление этого вижу следущее. Каким-то образом делается выборка из всех данных за последние N тактов. Как-то (лобовой метод связанный с рангом матрицы слишком вычислительно тяжел) проверяется какие параметры можно оценить точнее чем они уже есть. Если возможно делается оценка. Одновременно с этим проверяется, нет ли систематической составляющей в невязках по токам. Если есть то подается идентификационный сигнал, например импульс тока по прямой оси для оценки R или L, или импульс по скорости для определения E. Но как бы это сделать достаточно красиво?

По первой части можно наверно сказать что ФК делает именно то, что надо. Хотя мне пока не удалось его заставить работать сразу для всех параметров. Остается контролировать невязки и делать идентификационные маневры если все становится плохо. Сам почти ответил на свой вопрос.
amaora
Ну вот, через почти год понял, что фильтр в той статье был построен слишком упрощенно и даже некорректно. В матрицах A и C многие важные элементы проигнорированы и заменены нулями. Хотя я с самого начала делал по своему, а не копировал все из статьи, но я тоже многие элементы забыл. Выяснил это попробовав UKF, а затем взяв частные производные численно.

Теперь, даже без адаптации фильтр достаточно хорошо себя ведет, ошибка ~1 градус по положению, даже на 100к об./мин. (12 положений на оборот).

Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла
amaora
Попробовал на реальном двигателе (а не численной модели как до этого), со следующими результатами и вопросами.

1. На высоких скоростях все достаточно хорошо, кпд высок, потери синхронизации нет. Хотя и не могу оценить точность явно, датчика положения нет.
2. На скорости ниже ~5% от максимальной, начинаются проблемы. Если пытаться получить от двигателя большой момент на такой скорости, то часто можно получить уход оценки в ложное значение и блокирование ротора в одном положении или смену направления вращения.
3. Добавил HFI. Появилась возможность работы на нулевой скорости, но момент все так же ограничен. Если превысить некоторое небольшое значение (~10% максимального), то блокирование ротора или колебания.

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

Еще одна особенность, HFI я реализовал не так как это описано во множестве статей. Не использую аналитического решения и пропускания сигнала через BPF, LPF. Вместо этого, у меня все тот же EKF который оценивает положение по ЭДС, оценивает его также и по анизотропии индуктивности. Достаточно подмешать сигнал по прямой оси. С этим вероятно связано, то что несмотря на использование HFI я не могу повысить момент. Другой причиной могло бы быть, то что анизотропия индуктивности исчезает от большого тока по квадратурной оси, но это не так, проверял.

Заметного нагрева обмотки при таких токах еще нет, так что это тоже не причина.

Добавка: Как обычно, стоит спросить где либо, так появляются идеи. Оказывается, сильное влияние имеют масштабные погрешности датчиков тока, 2% достаточно, чтобы было так как я наблюдаю на реальном двигателе.
Elsystems
Вот это да. EKF.... А достаточно элементарного вычислителя - измеряем токи и напряжения в фазах и пару операционников. Работает в реале на 110000rpm!!!
amaora
Уже перешел на фиксированные коэффициенты ради экономии вычислительных ресурсов. EKF/UKF удобны в целях попробовать "а получится ли оценить вот эти параметры по вот этим измерениям при каких-то таких условиях". Да, есть строгие методы оценки наблюдательности, но они не всегда оказывается достаточно просты.

Сейчас есть вопрос, как оценить точность определения положения. Ну и следующая идея, пока еще не пробовал. Нагрузить двигатель достаточно стабильной нагрузкой, например воздушным винтом. Стабилизировать скорость. Варьировать ток по оси D, ток по Q регулируется контуром скорости. Для разных токов по D делаем достаточно длительный замер потребляемой мощности/энергии, чтобы пренебречь переходными процессами. По углу вектора тока на минимуме потребляемой мощности определяем ошибку. Но это не годится для двигателей с анизотропией индуктивности.
Turnaev Sergey
amaora

А можете осциллограммы фазного тока под нагрузкой и на хх показать, на электрической частоте > 40тыс об/мин, что получилось?
Интересно как у Вас на форму тока влияет несинусоидальная форма противо-эдс у BLDC.
amaora
Данные с АЦП, ток в фазах А и B. Двигатель модельный, 11 пар полюсов, наружный ротор, 700 об/мин на вольт.

Нажмите для просмотра прикрепленного файла

Скорость можете посчитать, время в тактах (частота 60кГц), получается около 65к об/мин.

Второй двигатель, 1 пара полюсов, внутренний ротор, 3400 об/мин на вольт.

Нажмите для просмотра прикрепленного файла Нажмите для просмотра прикрепленного файла

Слева нагружен на воздушный винт, скорость низкая. Справа пытался вручную зажать вал, как видно получилось плохо, ток всего 2 А.

Скорости 4500 об/мин и 36к об/мин.

Turnaev Sergey
Спасибо!

Вообщем тоже не идеал получается.

Присмотритесь к BLDC алгоритмам, особенно PWM-ON-PWM, суть их отличия показана например тут: http://open-bldc.org/wiki/PWM_Schemes#PWM_ON_PWM

Положение стабилизировать конечно нельзя, зато на высоких оборотах работает очень хорошо, КПД думаю выше чем у векторного управления, особенно для модельных двигателей с несинусоидальной формой противо-эдс.
amaora
Формы тока можно выправить. По пульсациям невязок оценить несколько первых гармоник и подмешивать их с обратных знаком. Даже получается, но пока плохо, на высокой скорости оценка разваливается.

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

Подскажите, если кто знает, что почитать по теме оценки и компенсации формы ЭДС. Сам ничего не нашел в открытом доступе.
AndreyChip
Я думаю, Вам не помешало бы взглянуть на документации Instaspin от ti. Там также они работают через ЭДС. Весь код открыт кроме кода оценки мотора, но в описании подробно описаны методы оценки параметров мотора. На данный момент я тестирую их кит и есть уже свой образец , в алгоритме там проблема только ACIM.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.