Pull to refresh

Comments 48

Так обьяснили что даже я понял. А если я понял — все разберутся.
Спасибо.
Великолепные статьи! Вы умеете делать сложное простым, это дорогого стоит. Большое спасибо за труд!
Крутая статья, довольно широкий охват темы без лишних соплей. Жаль что когда изучал эту тему, такой материал не втретился и пришлось все самому собирать по крупицам.
Вопросы, как к специалисту: 1. Есть ли у вас информация, в чем заклчается конструктивное отличие BLDC от трехфазного двигателя, предназначенного для управления синусом? Можно ли определить тип, наблюдая осциллограмму ЭДС? Насколько велика между ними раница? т.е. может ли BLDC работать под векторным управлением, и наоборот? 2. Для серво-двигателей прямого привода, контроллер (железо, алгоритмы) как-то отличается от обычного?
Спасибо.
1. Конструктивно всё сложно — это надо использовать программу для расчета магнитных потоков, чтобы гарантировано глядя на пакеты железа ротора и статора сказать, какая это машина. Там малозаметные отличия могут быть очень на вид. Но неплохую «прикидку» можно сделать глядя на статор, если там отдельные катушки, то скорее всего это окажется BLDC (потому они и дешевле), а если там распределенная обмотка с большим количеством пазов, то скорее всего PMSM. Но это не гарантированный метод. А вот по ЭДС — проще простого. Поищите в картинках поисковика PMSM vs BLDC. Много будет картинок типа таких. Только там учтите, какую ЭДС смотрите, фазную или линейную — они будут разные.
2.Прямой привод алгоритмически ничем от «обычного» (с редуктором) принципиально не отличается. Но прямой привод обычно оказывается низкооборотистым, моментным, и ток там получается часто выше, чем в таком же с редуктором. Кроме того, датчик положения ротора приходится ставить в соответствующее число меток больше, чтобы получить такую же точность позиционирования.
Ах, я пропустил одну часть вопроса. Да, DLDC взаимозаменяем с PMSM, но появятся ненужные пульсации тока и момента при работе. Для автокоммутации это, можно сказать, всё равно, там и так всё пульсирует, а вот если BLDC в векторную поставить — ничего качественного не получится. Но работать как-то будет.
Скажите, а в реальной машине специально учитываются отклонения питающего напряжения от стандарта? Например, подключилась большая индуктивная нагрузка, напряжение просело. Или же подобный контроль происходит автоматически за счет того что устройство «знает», какое в данный момент нужно приложить напряжение и как-то компенсирует.

Ведь перенапряжение еще можно выровнять ШИМом уменьшив скважность, а просадку как нивелировать? Учитывает ли машина «историю болезни»? Например то, что некоторое время назад была просадка питающего напряжения и обмотки недополучили напряжение, что может привести т к запаздыванию ротора. Я так понимаю, эта ситуация отличается от внутреннего пере- или недо-регулирования.
Во-первых, если говорить о промышленных двигателях, скажем, асинхронных, то сами электродвигатели проектируются по ГОСТу с учетом как повышения, так и просадки напряжения питающей сети. То есть на них можно понизить напряжение на определенное число процентов и они обязаны работать. Что касается векторного управления, то регуляторы токов задают соответствующий текущей нагрузке ток, независимо от входного напряжения. Если оно меняется, регуляторы отрегулируют всё как надо. Также блок компенсации «гуляния» входного напряжения часто встраивают прямо в модуль ШИМ, чтобы «не напрягать» регуляторы токов по пустякам. Однако если напряжение просело, а мы работали на максимальной скорости и нагрузке, то регуляторы «упрутся» в максимум инвертора и не смогут по физическим причинам задавать такое напряжение, как было. Здесь уже зависит от программиста, что он будет делать. Обычно можно просто снизить скорость вращения пропорционально снижению напряжения (ЭДС машины уменьшается, напряжения начинает «хаватать»). Можно уменьшить поток ротора, размагнитив его временно дополнительным током. В общем, много всякого применяют. Если же мы работали не с максимальной нагрузкой/скоростью, то регуляторы не упрутся в максимум напряжения и на изменение питания никак привод не отреагирует. Никакого «запаздывания» ротора при векторном управлении не происходит, это удел прямого подключения двигателя «на сеть». Вы, как программист, видите, что вам не хватает напряжения -> принимаете меры.
Понятно, спасибо. Примерно так себе и представлял.

Я так понимаю, что фактические решения которые принимают зависят уже от того, что важнее в конкретной установке: сохранять скорость постоянной или момент?
Не совсем: момент и скорость связаны и зависят от нагрузки. Если это, скажем, вентилятор, то у него чем выше скорость, тем выше момент сопротивления. Если вы работаете в какой-то точке в установившемся режиме с поддержанием скорости ПИ-регулятором, то момент определяется уже нагрузкой: вентилятором. Если напряжение на входе упало, то можно снижать скорость, чтобы напряжения начало хватать, а именно снизить момент и скорость снизится, собственно, сама от нагрузки вентилятора. Или продолжать работать на этой же скорости и с этим же моментом, но «задавив» ЭДС машины. Это делается для синхронной машины с магнитами за счет задания отрицательного тока по оси d — вы как бы снижаете поток, который дает магнит. В этом случае ток в машине увеличится (по оси момента, оси q ток сохранится, а по оси d мы добавим ещё сами), но мы продолжим работать в той же точке. Но у этого метода (ослабления поля осью d) есть свои ограничения, да и машина будет греться сильнее. Поэтому тут выбор не между скоростью и моментом, а между сохранением рабочей точки (скорость и момент) за счет поднятия тока, или снижением скорости. Но чтобы это всё осознать надо знать уже теорию электропривода более глубоко, так, на пальцах, тут уже тяжело объяснить.
Так, теперь вроде понял, спасибо. Интересно а существует ли вариант импульсной компенсации с помощью ЭДС самоиндукции? Или это не имеет смысла, так как потом все равно придется выходить на режим и индуктивность будет уже сопротивляться, а не помогать? С другой стороны, если растянуть фронт во времени…

P.S.: Прошу прощения за детские вопросы, просто тема интересная, а кроме вас, пожалуй, никто не ответит :)
Я не понял… что имеется ввиду под «импульсной компенсации с помощью ЭДС самоиндукции». Особенно применительно к векторному управлению. Но сдается мне, что это тоже самое, что задать отрицательный ток по оси d, что я описал выше. Только это будет не импульсно, а в «статическом» режиме.
Этот метод называется ослаблением поля в синхронной машине с постоянными магнитами, оно же «размагничивание», оно же field weaking, хотя на самом деле все эти названия не совсем точно отражают суть. Метод применяется при недостатке напряжения на инверторе и необходимости разгонять синхронную машину дальше вверх. Для этого в векторном управлении подают отрицательное задание тока по оси d — по оси магнита. В том случае ЭДС машины уменьшается (на самом деле там всё сложнее, но с точки зрения управления выглядит именно так) в результате чего напряжения начинает «хватать» и можно раскрутить машину выше по частоте. Совсем по-простому объяснено вот здесь (глава «Функция ослабления поля»), но существует просто неисчислимое количество англоязычных, да и наших тоже статей по этому вопросу. Подробнее читайте со всей математикой в учебнике «Анучин А. С. Системы управления электроприводов. МЭИ, 2015». На самом деле метод так себе — и КПД плохой там, и есть опасность перенапряжений (если система управления отключится), и колебания возможны с потерей устойчивости и т.п.
Не совсем понятен механизм. Если ослабляем поле, то ведь и «притяжение» ротора к статору должно ослабнуть…
Да, скорость должна повыситься. На холостом ходу. (Ток тоже резко повышается — ему же теперь меньшее сопротивление оказывается — отсюда перегрев обмотки и всего остального, по чему течёт ток). Но ведь нагрузку никто не уменьшал. Или там физика процесса сложнее, наверное?
Просто математические формулы ничего не объясняют. В лучшем случае они помогают посчитать. Но не понять. Во всяком случае тем, у кого в голове моделирование визуальное и «тактильное», а не просто абстрактно-логическое.
Если «на пальцах», то отрицательным током по оси d мы ничего не размагничиваем. Мы создаем реактивный, не создающий момента ток. Но для его создания, если посмотреть формулы машины, требуется такое напряжение, вектор которого направлен в противоположную сторону от ЭДС машины. И если сначала нам не хватало напряжения на инверторе, то создавая ток по оси d в минус нам приходится прикладывать вектор напряжения меньший по амплитуде, чем был. Ток по оси q мы не трогаем, а значит момент на машине не меняется. Просто… обмениваем напряжение на ненужный нам ток :) За счет этого можно теперь разогнать машину выше. Но так как машина рассчитывается на определенную амплитуду тока, то создавая ненужный ток по оси d требуется соответственно снижать ток по оси q, чтобы не перегреть обмотки. И, в зависимости от того, насколько сильны у машины магниты и насколько большая индуктивность обмоток, на которой можно «просадить» мешающую нам ЭДС, зависит то, насколько таким образом можно разогнаться выше. В теории можно даже создать машину, ЭДС которой можно током по оси d подавить полностью. И разгоняться до бесконечности :)
Конечно, там еще много процессов и в магнитной системе при этом происходит, но совсем «на пальцах» объяснение «ослабления поля» именно такое. В подтверждение этому можете посмотреть формулу момента синхронной машины — туда ток по оси d не входит, только ток q. То есть никакого «размагничивания» магнита на самом деле не происходит, если не учитывать всякие там совсем уж тонкости.
Статья отличная! Все показано очень наглядно. Единственное, на чем я бы остановился подробнее — это понятие обобщённой эл. машины. Зачем она нужна и почему она именно двухфазная. Помню когда я учился, эти, казалось бы простые вопросы, многих студентов ставили в тупик.
Ну двухфазная она именно потому, что так проще — моя статья тоже начинает объяснение с двух фаз. И векторная структура тоже строится в декартовых осях, независимо от числа фаз реальной машины. А зачем нужна — ну чтобы вот, например, привести трехфазную машину к двухфазной. Чтобы магнит заменить обмоткой и тогда привести к одним и тем же формулам и синхронную машину с магнитом, и без. И к ней же привести асинхронник, просто «закоротив» катушку с обмоткой, которая только что была «магнитом»… Тогда у вас есть универсальные формулы, которые описывают вообще все электродвигатели — только чуть-чуть параметры меняете и всё.
Сейчас в формуле 1 применяют электродвигатели для раскручивания турбины/генерации электричества (MGU-H). Какой тип двигателей они могут применять, если обороты порядка 150 тысяч в минуту? Если асинхронный — то нужен ли какой либо аналог векторного управления для работы двигателя в качестве генератора?
Хороший вопрос! Отвечает… Борис Бурда!
Честно говоря, я не знаю. Можно только фантазировать или найти в какой-нибудь статье, если повезет. Вот здесь на форуме есть всякие рассуждения… Когда речь идет о «высоких материях», то применять могут самые неожиданные технические решения. Если это синхронный двигатель, то для управления наиболее вероятно применяется какой-нибудь тип автокоммутации, причем сделанный скорее всего аппаратно (ПЛИС). А программа микроконтроллера только формирует «задание» тока для такой системы. В любом случае «аналог» векторного управления нужен, иначе сложно управлять потоком мощности туда-обратно, да еще и так быстро, как это требуется в этой задаче.
я читал этот тредик в прошлом году. Сам считаю, что там довольно жарко, и поэтому магниты долго не проживут. + ротор крутится очень быстро, желательно, чтобы он был сплошной деталью, ну или хотя бы просто собран из нескольких в монолитную сборку.
Может там редуктор стоит?
В статьях пишут именно про 150 000 rpm и на картинках рисуют тоже напрямую. Да и редуктор на такие обороты… задача не менее сложная, чем, собственно, сам двигатель и система управления.

Стоит редуктор, но только повышающий обороты. Там двс на порядок ниже обороты дает.

Скорее всего обычный асинхронник с частотным управлением. Особо сложного закона управления там не нужно, так как для асинхронного мотора нормально иметь большое скольжение (разность частоты вращения ротора и магнитного поля статора), и точного выдерживания магнитного угла не требуется.
Шайтан, как же теперь это всё запомнить?
Давно хотел запустить моторчик от очень старого винчестера, там всего 3 вывода — Видимо это всё-таки BLDC и обмотки соединены треугольником.
Да, в винчестерах BLDC. Это вам надо статьи из курса про BLDC прочитать, на которые ссылка в статье.
Есть ли какие-то особенности при запуске однофазного двигателя? Типа особенностей реакции при неправильном направлении вращения, или снижения роли интегральной компоненты в ПИ-регуляторе скорости если двигатель инерционный и медленно раскручивается?
Однофазного какого именно? Асинхронного? Это того, который на самом деле двухфазный, но на второй фазе делают фазовый сдвиг конденсатором? Или SRD? Или синхронного однофазного? Обычно для таких простых двигателей никаких векторных управлений не делают, по-простому «на сеть» сажают или регулируют в напряжение питания (для асинхронного), а SRD и синхронные (шаговые) простеньким коммутатором щелкают.
Пардон, имелся в виду двухфазный синхронный. Как на первых примерах.
Двухфазный синхронный? Или однофазный синхронный? :) Давайте определимся до конца :)
Потому что двухфазный синхронный никаких проблем не имеет с направлением вращения и математически ничем от трехфазного не отличается по управлению.
У меня вопрос скорее про то, что может вращаться в ненужную сторону, не уверен как именно оно классифицируется =). Там могут быть какие-то тонкости?
Если двигатель однофазный синхронный, то он действительно мог бы вращаться в другую сторону. Но обычно в тех применениях, где такие двигатели могут использоваться, обратное направление вращения предотвращается как-то механически. Или вообще рабочий режим такого двигателя может быть колебаниями (часы). Векторное управление к такому двигателю не применяется, собственно, по определению: нечем создавать «вектор», если у нас только одна фаза. Одно фазой можно сделать только «скаляр». Ну или вектор, который нельзя поворачивать :) Так что в таких приводах применяют просто автокоммутацию, включая обмотку по какому-то датчику или просто по времени (шаговые двигатели).
UFO just landed and posted this here
Очень хорошо, жаль год назад, когда я начинал, такой статьи не было!
«Калачев Ю. Н. Векторное регулирование (заметки практика)» — казалась эльфийскими рунами)
Мне лично очень помогло видео от TI www.youtube.com/watch?v=cdiZUszYLiA я просто до ушей расплылся когда его смотрел, от того что всё стало ясно) + от этого же автора есть ролик про BLDC.
Ну и «библию» могу порекомендовать — «ELECTRIC MOTORS AND DRIVES Fundamentals, Types, and Applications Fourth Edition AUSTIN HUGHES AND BILL DRURY» — исключительно понятным языком объяснено почти всё, что необходимо для понимания, в т.ч. векторного управления.

В догонку к теме про отладку электропривода: мощный и точный FOC таки можно сделать на микроконтроллерах ST, буквально вчера провёл все тесты и остался доволен — STMStudio позволяет получать очень детальные графики параметров, до миллисекунды и даже лучше. Всё что нужно — использовать dataAcq.c из дистрибутива студии и добавить в код пару строчек (см UM1025 от ST).
Значит STMStudio умеет отображать массивы данных из оперативки? Отличная новость, спасибо за тест! А можете привести пару скриншотов интерфейса — оценить, как там у них это сделано, чтобы всем остальным показывать?
Скриншот я приложил в «соседней» теме. На самом деле — это не отображение массива. Это вызываемая в коде функция, делающая snapshot запрошенных студией переменных в свой внутренний массив, размер которого можно изменять(у меня порядка 200 элементов). Данные, из этого массива студия умудряется забирать с контроллера быстрее, чем она считывает переменные в обычном режиме. Если не делать снапшот слишком часто — то график в студии будет непрерывный и с очень плотными точками. При этом на едином графике можно наблюдать и «обычные» переменные, с реденькими точками и плотные, полученные снапшотом. режим переключается одним кликом. Разве что одни могут уползать относительно других, из-за нерегулярности вызова функции снапшот'а.

Это четверть экрана, на самом деле переменных одновременно получается намного больше, то есть плотность не максимальна, но разница между разными способами получения данных на лицо(время в миллисекундах):
image
Это использование массива как кэша данных. Да, тоже интересный подход. Но тоже привязан к частоте передачи данных «наверх» получается. 1мс дискретизация это почти хорошо, но для некоторых задач — мало. Например, часто бывают ситуации, когда процесс происходит за два -три периода ШИМ на частоте ШИМ 10кГц. Т.е. это меньше 1мс. Ну, например, если вам надо настроить регулятор тока — там весь переходной процесс около 1мс. А бывает, что датчик положения или АЦП глючит на «один такт», проскакивает «шилка» и потом на всех графиках видны только растянутые «последствия». Бывает, что надо сделать «подхват двигателя на лету» — типа он уже вращается, а вы раз — и попадаете выходами регуляторов в текущее мгновенное напряжение и продолжаете вращение. Там, если не попасть, то 2-3 периода ШИМ и будет защита по превышению тока — надо рассматривать «потактово» что система управления делает. Думаю, раз в STMStudio сделали так сложно, с кешированием, то где-нибудь есть и просто функция отображения массивов, поищите :)
Да, потеря детализации естественно есть. Если углубиться в раскопки их кода получения массива то наверно что-то можно наколхозить)
У меня ШИМ и FOC просчитывается на 30кГц, для совсем быстрых иголок я в коде ловлю локальный максимум (на картинке VsMAX — он медленно спадает). Ну а максимальную частоту с которой можно получать студией одну 32х-битную переменную я измерю и сразу напишу, думаю будет около 5-10кГц. Надо снапшот затолкать в прерывание с малым приоритетом, пока она у меня в главном цикле.
Ещё есть варианты с использованием дополнительного пина SWO — специально для trace, но нужен уже другой, использующий его софт. Keil это умеет, но графопостроитель там намного менее удобный.
image

Здесь 2кГц. Можно больше, если причесать код. Можно на много больше, если с пропусками. Можно с триггером по нужному событию.
А как работает двигатель привода HDD?
там стоит некая микросхема, которая по определённому закону «приземляет» питание на, собственно, обмотки.
Ну или что-то ещё, подключённое по нескольким на вид совершенно равноценным дорожкам (может что-то из них питание, а что-то — датчики. Или всё вместе датчики… )

— Есть разобранный HDD (без печатки; только механика — движок с шпинделем и диски). Есть контакты. Как завести?
Двигатель HDD наиболее вероятно класса BLDC. Как запустить смотрите здесь.
Отличная статья, спасибо, автор, за подробный ликбез по электродвигателям!

Скажите, а с индукционными (асинхронными) двигателями как обстоит дело? Там же ток в короткозамкнутом роторе возникает за счет индукции от статора. Может тиснете еще статейку про такие двигатели, все-таки у них есть важное преимущество — отсутствие постоянных магнитов?
Спасибо за вопрос! Честно признаться — я его ждал. Сначала я хотел написать в этой же статье про асинхронные двигатели, а потом увидел её размер… И решил пока асинхронный привод оставить на потом. Именно асинхронный, а не индукционный — на русском языке он называется именно асинхронным. Если получится объяснить про него на пальцах, то попробую оформить статью.
спасибо. Очень ждем такой статьи.
Отличная статья. Нам бы на приводе в свое время такую вводную дали, хотя бы на пол пары, и число тех, кто понимал бы что он вообще проектирует и считает на потоке выросло бы в разы.

Теперь даже моя собака умеет управлять несколькими видами электродвигателей.

Sign up to leave a comment.