amaora 22 1 января, 2014 Опубликовано 1 января, 2014 (изменено) · Жалоба Отлаживаю алгоритм (модификация вот этого, там EKF на 5 переменных, токи в dq, скорость, положение и момент нагрузки) на численной модели (модель BLDC основана на этом, форма ЭДС синусоидальная, ШИМ обсчитывается на каждом отрезке между переключениями ключей). Появляются некоторые вопросы. 1. Ошибка по положению возростает с ростом скорости. Добился некоторого улучшения путем доработки решателя ОДУ (тот который часть EKF). Но все ещё остается ~4 градуса ошибки на ~90000 rpm электрической скорости при 20 кГц ШИМ (ошибка пропорциональна скорости и периоду, на 40кГц будет ~2 градуса). Как можно бороться с этой проблемой? Пытаться дальше уточнять решение ОДУ по моему бессмысленно, на реальной системе проявяться другие детали и будет та же проблема. Компенсировать смещение самой оценки положения после EKF тоже плохая идея, надо устранять эти "вредные" невязки которые приводят к смещенности оценки. Или может быть я хочу слишком много и надо просто увеличивать частоту ШИМ? 2. Во всей литературе по теме упоминается field weakening. Я решил проверить, на своей модели, т.к. я не понимаю каким образом ток по прямой оси может привести к уменьшению постоянной ЭДС, что вызывает сомнения в правильности модели. Задал отрицательный ток по D, и действительно скорость возросла, но почему? Глядя на уравнения BLDC или PMSM это не очевидно. Спасибо. Если кому не лень посмотреть, код здесь. Изменено 1 января, 2014 пользователем amaora Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TSS 0 2 января, 2014 Опубликовано 2 января, 2014 · Жалоба Да, на таких скоростях, а точнее кратностях, возникают проблемы. Надо копать в сторону предикативного управления, причём у меня коллега с пол года отлаживал предикативное управление, и жаловался на то, что статей IEEE по этому вопросу реально полезных почти нет. В итоге отладил, получив быстродействие на 100% наброс нагрузки порядка трёх - пяти периодов ШИМ, но это не привод был, а инвертор работающий на сеть. Кто это реализовал, тот это не особо афиширует. Поищите зарубежные патенты на эту тему. У меня на реальном PMSM бездатчиковые алгоритмы в широком диапазоне частот вращения не работали, максимум до 20-30 тыс кажется, дальше полученный фазовый угол сильно искажался, это при тех же 20кГц ШИМ. Но EKF я не делал. Поэтому кстати BLDC проще реализовать на высоких оборотах, чем FOC. А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
olegs_d 0 3 января, 2014 Опубликовано 3 января, 2014 · Жалоба У меня на реальном PMSM бездатчиковые алгоритмы в широком диапазоне частот вращения не работали, максимум до 20-30 тыс кажется У Вас получалось поддерживать заданный крутящий момент когда ротор PMSM не вращается, без датчика положения конечно. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TSS 0 3 января, 2014 Опубликовано 3 января, 2014 · Жалоба Вот это, к сожалению не получилось, там возникали колебания положения ротора. Потом перешёл на отладку BLDC, а PMSM забросил. Самый неприятный ньюанс там был в том что привод начинал думать что двигатель вращается, когда в реальности он стоял на месте, хотя это и было вылечено специальным детектором по амплитудам в DQ. Вообще хотел реализовать способ определения положения по полным измерениям пульсаций тока, там никаких параметров двигателя знать не надо, индуктивности по D и Q однозначно вычисляются из полных пульсаций тока, но к сожалению забросил это дело. Вот эта статья: 01353352.pdf Хотя даже в ней как раз говорится о проблемах из-за прерывистого тока, с этим я как раз тоже сталкивался. Возможно актуально всёже делать инжекцию высокой частоты на очень низких частотах вращения. Либо как я хотел, измерять пульсацию тока на интервале нарастания, однако это накладывает ограничения на минимальную глубину модуляции. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 4 января, 2014 Опубликовано 4 января, 2014 · Жалоба А вообще, если реально на 90тыс оборотов будет работать с ошибкой 5%, считаю что это будет очень круто. Где только такие скорости, это вопрос. В спортивном моделизме больше 50 редкость, другие варианты в голову не приходят, какие-то спец применения. Так это электрическая скорость, а механическая при этом ~8000 об./мин. Надо копать в сторону предикативного управления, причём у меня коллега с пол года отлаживал предикативное управление, и жаловался на то, что статей IEEE по этому вопросу реально полезных почти нет. В итоге отладил, получив быстродействие на 100% наброс нагрузки порядка трёх - пяти периодов ШИМ, но это не привод был, а инвертор работающий на сеть. EKF не предикативен? Ошибка возникает не от запаздывания оценки, а от того, что при таком крупном шаге (~30 градусов) возникает большая погрешность интегрирования уравнений. Ведь в dq координатах, вектор напряжения приложенного от инвертора, уже нельзя считать неподвижным в течении такта. Появляются "ненормальные" невязки, фильтр пытается их устраниить и уводит оценку в какое-то смещение. В какой-то степени помогает добавление простенькой адаптации по постоянной двигателя. Но идентификатор и без того капризен, а здесь ещё и от скорости все будет ползти. Может быть все таки стоит интегрировать с учетом формы ШИМ, во всех виденных мной статьях эти вопросы умалчиваются. На замер пульсаций тока от ШИМ переходить желания нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 5 января, 2014 Опубликовано 5 января, 2014 · Жалоба Не хочется засорять форум ещё одной темой, добавлю сюда. Хотел это сделать при создании темы, но сейчас лучше смогу сформулировать вопрос. 3. Хочется что-то почитать на тему идентификации параметров системы. Успел попробовать градиентный метод (можно называть основанным на MRAS) и немного МНК (фильтр Калмана). Везде проблема в том, что я не отслеживаю идентифицируема система или нет, и оценки могут начать дрейфовать. Исправление этого вижу следущее. Каким-то образом делается выборка из всех данных за последние N тактов. Как-то (лобовой метод связанный с рангом матрицы слишком вычислительно тяжел) проверяется какие параметры можно оценить точнее чем они уже есть. Если возможно делается оценка. Одновременно с этим проверяется, нет ли систематической составляющей в невязках по токам. Если есть то подается идентификационный сигнал, например импульс тока по прямой оси для оценки R или L, или импульс по скорости для определения E. Но как бы это сделать достаточно красиво? По первой части можно наверно сказать что ФК делает именно то, что надо. Хотя мне пока не удалось его заставить работать сразу для всех параметров. Остается контролировать невязки и делать идентификационные маневры если все становится плохо. Сам почти ответил на свой вопрос. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 16 ноября, 2014 Опубликовано 16 ноября, 2014 · Жалоба Ну вот, через почти год понял, что фильтр в той статье был построен слишком упрощенно и даже некорректно. В матрицах A и C многие важные элементы проигнорированы и заменены нулями. Хотя я с самого начала делал по своему, а не копировал все из статьи, но я тоже многие элементы забыл. Выяснил это попробовав UKF, а затем взяв частные производные численно. Теперь, даже без адаптации фильтр достаточно хорошо себя ведет, ошибка ~1 градус по положению, даже на 100к об./мин. (12 положений на оборот). Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 24 мая, 2015 Опубликовано 24 мая, 2015 (изменено) · Жалоба Попробовал на реальном двигателе (а не численной модели как до этого), со следующими результатами и вопросами. 1. На высоких скоростях все достаточно хорошо, кпд высок, потери синхронизации нет. Хотя и не могу оценить точность явно, датчика положения нет. 2. На скорости ниже ~5% от максимальной, начинаются проблемы. Если пытаться получить от двигателя большой момент на такой скорости, то часто можно получить уход оценки в ложное значение и блокирование ротора в одном положении или смену направления вращения. 3. Добавил HFI. Появилась возможность работы на нулевой скорости, но момент все так же ограничен. Если превысить некоторое небольшое значение (~10% максимального), то блокирование ротора или колебания. Основной вопрос, почему увеличение тока/момента на низкой скорости приводит к ложной оценке положения. Пробовал ограничивать скорость переходного процесса в регуляторе скорости, никакого эффекта, причина не в быстром нарастании тока. Еще одна особенность, HFI я реализовал не так как это описано во множестве статей. Не использую аналитического решения и пропускания сигнала через BPF, LPF. Вместо этого, у меня все тот же EKF который оценивает положение по ЭДС, оценивает его также и по анизотропии индуктивности. Достаточно подмешать сигнал по прямой оси. С этим вероятно связано, то что несмотря на использование HFI я не могу повысить момент. Другой причиной могло бы быть, то что анизотропия индуктивности исчезает от большого тока по квадратурной оси, но это не так, проверял. Заметного нагрева обмотки при таких токах еще нет, так что это тоже не причина. Добавка: Как обычно, стоит спросить где либо, так появляются идеи. Оказывается, сильное влияние имеют масштабные погрешности датчиков тока, 2% достаточно, чтобы было так как я наблюдаю на реальном двигателе. Изменено 24 мая, 2015 пользователем amaora Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Elsystems 0 3 ноября, 2015 Опубликовано 3 ноября, 2015 · Жалоба Вот это да. EKF.... А достаточно элементарного вычислителя - измеряем токи и напряжения в фазах и пару операционников. Работает в реале на 110000rpm!!! Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 3 ноября, 2015 Опубликовано 3 ноября, 2015 · Жалоба Уже перешел на фиксированные коэффициенты ради экономии вычислительных ресурсов. EKF/UKF удобны в целях попробовать "а получится ли оценить вот эти параметры по вот этим измерениям при каких-то таких условиях". Да, есть строгие методы оценки наблюдательности, но они не всегда оказывается достаточно просты. Сейчас есть вопрос, как оценить точность определения положения. Ну и следующая идея, пока еще не пробовал. Нагрузить двигатель достаточно стабильной нагрузкой, например воздушным винтом. Стабилизировать скорость. Варьировать ток по оси D, ток по Q регулируется контуром скорости. Для разных токов по D делаем достаточно длительный замер потребляемой мощности/энергии, чтобы пренебречь переходными процессами. По углу вектора тока на минимуме потребляемой мощности определяем ошибку. Но это не годится для двигателей с анизотропией индуктивности. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TSS 0 23 ноября, 2015 Опубликовано 23 ноября, 2015 · Жалоба amaora А можете осциллограммы фазного тока под нагрузкой и на хх показать, на электрической частоте > 40тыс об/мин, что получилось? Интересно как у Вас на форму тока влияет несинусоидальная форма противо-эдс у BLDC. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 23 ноября, 2015 Опубликовано 23 ноября, 2015 · Жалоба Данные с АЦП, ток в фазах А и B. Двигатель модельный, 11 пар полюсов, наружный ротор, 700 об/мин на вольт. Скорость можете посчитать, время в тактах (частота 60кГц), получается около 65к об/мин. Второй двигатель, 1 пара полюсов, внутренний ротор, 3400 об/мин на вольт. Слева нагружен на воздушный винт, скорость низкая. Справа пытался вручную зажать вал, как видно получилось плохо, ток всего 2 А. Скорости 4500 об/мин и 36к об/мин. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
TSS 0 24 ноября, 2015 Опубликовано 24 ноября, 2015 · Жалоба Спасибо! Вообщем тоже не идеал получается. Присмотритесь к BLDC алгоритмам, особенно PWM-ON-PWM, суть их отличия показана например тут: http://open-bldc.org/wiki/PWM_Schemes#PWM_ON_PWM Положение стабилизировать конечно нельзя, зато на высоких оборотах работает очень хорошо, КПД думаю выше чем у векторного управления, особенно для модельных двигателей с несинусоидальной формой противо-эдс. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
amaora 22 12 марта, 2016 Опубликовано 12 марта, 2016 · Жалоба Формы тока можно выправить. По пульсациям невязок оценить несколько первых гармоник и подмешивать их с обратных знаком. Даже получается, но пока плохо, на высокой скорости оценка разваливается. Только идеальная гармоническая форма тока не означает, что КПД будет максимальным для мотора со сложной формой ЭДС. Это больше нужно, для того чтобы пульсация не пролезала в оценки скорости и дальше, шум акустический уменьшить. Подскажите, если кто знает, что почитать по теме оценки и компенсации формы ЭДС. Сам ничего не нашел в открытом доступе. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
AndreyChip 0 13 марта, 2016 Опубликовано 13 марта, 2016 · Жалоба Я думаю, Вам не помешало бы взглянуть на документации Instaspin от ti. Там также они работают через ЭДС. Весь код открыт кроме кода оценки мотора, но в описании подробно описаны методы оценки параметров мотора. На данный момент я тестирую их кит и есть уже свой образец , в алгоритме там проблема только ACIM. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться