Перейти к содержанию
    

Бездатчиковая оценка положения ротора BLDC/PMSM

Отлаживаю алгоритм (модификация вот этого, там EKF на 5 переменных, токи в dq, скорость, положение и момент нагрузки) на численной модели (модель BLDC основана на этом, форма ЭДС синусоидальная, ШИМ обсчитывается на каждом отрезке между переключениями ключей). Появляются некоторые вопросы.

 

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

 

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

 

post-33778-1388598239_thumb.png

post-33778-1388598271_thumb.png

post-33778-1388598285_thumb.png

 

Спасибо.

 

Если кому не лень посмотреть, код здесь.

Изменено пользователем amaora

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Да, на таких скоростях, а точнее кратностях, возникают проблемы.

 

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

 

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

 

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

Поэтому кстати BLDC проще реализовать на высоких оборотах, чем FOC.

 

А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

У меня на реальном PMSM бездатчиковые алгоритмы в широком диапазоне частот вращения не работали, максимум до 20-30 тыс кажется

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Вот эта статья: 01353352.pdf

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения.

 

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

 

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

 

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

 

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

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Не хочется засорять форум ещё одной темой, добавлю сюда. Хотел это сделать при создании темы, но сейчас лучше смогу сформулировать вопрос.

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

post-33778-1416151426_thumb.png post-33778-1416151433_thumb.png

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

1. На высоких скоростях все достаточно хорошо, кпд высок, потери синхронизации нет. Хотя и не могу оценить точность явно, датчика положения нет.

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

3. Добавил HFI. Появилась возможность работы на нулевой скорости, но момент все так же ограничен. Если превысить некоторое небольшое значение (~10% максимального), то блокирование ротора или колебания.

 

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

 

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

 

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

 

Добавка: Как обычно, стоит спросить где либо, так появляются идеи. Оказывается, сильное влияние имеют масштабные погрешности датчиков тока, 2% достаточно, чтобы было так как я наблюдаю на реальном двигателе.

Изменено пользователем amaora

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот это да. EKF.... А достаточно элементарного вычислителя - измеряем токи и напряжения в фазах и пару операционников. Работает в реале на 110000rpm!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Уже перешел на фиксированные коэффициенты ради экономии вычислительных ресурсов. EKF/UKF удобны в целях попробовать "а получится ли оценить вот эти параметры по вот этим измерениям при каких-то таких условиях". Да, есть строгие методы оценки наблюдательности, но они не всегда оказывается достаточно просты.

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

amaora

 

А можете осциллограммы фазного тока под нагрузкой и на хх показать, на электрической частоте > 40тыс об/мин, что получилось?

Интересно как у Вас на форму тока влияет несинусоидальная форма противо-эдс у BLDC.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Данные с АЦП, ток в фазах А и B. Двигатель модельный, 11 пар полюсов, наружный ротор, 700 об/мин на вольт.

 

post-33778-1448297081_thumb.png

 

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

 

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

 

post-33778-1448298264_thumb.png post-33778-1448298267_thumb.png

 

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

 

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

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Спасибо!

 

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

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

 

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я думаю, Вам не помешало бы взглянуть на документации Instaspin от ti. Там также они работают через ЭДС. Весь код открыт кроме кода оценки мотора, но в описании подробно описаны методы оценки параметров мотора. На данный момент я тестирую их кит и есть уже свой образец , в алгоритме там проблема только ACIM.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...