Моделирование BLDC

Как обычно разработка идет медленнее чем я от себя ожидаю. С сервами наигрался, основная задача была и остается — контроллер bldc. С предыдущего поста про bldc произошло одно важное изменения, отказ от работы по ЭДС в пользу измерения токов фаз. Именно токов фаз (любых двух из трех) а не один шунт по питанию. Все работы пока ведутся численно, на модели.


Численная модель BLDC основана на вот этой статье, и многих других по тем же ключевым словам. ШИМ моделируется честно (в отличии от того что было с сервой), каждый отрезок времени между переключениями транзисторов обсчитывается отдельно. Форма ЭДС пока для упрощения синусоидальная.

Определение положения ротора по измеренным токам сделано как здесь с некоторой небольшой модификацией и дополнением. Выход системы я оставляю в DQ системе координат, так фильтр Калмана получается вычислительно проще т.к. матрица C состоит из нулей и двух единиц. Добавлена оценка смещения нуля датчиков тока. Добавляется сейчас идентификация параметров двигателя.

Управление реализовано как два ПИ регулятора тока как во всех источниках о векторном управлении. Дальше планирую добавить feed forward слагаемое основанное на модели двигателя, а интегральную часть ограничить (ослабить). Контура управления скоростью нет, и я сомневаюсь в его необходимости.

По схемотехнике предполагается использование stm32f4 для числодробления плавающей точки, hip2100 irf8788 acs711 в силовой части, CAN как интерфейс, uart для отладки. Пока мне кажется, что гонять все это на 20-40кГц вполне можно успеть на 168МГц.

Автоматические тесты и красивый hal так и не придумал как сделать, так чтобы это не отнимало много времени. Хотя в аппаратной части пока ничего почти нет, и тестировать нечего.

Ну и цветные картинки к новому году.






Сценарий на всех графиках один, 100мс оценка дрейфа датчиков, 800мс выравнивание ротора, дальше включается наблюдатель и контур регуляции тока с уставкой 10А. Набор скорости упирается в нехватку напряжения для этого двигателя (650Kv, 11 пар полюсов). На большой скорости (всего то около 8000 об./мин. пока ещё) видно как выросла методическая ошибка по положению ротора. С током по прямой оси не очень красиво. Есть что улучшать.

Код храню на bitbucket.org.

Добавка: Стал копать статьи на тему робастности наблюдателей PMSM, нашет вот
такое интересное. И ещё есть много с тем же представлением уравнений, если поискать. Но суть робастности там как я понимаю лишь в том, что происходит оценка потока ротора (ну или постоянной двигателя, кому как удобнее думать), то есть это больше похоже на адаптацию. Если я у себя добавляю адаптацию по E, то виже подобный эффект. Хотя устойчивость моего EKF мне не нравится. Похоже надо переходить на более грубый метод. И ещё, сам наблюдатель в статье по ссылке нелинейный и довольно тяжелый для понимания, я про него не знал до этой статьи.
  • +3
  • 28 декабря 2013, 21:10
  • amaora

Комментарии (18)

RSS свернуть / развернуть
это прям как принять послание из космоса…
ничего не понятно, но все равно интересно)))
+2
Ну так=)) Привод=))
BLDC… а дальше что? реализовать то это все? Практически не возможно=))
-1
  • avatar
  • kalik
  • 29 декабря 2013, 03:22
Серва работала почти как на модели. А BLDC невозможно?
0
Ну так=)) Привод=))
BLDC… а дальше что? реализовать то это все? Практически не возможно=))
Не будете ли вы так любезны расшифровать либо перевести на более понятный язык вашу мысль?
Лексический анализатор справляется, а синтаксический — никак нет. Не иначе как без церебрального, универсального, нейронного телепатического стимулятора (C₂H₅OH) обойтись никак не возможно.
-1
Да, без проблем! Там подсказывали пару литров пива.
Мне очень часто (по работе) приходится сталкиваться с большим количеством научных публикаций, в которых тем или иным образом пытаются моделировать работу приводов, двигателей, систем автоматизации.
А так же общаться с людьми, которые занимаются реализацией подобных результатов в железе. Программистами, наладчиками, приводчиками с заводов и не только…
Также приходится общаться с кандидатами, аспирантами и лаборантами — которые это все создают…
Все это очень хорошо на бумаге, но в железе и железо будет себя вести совсем по другому! Ибо модель имеет определенные допущения, много чего не учитывается и показывает работу двигателя(все системы в идеале).
0
А так же требует фигову кучу магии и стальные яйца…
Сам с таким столкнулся еще при выполнении диплома и некоторые вопросы до сих пор не могу никак решить…
0
Очень хорошо. Вы общаетесь с разношёрстной публикой и вы хорошо понимаете друг друга как со стимулятором, так и без. Но вот я без стимулятора не смог понять вашу мысль.
Правда ли, что вкратце вы хотели сказать, что «гладко было на бумаге, да забыли про овраги»? И, дескать, нужно аккуратно фильтровать разнообразный базар в публикациях насчёт математического описания и моделирования приводов на коллекторных и бесколлекторных двигателях постоянного тока?
-2
Не совсем… Я хотел сказать, что во многих научных публикациях много недостоверных (заведомо ложных) результатов! И это касается не только этих типов двигателей. А так же процветает плагиат. А много кто определенным изменением данных, формул, результатов защищает себя и свои результаты от копипаста или же втыка за просранные деньги… и много всего тому подобного
0
Из публикация я обычно беру только идеи, результаты, выводы, все выражения все равно пересчитываю сам, код (если есть) не смотрю. Здесь указал, чтобы было чего почитать кому интересно.

Есть некоторые интересные особенности, упоминания которых я нигде не встечал. То как интегрировать уравнения в DQ координатах. Нигде не сказано, что вектор напряжения нельзя считать неподвижным в пределах одного такта, но это так для больших скоростей. Похоже это от того, что FOC не принято использовать для BLDC, а у PMSM нет таких скоростей.
-1
Вы привели результаты моделирования самого двигателя и СУ, но это только часть системы. Для полной и правильной оценки работы как двигателя так и СУ нужно еще добавить нагрузку (исполнительный механизм), с которым работает этот двигатель. Регуляторы настраиваются только с учетом характера изменения нагрузки. И влияет на много всего
0
  • avatar
  • kalik
  • 29 декабря 2013, 22:10
Момент нагрузки моделируется как полином от механической скорости, с учетом знаков. В контроллере момент оценивается без априорной модели. Я уже немного подумал об этом, целевая нагрузка это воздушный винт. В статичеком варианте, когда мвг (мотороно-винтовая группа) неподвижна относительно воздуха, то полином наверно хорошая аппроксимация. Но я же не только на столе хочу винты крутить, а там зависимость от обдува может оказаться излишне сложной. Поэтому, я пока оставил как было в оригинальной статье, оцениваю мгновенное значение момента нагрузки без априорных предположений. Многие делают ещё более упрощенно, считая скорость постоянной.

Пока я вижу, что наблюдатель и иденификатор гораздо более капризная и сложная часть, чем СУ.
0
И то верно… Я в свое время имел неосторожность связаться с вентильно-индукторными двигателями… и шишек набил уже с ними кучу… так что не в обиду, а просто выражаю результаты и свои впечатления.
А в качестве системы для моделирования что Вы используете?
0
Протой решатель ОДУ, ~300 строк на Си вместе с самими уравнениями :) переменные в текстовый файл и на графики. Раньше пытался использовать для этого octave, но там это так долго, да и на C не очень быстро считается.
0
А таких монстров как MatLab не рассматривали? Мощная и удобная програмулина для моделирования
0
Я не знаю какую пользу это может принести в моем случае.
0
Много=)) Специально рассчитана для моделирования. Мощная система. Удобство в использовании. Наглядность происходящего. Прекрасная визуализация. Возможность использовать готовые блоки(ускоряет разработку) и создавать свои.
Еще один вопрос: для более полного понимания вашей задачи добавить структурную схему всей системы?
0
Если вы про simulink то я наигрался с ним когда был студентом, сейчас нет желания с ним связываться. Задание всего в виде кода для меня приводит к большему пониманию, и более простому переходу к реальному объекту управления. Схемы держу на бумаге, хотя здесь структура обычная, объект-наблюдатель-регулятор и у меня она есть только в голове. А вот схему того когда происходит выборка АЦП и когда начинается новый период ШИМ, что в каждый момент происходит в двигателе и в контроллере, я несколько раз рисовал на бумаге, для полного понимания (и вспоминания, после перерыва).
0
Теперь понял, как можно ближе к результату=)) Вот: может Вам пригодится!
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.