После выхода предыдущих статьей о векторном управлении электродвигателями поступило много вопросов о позиционном приводе – как приводом отрабатывать заданное положение? Как работает сервопривод в современных станках, как использовать сигнал с датчика положения, чем отличается шаговый привод от сервопривода с подчиненным регулированием? Давайте всё покажу в виде картинок и видео.
Итак, что же такое сервопривод с контуром положения? Для начала посмотрите вот это. Чтобы было видно графики на фоне советую смотреть в полноэкранном режиме.
Трехконтурная структура управления
Система управления стремится поддерживать заданное положение вала ротора. Я вношу возмущающее воздействие, отвожу ротор от заданного положения, но после отпускания вала он снова вмиг возвращается к заданию. Даже если его «закрутить» на несколько оборотов, система управления открутит эти несколько оборотов назад, причем с очень хорошей динамикой — такой, что движение даже не успевает попасть в кадры видео. На заднем фоне виден график работы привода: красным показан ток двигателя (пропорционален моменту), зеленым отображается текущее положение вала ротора, а желтым – задание положения. Максимальный разрешенный момент (ток) у двигателя в этом эксперименте был ограничен в три раза от максимального, на полном я бы не смог его так легко удерживать.
Как работает такая система управления? Это классическая трехконтурная система подчиненного регулирования с последовательной коррекцией, показанная на рис.1.
Рисунок 1. Трехконтурная система подчиненного регулирования
Почему подчиненного? Потому что каждый вложенный контур «подчиняется» заданию вышестоящего. В системе три контура, перечисляю начиная с внутреннего: конур тока (момента), контур скорости (частоты вращения), контур положения. Соответственно, каждый контур с помощью своего регулятора поддерживает на заданном уровне свою величину. В данном случае использовался ПИ-регулятор для токов, П-регулятор для скорости и ПИД-регулятор для положения. Никакой магии типа фаззи-логики, линейно-квадратичных регуляторов и прочего.
Почему именно три контура и именно таких? Попробую объяснить, как обычно, «на пальцах». Если мы хотим регулировать положение, то лучшее, чем мы можем для этого управлять – это скорость (частота вращения), потому что именно скорость напрямую влияет на изменение положения (скорость – это производная от положения), а все остальные величины (ток, напряжение и прочее) влияют на положение более сложным образом, более трудным для регулирования. Далее, если мы теперь хотим регулировать скорость, то лучшее, чем можем управлять – это момент двигателя, так как момент определяет ускорение привода, и оно также самым простым математическим законом связано со скоростью. Так как для двигателя момент — это ток (для двигателя постоянного тока это справедливо в явном виде, а для двигателей переменного тока справедливо для моментообразующего тока в векторном управлении), то для регулирования момента нужно управлять напряжением на инверторе преобразователя, потому что ток и напряжение тоже связаны в первом приближении через простое дифференциальное уравление.
Если какой-либо внутренний контур опустить, то… положение регулироваться будет, но будет регулироваться плохо, не с таким быстродействием, как в трехконтурной системе. Если выкинуть, например, контур тока, заставив регулятор скорости воздействовать напрямую на напряжение инвертора, то останется бесконтрольным момент привода (ток) – он будет меняться как хочет, переходные процессы будут пущены на самотёк. К сожалению, некоторые ардуиноводы делают структуру, показанную на рис.2.
Рис.2. То, как не нужно регулировать положение привода.
Такая структура работает отвратительно (медленно и качается), хотя как-то работает – ПИ-регулятор всё вытянет.
Постоянный и переменный ток: в чем разница для контура положения?
В чем разница в регулировании положения для двигателей постоянного тока и для двигателей переменного тока? В способе поддержания момента. В двигателе постоянного тока достаточно поставить один регулятор тока, который воздействует на напряжение якорной обмотки – получится регулирование момента. В двигателях переменного тока (например, синхронной машине с постоянными магнитами и асинхронном двигателе) придется применять векторное управление. Что это такое и как работает уже было подробно рассмотрено в статьях Векторное управление электродвигателем «на пальцах» и Векторное управление для асинхронного электродвигателя «на пальцах». Также, как и для двигателя постоянного тока, векторное управление позволяет регулировать момент на двигателе. Далее сверху «навешиваются» такие же регуляторы скорости и положения. Итоговая работоспособность контура положения не зависит от типа двигателя (меняются лишь незначительные нюансы).
Шаговый режим работы
Для синхронных машин с постоянными магнитами существует еще один вариант отработки положения – так называемый «шаговый» режим работы. Двигатели, для него оптимизированные, соответственно, называются шаговыми. Не все шаговые двигатели – синхронные машины с магнитами, но большая их часть именно такая (бывают еще шаговики индукторного типа). Как это работает? В двигатель просто подается постоянный ток в нужные фазы. И всё. Ротор под действием «магнитной пружины» сам встаёт в соответствующее току положение. Про то, как работает синхронный двигатель, и где там в нем магнитная пружина уже было рассказано в статье.
Шаговый режим хорош тем, что кроме контура тока ему ничего не нужно – ни датчик положения, ни даже микроконтроллер. Система управления для такого режима собирается из трех с половиной микросхем и применяется во всех ЧПУ станках любительского (и не очень) уровня. В чем минусы? Положение поддерживается тоже отвратительно. Поддержанием положения в таком режиме занимается сам двигатель – в статор подается постоянный ток, а ротор стремится встать в соответствующее положение. Можно представить два прямоугольных магнита на одной оси, проходящей через их середину (рис 3). Одним магнитом мы управляем (статорный ток), а второй – ротор, болтается сам по себе и стремится повернуться согласно первому, параллельно ему.
Рис. 3. Шаговый режим работы синхронной машины
Момент на роторе в таком режиме изменяется по закону синуса от угла рассогласования между этими двумя магнитами. В согласованном положении момент равен нулю (на ротор не действует нагрузка), на 90 градусах (магниты перпендикулярны) момент двигателя максимален и стремится повернуть ротор в согласованное положение. А амплитуда этого синуса изменения момента зависит от величины поданного тока.
Число пар полюсов
Для улучшения точности поддержания положения в шаговом режиме конструктивно увеличивают количество пар полюсов у двигателя. Если пара полюсов одна, то двигатель соответствует вот тем двум магнитам на рис. 3 – ротор может болтаться вплоть до четверти оборота туда-сюда от заданного положения. Когда число пар полюсов увеличивают, то увеличивается количество чередований север-юг, как в магнитах ротора, так и в обмотках статора. Вот картинка, где показаны двигатель с одной парой полюсов и с двумя:
Рис.4. Одна пара полюсов vs две пары полюсов.
Если пытаться провернуть такой двигатель с двумя парами полюсов с поданным постоянным током в фазы, то момент на роторе вырастет до максимального не за четверть оборота (90 градусов, как в одной паре полюсов), а за восьмую часть оборота (45 механических градусов). У двигателя будет два устойчивых положения ротора на механическом обороте. Для удобства описания процессов в двигателе вводят понятие «электрического оборота» – то, насколько надо провернуть ротор, чтобы магниты ротора одного полюса встали на место таких же от другого полюса, т.е. чтобы сделать один «шаг». Тогда говорят, что ротор провернулся на 360 электрических градусов, а чтобы перевести это в механические, надо поделить на число пар полюсов. На электрическом обороте поведение всех двигателей в плане управления одинаково, независимо от числа пар полюсов. Увеличение числа пар полюсов создает лишь эдакий «электрический редуктор» – можно взять машину с одной парой полюсов и поставить дальше четырехкратный понижающий редуктор, а можно взять машину с четырьмя парами полюсов и получить, грубо говоря, то же самое.
Шаговый режим vs подчиненное регулирование: теория
Для шаговых двигателей число пар полюсов делают очень большим – 50, 100 и более. В этом случае естественные возможности по поддержанию положения получаются очень хорошими – если гарантировать, что момент нагрузки никогда не превышает максимальный момент двигателя, то положение без всяких датчиков положения будет поддерживаться с точностью (±360/(число_пар_полюсов*4)) механических градусов. Правда, цена за это – сильное ухудшение показателей двигателя в массогабаритном плане и КПД. Если сравнить по мощности шаговый двигатель с сотней пар полюсов и такого же габарита синхронный двигатель с небольшим количеством пар полюсов, то длительно-допустимая мощность у шаговика будет в разы меньше. А еще из-за увеличения числа пар полюсов у шаговиков есть проблема с работой на больших частотах вращения. Частоту тока в них приходится подавать в количество_пар_полюсов раз большую, чем в «обычную» синхронную машину, что даёт частоты тока порядка килогерца и более – там и потери на перемагничивание железа огромные, и не всякая система управления такое может.
Кроме того, шаговики не обеспечивают хорошей динамики разгона и торможения, так как при разгоне двигатель должен перебороть два момента: момент нагрузки, а также динамический момент на разгон маховой массы и рабочего органа. И если сумма всех моментов превысит максимальный момент двигателя, он пропустит шаг, что для ЧПУ недопустимо. Поэтому шаговики разгоняют и тормозят обязательно плавно, с большим запасом между суммарным моментом на валу и максимальным моментом двигателя, чтобы не пропускать шаги.
Стоит также отметить, что в шаговом режиме при приложении к ротору нагрузки он всегда будет поддаваться и отклоняться от заданного положения на некоторый угол, каким бы ни был поданный в двигатель ток. Также при резком пропадании нагрузки возможны колебания – ротор на магнитной пружине будет качаться туда-сюда. Если с нагрузкой не повезет, и она будет импульсная, то она может совпасть внутренней частотой колебаний ротора, раскачать его, после чего ротор выпадет из синхронизма – двигатель «пропустит шаг».
Что же делать, если для решения задачи нужно и хорошо поддерживать положение, и получить динамичный, высокоскоростной привод? Не использовать шаговики! А использовать «обычную» синхронную машину с небольшим числом пар полюсов в качестве серводвигателя, установить датчик положения и построить трехконтурную систему управления. В векторной системе управления никаких «шагов» уже нет – теряться нечему. В шаговом режиме через двигатель всегда требуется пропускать большой ток, а в векторном режиме с трехконтурной структурой управления ток течет только тогда, когда к валу приложена нагрузка. Точность поддержания положения в системе подчиненного регулирования чаще всего определяется точностью датчика положения ротора. Чем точнее датчик, тем качественнее получается работа контура положения. А современные датчики положения бывают очень точны – сотни тысяч меток на один механический оборот. Это на порядки лучше, чем дают шаговые двигатели с самым сильным дроблением шага.
Шаговый режим vs подчиненное регулирование: практика
А теперь давайте посмотрим на практике все вышесказанное. Нужно описать стенд, с которым я работаю. Технической информации много, спрячу это под спойлер.
Рис. 5. Отладочный комплект для управления электродвигателем VectorCARD К1921ВК01Т
Серводвигатель – Leadshine ACM601V36-1000. Трехфазная синхронная машина с постоянными магнитами на 100Вт, 4 пары полюсов, напряжение питания 36В, номинальный ток 4А, пиковый 11А. Датчик положения – встроенный инкрементальный энкодер на 1000 периодов квадратурного сигнала (или, что то же самое, 4000 фронтов (меток) по двум каналам A и B суммарно).
Инвертор – шестиключевой инвертор на полевых транзисторах из комплекта DRV8301-HC-EVM Texas Instruments.
Контроллер – отладочная плата VectorCARD К1921ВК01Т на отечественном микроконтроллере К1921ВК01Т ОАО «НИИЭТ» (ARM Cortex-M4F, 100МГц).
Общая структура векторного трехконтурного подчиненного регулирования, создана программно, показана на рис. 6.
Рис. 6. Трехконтурная структура с векторным управлением синхронным двигателем: контура токов (момента), скорости, положения.
Если кому-то эта структура кажется страшной, то всё, что обведено в зеленую рамку было до основания разобрано в статье Векторное управление электродвигателем «на пальцах». По своему принципу структура ничем не отличается от структуры рис. 1.
Частота ШИМ задана равной 20кГц, частота обсчета структуры управления (всех трех контуров) – 10кГц. Датчики тока – шунтового типа, установлены последовательно с нижними ключами инвертора. Ресурсы микроконтроллера по производительности вычислений загружены чуть более, чем на половину.
Шаговый режим vs подчиненное регулирование: сравнение в статическом режиме
Сначала сравним шаговый режим работы и трехконтурную систему подчиненного регулирования с векторным управлением «в статике». Зададим одно и то же положение ротора, а затем будем плавно увеличивать момент нагрузки на валу. В шаговом режиме работы подадим номинальный ток 4А, а в векторном режиме работы поставим токоограничение 4А. Что мы ожидаем увидеть?
В шаговом режиме работы ток будет постоянным как по фазе, так и по амплитуде, а положение ротора должно «прогибаться» на магнитной пружине под нагрузкой. Так как число пар полюсов равно 4, то максимум момента должен достигаться при отклонении 360/4/4 = 22.5 механических градусов от первоначального согласованного положения.
Что будет в трехконтурной системе управления? Регулятор положения в этом опыте – ПИД (пропорционально – интегрально – дифференциальный). Ключевая буква здесь «И» – он имеет интегральную составляющую. Это значит, что до тех пор, пока между заданным положением и текущим есть хоть какое-то рассогласование, интегратор регулятора будет интегрировать и увеличивать свой выход, пока ошибка не придет в ноль. Это значит, что если нагружать вал медленно, так, чтобы интегратор успел наинтегрировать и скомпенсировать ошибку (т.е. в статическом режиме), то вал будет стоять в одном и том же положении «мёртво». Но когда запас по току (моменту) привода будет исчерпан (задание на ток дойдет до ограничения 4А) привод сразу начнет поддаваться и отклоняться от задания (тем не менее, всё время будет тянуть с максимальным моментом по направлению к заданию).
Для отслеживания текущего положения вала ротора удобно наблюдать сигнал ошибки с датчика положения (разница между заданием и текущим положением), а также ток статора. При проведении опыта осциллограмма с этими данными будет видна на заднем фоне. Для наблюдения текущего момента нагрузки в опыте использован высокоточный специализированный динамометр, который я достал из ящика кухонного стола. Вот, собственно, сам опыт (чтобы было что-то видно — полный экран!):
Видео подтверждает сказанное. В векторной трехконтурной системе управления ротор стоял неподвижно, пока я не «выбрал» доступные 4А тока, а потом ротор стал отклоняться. В разомкнутой по положению структуре с постоянным током ротор легко поддался внешнему моменту. Так как число пар полюсов этого двигателя равно 4, то ротор отклонился более, чем на 20 градусов от задания.
Шаговый режим vs подчиненное регулирование: сравнение в динамике
Всё становится интереснее в динамике. Что если приложить импульсную, ударную нагрузку? Здесь получается соревнование двух принципиально разных систем. В векторной системе управления быстродействие зависит напрямую от быстродействия трехконтурной структуры управления. Чем жестче настроены регуляторы, чем быстрее частота обсчета структуры, чем точнее и быстрее датчики – тем лучше получится реакция на возмущение в динамике. В шаговом режиме работы система управления «отдыхает». Она создала вектор тока – это всё, что от неё нужно. Всю реакцию на возмущающее воздействие обеспечивает сам двигатель. Момент на валу при отклонении вала ротора возникает «мгновенно», так как это, по сути, взаимодействие двух магнитов. Но момент увеличивается пропорционально синусу от электрического угла отклонения, а значит, такая система будет иметь определенную жесткость. В общем, это обычная «магнитная пружина». Сравнение в динамике – это очень хороший показательный опыт для трехконтурной системы управления. Если она медленная, то она не сможет показать результат лучше, чем разомкнутая структура. Да, в статике трехконтурная структура может выбрать ошибку по положению в ноль интегральной частью регулятора, но в динамике может и «просесть» сильнее, чем обычный шаговый режим работы. Проверим?
Для проведения этого опыта я воспользовался мерным грузом, который нашел в своем шкафу с инструментами, а также ниткой, привязанной к штанге, которая имеет консольное закрепление на муфте двигателя. Сбрасывая груз вниз с фиксированной высоты, получаем ударную импульсную нагрузку на вал ротора. Можно наблюдать, насколько отклонится вал ротора от задания в момент удара. Вот видео эксперимента:
Вначале включен шаговый режим работы с фиксированным вектором тока. Я показываю, как ротор прогибается под воздействием момента нагрузки, как, пересилив момент нагрузки, можно перескочить в другое фиксированное положение. Затем провожу эксперимент по сбросу груза. Далее то же самое для трехконтурной структуры управления. Заметили ли вы, насколько меньше отклонился вал ротора на видео в трехконтурной системе управления? Или, может быть, больше? Я нет.
Если бы похожее видео снимал канал Дискавери, они обязательно установили бы высокоскоростную камеру для красивых сравнительных кадров. Однако у нас есть инструмент поточнее – датчик положения ротора и микроконтроллер. Нужно просто снять осциллограмму ошибки отработки положения в момент приложения импульсной нагрузки. Как это делается подробно описано в статье Способы отладки ПО микроконтроллеров в электроприводе. Если кратко, то микроконтроллер по определенному событию записывает точки осциллограммы в массив, а затем осциллограмма скачивается на компьютер и отображается. Я в софте контроллера установил триггер захлопывания осциллограммы, когда ошибка по положению больше определенной уставки, вписав для этого пару строк кода на Си. После чего на компьютере я получил вот такую осциллограмму для шагового режима работы с током 5А:
Рис. 7. Осциллограмма реакции на импульсный наброс нагрузки в «шаговом» режиме работы – к двигателю приложен вектор тока фиксированной амплитуды и фазы. Фиолетовым показано отклонение ротора от заданного положения в электрических градусах (для перехода в механические делить на 4), голубым показана амплитуда тока статора, красным – частота вращения вала. В одной клетке по оси времени 21 миллисекунда.
В осциллограф я добавил три переменных системы управления: ошибка по положению, ток статора, частота вращения вала. Из осциллограммы видно, что ток статора оставался постоянным и равным 5А, ударная нагрузка внесла лишь небольшое возмущение в него (за счет ЭДС вращающегося двигателя). А вот положение скакнуло сильно. Максимальное отклонение положения вала от задания составило 36 электрических градусов (или 9 механических). Наблюдается затухающий колебательный режим ротора после удара. Я провел несколько таких опытов, убеждаясь в повторяемости. Все осциллограммы получились схожи – благо, что при наличии нужного инструментария время на проведение опыта и получение осциллограммы (в том виде, как вставлена в статью) составляет секунд 5-10.
Теперь посмотрим, что покажет трехконтурная структура управления (рис. 8). Предварительно я настроил у неё все регуляторы на среднее быстродействие.
Рис. 8. Осциллограмма реакции на импульсный наброс нагрузки с трехконтурной системой подчиненного регулирования. Фиолетовым показано отклонение ротора от заданного положения в электрических градусах (для перехода в механические делить на 4), голубым показан текущий ток статора по оси q (моментообразующий ток), синим – его задание, а красным – текущая частота вращения. В одной клетке по оси времени 21 миллисекунда.
Здесь процесс поинтереснее. Помимо, собственно, положения, я добавил в осциллограф еще всяких величин, по которым видно работу подчиненного регулирования. В начальный момент времени всё равно нулю: ошибка равна нулю, скорость, ток статора и его задание. На ротор не действует сил, он покоится за счет своей силы трения. Но изолента в этот момент уже неумолимо летит вниз, веревочка разматывается… В определенный момент длина нити выбирается, груз ударяет по валу, положение начинает меняться, ошибка (обратная связь регулятора положения) выстреливает вверх, вместе со скоростью вала. В ответ на это трехконтурная система резко наращивает момент на приводе, пытаясь вернуть его в первоначальное положение. Спустя пять миллисекунд после удара момент на двигателе достигает максимально-разрешенного (ток 5А), после чего положение нехотя начинает меняться в обратную сторону, скорость меняет знак. Перелетев нулевую точку и совершив пару колебаний, система приходит к заданию.
Видно, как задание на ток статора (синее) немного опережает текущее значение (голубое), но задержка менее миллисекунды, что говорит о высоком быстродействии контура тока. Однако в задании тока видна некоторая «пушистость» и «иголки», особенно под конец переходного процесса. Что это и откуда? Давайте рассмотрим, что выдает при этом процессе регулятор положения – выход его пропорциональной, интегральной и дифференциальной составляющих. Роняю изоленту еще раз, вот они:
Рис. 9. Осциллограмма реакции на импульсный наброс нагрузки с трехконтурной системой подчиненного регулирования. Фиолетовым показано отклонение ротора от заданного положения в электрических градусах (для перехода в механические делить на 4), голубым – выход пропорциональной части ПИД регулятора положения, красным – интегральной, синим – дифференциальной частей. В одной клетке по оси времени 21 миллисекунда.
Посмотрите, как отрабатывают переходной процесс все три части ПИД регулятора. Осциллограмма – как из учебника, но эта – живая, настоящая и свежая, только из двигателя. Выход пропорциональной части прямо пропорционален ошибке. Интегральная часть – интеграл от ошибки, смотрите как он наинтегрировал «вниз» от первого большого колебания и потом нехотя приходит к нулю. Дифференциальная часть – это производная от ошибки. Но так как датчик положения инкрементальный и всего лишь на 1000 меток, то изменение каждой метки – событие. Поэтому положение для системы управления меняется дискретно, скачками, а значит и производная от такого изменения будет «игольчатой». Или даже импульсной, прямоугольной, шумной – что мы и видим.
Но постойте… Производная от положения – это же скорость! Пролистайте выше до рис. 8 и сравните тот график скорости с графиком дифференциальной части рис.9. То же самое, но без шума! Потому что скорость вращения модулем обработки инкрементального энкодера определяется более грамотно – аппаратной частью микроконтроллера, засекающего время между метками датчика. Та же самая «производная» от положения, но более правильно измеренная.
Какая же мораль? Не все составляющие регулятора одинаково полезны. То, что делает дифференциальная составляющая регулятора положения, теоретически должно делаться нижестоящим контуром скорости. Раз мне понадобилась для более качественной настройки, то это означает лишь, что я недонастроил промежуточный контур скорости.
Ах, да. С чего мы там начали? С ошибки по положению. В разомкнутом по положению режиме работы ошибка была 36 электрических градусов (9 механических), а в трехконтурной системе подчиненного регулирования с данной настройкой регуляторов она равна 21 электрически градус (5.2 механических). Лучше, да. А можно еще лучше? Давайте задерем еще коэффициенты регулятора положения. Повышаю всё – Kп, Kи, Kд раза в полтора. Смотрим:
Рис. 10. Осциллограмма реакции на импульсный наброс нагрузки с трехконтурной системой подчиненного регулирования. Коэффициенты регулятора положения повышены в полтора раза.
Ошибка уменьшилась, да… 18 электрических градусов. Но что мы видим? Система управления практически сразу уперлась в токоограничение. Она хотела бы приложить ток больше 5А, но я поставил ограничение 5. Почему? Чтобы по-честному сравнить с разомкнутой системой управления, у которой тоже ток был 5А. Только вот получилось не честно: векторная система управления создает ток только когда ей это нужно (когда надо реализовать момент), а разомкнутая система гонит заданный ток всегда. С точки зрения нагрева и потерь для двигателя гораздо предпочительнее векторая система управления.
Разрешим векторной системе «поддать» току? Хотя бы на короткое время. По паспорту двигатель допускает 11А. Разрешим 7А, чтобы оценить результат.
Рис. 11. Осциллограмма реакции на импульсный наброс нагрузки с трехконтурной системой подчиненного регулирования. Токоограничение поднято с 5А до 7А.
Ошибка всего 15 электрических градусов! Это в 2,5 раза меньше, чем в разомкнутой по положению системе управления. Но смотрите, что это там в конце графика? «Иголки» в задании тока… и они продолжаются и продолжаются, что я слышу акустически – двигатель «звенит». Это называется автоколебаниями – слишком сильно задрал коэффициенты регулятора.
Замкнутые контура и их шумы
Вот мы и добрались до специфического вопроса качества любой системы управления, который иногда не менее важен, чем точность поддержания самого регулируемого параметра – шумность. Допустимо ли, чтобы двигатель «шумел» в замкнутой системе управления? Это зависит от того, как сильно он шумит и что именно шумит. Я подготовил видео, в котором показаны различные шумы, которые могут рождаться в различных контурах системы подчиненного регулирования. Для этого я закрепил микрофон в непосредственном контакте с двигателем – на расстоянии звука от этого двигателя практически не слышно. Хотя это зависит от двигателя – разные двигатели «звучат» по-разному.
В начале видео показан шум от контура тока. Был включен только контур тока с двумя регуляторами токов. В двигателе появился шум, который мой коллега сравнил с шумом от трубы, по которой течет вода. Похоже на «белый» шум. Этот шум рождается из-за шума измерений токов фаз. Регуляторы тока из-за сравнительно большой пропорциональной составляющей (необходима для требуемого быстродействия) ловят все небольшие флуктуации измерения тока и усиливают их, передавая на задание напряжения инвертора. Т.е. изначально ток в двигателе ровный и не шумит, но шумит его измерение, регуляторы тока пытаются его скомпенсировать, «дергают» за напряжение инвертора, тем самым заставляя реальный ток в двигателе на самом деле «шуметь». На осциллограмме это видно вот так:
Рис. 12. Осциллограмма переходного процесса скачка задания (1А) регуляторов тока и их последующий «шум». Показана обратная связь по регуляторам токов (сигнал с АЦП) и выход регуляторов, подающийся на инвертор. В одной клетке по оси времени 4.2мс.
На осциллограмме показан не только шум, но и переходной процесс регуляторов тока при включении. Ток отрабатывается менее чем за 1мс, а переходной процесс близок к настройке на технический оптимум. Шум в измерении тока порядка +-0.02А приводит к изменению выходного напряжения на 20% от текущего, что и слышится как шум. Если в 10 раз замедлить регуляторы, то можно получить такую картину:
Рис. 13. Осциллограмма переходного процесса скачка задания (1А) регуляторов тока с заниженным в 10 раз Кп и Ки по отношению к настройке на технический оптимум. В одной клетке по оси времени 4.2мс.
Регуляторы токов стали мягкие и тихие, как вата, и им абсолютно неинтересно реагировать на какой-то там шум в аналоговом канале – как, впрочем, и на собственное задание…
Далее в видео показаны различные звуки от регулятора положения. Опытов там много, покажу последний случай – автоколебания при чрезмерно завышенном Кп регулятора положения. Так как датчик положения инкрементальный, при большом Кп изменение положения всего на одну метку заставляет «бешеный» регулятор сильно нервничать, подкидывая задание на контур скорости, и, соответственно, на ток. Как-то так:
Рис. 14. Автоколебания контура положения с чрезмерно завышенным Кп. Фиолетовым и красным показан моментообразующий ток статора (задание и фактический), голубым – положение с энкодера в метках (инкрементах), синим – выход регулятора положения (задание на контур скорости).
Видно, как при изменении положения всего на одну метку (один «тик» датчика положения) система управления подкидывает задание тока на 0,3А. Это немалый момент, учитывая номинал двигателя 5А, что приводит к началу движения и, соответственно, колебаниям. На видео видно, как «страшно» звучат автоколебания, хотя положение скачет на одну безобидную метку туда-сюда.
В связи с этим возникает философский вопрос: какие колебания и шумы страшны, а на какие не стоит обращать внимания? Всё зависит от объекта – где применяется сервопривод. Если это трехкоординатный станок с редуктором и люфтами, рука-манипулятор для сварки или быстродействующий сервопривод какого-то рулевого механизма – то там «звон» не так страшен. В таких применениях только именно акустический шум может вызывать недовольство, но на технический процесс едва ли что-то из показанного в видео повлияет. А вот если это прямой привод позиционирования каких-нибудь там подложек на кремниевой фабрике или если это прямой привод микроскопа – вот там шумы не допускаются никакие «от слова совсем». Не то что скрипы контура положения от энкодера, но и даже тот едва слышимый шум от контура тока уже может быть проблемой. Потому что всё это передается на рабочий орган и приведет к нарушению техпроцесса.
Да, нужно сказать, что все те звуки, которые показаны в видео – это не просто звуки. Если схватиться за вал, то все они ощущаются, и очень хорошо. Человеческие пальцы очень чувствительны – гораздо лучше многих датчиков. Даже ощущается тот шум «текущей воды» от регуляторов тока. Точно так же, как от трубы водопровода. Поэтому для задач сервопривода, которые взаимодействуют с человеком, шумы и колебания тоже нежелательны. Представьте себе симулятор пилота с наклоняющейся кабиной, где привода под ней хрустят и стонут.
Как с шумами бороться? Ну, с контуром положения более-менее понятно – нужно ставить более точный датчик. Энкодер из этих опытов на 1000 меток – это датчик «курам на смех» в сфере высокоточного сервопривода. Там если ставят энкодер, то порядка сотни тысяч меток. А чаще ставят аналоговый датчик положения, который выдает синусно/косинусный сигнал. Применяя хорошее АЦП и оверсемплинг (измеряя гораздо чаще, чем это надо, а потом усредняя результат) можно получить еще на порядок большие точности, чем дает энкодер.
Что делать с шумом АЦП в контуре тока? Во-первых, искать источник шума. В данном приводе источник шума был найден – это DC/DC, делающий из входного силового питания приборное 5В и установленный на плате инвертора. Разводка платы не совсем удачная, и DC/DC «фонит» на все рядом проходящие дорожки платы. Сам же АЦП микроконтроллера гораздо менее шумный, чем шум от этого DC/DC. Во-вторых, можно применять тот же оверсемплинг, если производительность АЦП это позволяет. В-третьих, нужно правильно выбирать диапазон измерений. Я работал с двигателем на 5А от преобразователя на 60А. Соответственно, полный диапазон АЦП по измерению тока тоже близок к 60А. Если бы диапазон был 20А, то тот же шум на аналоговый канал после преобразования в амперы оказался бы в три раза меньше.
Но шум от АЦП – это ещё не все. Я не показал в видео один из главных шумов, который не слышно – шум от ШИМ. Частота ШИМ в этих опытах была установлена равной 20кГц – на границе слышимости. Но это не значит, что на вал ротора эти вибрации не передаются. Нужно измерить пульсацию тока в двигателе, вызванную данной частотой ШИМ, пересчитать её в момент, а затем уже можно оценить, «пройдет» она на вал или нет. На рисунке 15 показаны пульсации тока в фазе двигателя, измеренные внешним датчиком и осциллографом.
Рис. 15. Пульсации тока в фазе двигателя при частоте ШИМ 20кГц. Величина пульсаций 0.3А.
Пульсации тока в 0.3А довольно значительны. Вернее, были бы значительны, если бы мы этим приводом собрались позиционировать кремниевые подложки на фабрике Intel. Благо, конкретно таким типам двигателей это не светит и о проблеме можно забыть. Но что делать, если нужно сделать более серьезный привод? Для начала можно увеличить частоту ШИМ. Современные силовые полевые транзисторы могут обеспечить частоту переключений до 500кГц. Однако тут есть… три проблемы.
Первая проблема — с увеличением частоты ШИМ увеличивается влияние так называемого «мёртвого времени» (некоторые называет его бестоковой паузой, но это неправильно – ток там течёт). Это время, когда нижний транзистор инвертора уже выключился, а верхний еще не включился (и наоборот). Это время одно и то же для одного типа транзисторов, и в процентах к периоду ШИМ оно становится всё больше с повышением частоты ШИМ. Мёртвое время искажает выходное напряжение инвертора, добавляя регуляторам тока нелинейности в инверторе.
Вторая проблема – с увеличением частоты ШИМ все сложнее генерировать эту самую ШИМ микроконтроллером. Микроконтроллер делает ШИМ с помощью аппаратного таймера, который «тикает» на единицу с каждым тактом микроконтроллера. Уставкой сравнения с таймером программист выбирает, на какое время открыть ключ. Что выйдет в такой системе с микроконтроллером на 100МГц и частотой ШИМ 500кГц? Делим одно на другое, получаем 200 квантов (дискрет) задания уставки. 200 уставок задания напряжения для ШИМ – это негодно «от слова совсем». Для сервопривода нужно минимум на два порядка больше. Для этого некоторые производители микроконтроллеров встраивают в свои изделия так называемый ШИМ высокого разрешения – позволяют отсчитать время открытия ключа с дискретностью по времени в несколько раз лучше, чем один такт микроконтроллера. В данном микроконтроллере такая возможность есть, однако включить ШИМ высокого разрешения мешает третья проблема.
Третья проблема – датчики токов. В используемом инверторе они шунтового типа и стоят последовательно с нижними ключами инвертора. А это значит, что измерить ток в фазе можно только в тот момент времени, когда открыт нижний ключ. А это значит, что запуск АЦП нужно синхронизировать с работой ШИМ и производить измерение строго в тот момент, когда приоткрывается нижний ключ. Проблема в том, что переходные процессы в аналоговых цепях не успевают закончиться, если частота ШИМ очень высока – ток начинает измеряться с ошибкой. В общем, всё сложно…
Есть принципиально другой путь – некоторые производители сервоприводов вообще отказываются от ШИМ и делают аппаратный контур тока либо на ПЛИС, либо вообще на операционных усилителях, работающих в линейном режиме и рассеивающих на себе всю лишнюю энергию, которую призван экономить ШИМ. Но это уже совсем-совсем другая история.
Выводы
Требования к сервоприводам очень разные – кому-то хватает шагового режима управления для простого медленного ЧПУ станка (цена вопроса драйвер+двигатель пара тысяч рублей), кому-то нужно такое качество поддержания положения, что даже шум контура тока становится проблемой. Данная статья «по верхам» рассказывает о некоторых аспектах работы системы подчиненного регулирования и качества работы контура положения, чтобы познакомить читателя с чем-то, кроме всем известных «шаговиков». Качество работы сервопривода, показанного в данных опытах, на самом деле, очень посредственное, главным образом из-за низкого разрешения датчика положения ротора. При использовании датчика с хорошим разрешением качество регулирования заметно возрастает.
Реклама
Данные опыты были проведены на отладочном комплекте VectorCARD K1921BK01T от ООО «НПФ Вектор», построенного на базе отечественного motorcontrol микроконтроллера K1921BK01T ОАО «НИИЭТ» (ARM Cortex-M4F, 100МГц). В отладочный комплект входит всё оборудование, показанное на этом видео, включая программное обеспечение микроконтроллера в исходных кодах с этой самой трехконтурной системой подчиненного регулирования, а также ПО для наблюдения осциллограмм любых переменных системы управления.
Ссылки по теме на другие мои статьи
Векторное управление электродвигателем «на пальцах»
Способы отладки ПО микроконтроллеров в электроприводе
Новый отечественный motor-control микроконтроллер К1921ВК01Т ОАО «НИИЭТ»