Кто работал с промышленной сервой?
- Войдите на сайт для отправки комментариев
Есть задача сделать серво-двигатель из обычного асинхронного мотора, частотного преобразователя и энкодера, прикрепленного на вал асинхронного мотора.
У частотного преобразователя есть аналоговый вход +/- 10 вольт, которым, собственно, и задается скорость вращения и направление. Частотник с векторным управлением, поэтому вроде как должен обеспечивать скорости на асинхроннике, вплоть до нулевых с моментом удержания (хотя удержание, в общем-то и не нужно).
Понятно, что получив на вход нужное число импульсов с энкодера, поздно уже будет посылать в частотник сигнал остановки, т.к. двигатель по инерции прокрутится гораздо дальше заданного положения.
Вопрос: какие алгоритмы применяются в таком варианте регулирования и какие ключевые параметры присутствуют? Может уже есть готовые проекты на Ардуино для решения аналогичных задач?
http://gelikor.ru/electroprivod/servodrive.html
пишут энкодер и все. ну и контроллер. сответственно твой частотник не подойдет так как такого не умеет
http://www.itrostov.ru/_4522843/
Довольно тривиальная для ТАУ задачка. Единственное любопытное - то что с енкодера можно снимать два параметра: число импульсов (их надо отнять от заданного, это и будет отклонение выходной величины от заданного) и время между импульсами (с точностью до коэффициента величина обратная скорости, т.е. первая производная положения по времени). Для начала попробуйте задавать частоту на преобразователь пропорционально отклонению, поиграйтесь коэффициентом пропорциональности, может и пойдет. Если нет, то подключайте второй параметр ( обратную от времени величину) опять таки некоторый коэффициентик введите, поиграйтесь.
Logik, Ну, т.е. по сути просто брать стандартные алгоритмы ПИД-регуляторов и от них плясать?
Тут еще дело в том, что нагрузка на валу двигателя может быть разная, т.е. коэффициенты эти, получается, будут динамически формироваться уже в процессе перемещения вала? Это же, опять же, классическое ПИД-регулирование, так я понимаю?
вам нужно создать отрицательную обратную связь между целевым значением энкодера и управляющим напряжением на входе частотника
т.е. если энкодер отклоняется в плюс, надо генерить отрицательное напряжение на входе частотника, если отклонение в минус, то генерируем плюс. Какой размах управляющего напряжения генерить в зависимости от отклонения на энкодере - это или вопрос точного расчета под задачу (но нужны будут детальные данные по связи момента на валу мотора в зависимости от напряжения управления на частотнике, нужно будет всю кинематику считать) или подбора экспириментально
в общем то все это можно сделать и на агалоговой схемотехнике используя операционные усилители (примерно так и работает обычная аналоговая серва)
Ага, спасибо!
Ну, в общем-то, все ясно. Просто садись и пиши :)
На буржуйском Ардуино-форуме я перед этим порыскал, в надежде найти что-то уже готовое. Тем про управление промышленной сервой много, но к конкретной реализации так никто и не подошел. Или реализовал и потом результаты зажал :)
Что ж, попробую реализовать.
Есть задача сделать серво-двигатель из обычного асинхронного мотора, частотного преобразователя и энкодера, прикрепленного на вал асинхронного мотора.
По-хорошему, тут должен быть, как минимум, еще и редуктор. Управлять ПОЛОЖЕНИЕМ вала асинхронного двигателя непосредственно весьма проблематично даже с помощью хорошего ПЧ. Очень велик риск получить неустойчивую систему. Посмотрите какие редукторы стоят в "обычных" сервах. Это не только для увеличения момента двигателя.
Частотник с векторным управлением, поэтому вроде как должен обеспечивать скорости на асинхроннике, вплоть до нулевых с моментом удержания (хотя удержание, в общем-то и не нужно).
асинхронник+ПЧ != постоянник. Особенно на "ползучих" скоростях, характерных для сервоприводов.
Вопрос: какие алгоритмы применяются в таком варианте регулирования и какие ключевые параметры присутствуют? Может уже есть готовые проекты на Ардуино для решения аналогичных задач?
В промышленности чаще всего используют ПИД. В некоторых частотниках он есть уже встроенный. Дело осложняется тем, что Вам нужно стабилизировать положение, а не скорость. Это тяжелее.
Для сервы лучше поискать не просто импульсный датчик скорости (энкодер), а цифровой датчик положения вала, это позволит избежать массы ненужных трудностей с переводом "булек" в позицию.
По-хорошему, тут должен быть, как минимум, еще и редуктор.
Да, редуктор будет обязательно. Как минимум 1:10, т.к. двиг 1300 об/мин, а нужно не более 200.
В промышленности чаще всего используют ПИД. В некоторых частотниках он есть уже встроенный. Дело осложняется тем, что Вам нужно стабилизировать положение, а не скорость. Это тяжелее.
Да, у меня в частотнике ПИД есть, но понятное дело, что нужен контроллер положения. Затем и собираюсь применить Ардуинку :)
Для сервы лучше поискать не просто импульсный датчик скорости (энкодер), а цифровой датчик положения вала, это позволит избежать массы ненужных трудностей с переводом "булек" в позицию.
Тут как раз я хотел отделаться более бюджетно - навесить на вал блин с дырками и гнать импульсы в Ардуину через оптопару от принтера. Поэтому бульки считать все-таки придется - не такая уж и проблема :) Мне пока сильно большая точность не нужна, а промышленные энкодеры уж очень нехоббийных денег стоят!
Бульки вам дадут только информацию об относительном изменении положения
как вы из него будете абсолютные координаты высчитывать?
Тут как раз я хотел отделаться более бюджетно - навесить на вал блин с дырками и гнать импульсы в Ардуину через оптопару от принтера. Поэтому бульки считать все-таки придется - не такая уж и проблема :) Мне пока сильно большая точность не нужна, а промышленные энкодеры уж очень нехоббийных денег стоят!
Если бы речь шла о стабилизации скорости, то "блин с дырками" мог бы и прокатить. В самодельном варианте Вы не сможете отследить фактическое направление движения вала. Оно запросто будет не совпадать ни с уставкой, ни с рассогласованием. Плюс сложности с определением положения при старте системы и необходимость время от времени синхронизировать расчетное положение с фактическим по реперным точкам. Попробуйте поискать именно датчик положения, может не оптический, может не промышленный (не для промышленного применения). Но из самодельного "блина с дырками" в управляемую позицию... Наплачетесь... :))
как вы из него будете абсолютные координаты высчитывать?
на асинхронном двигателе - никак.
если коллекторным двигателем, хоть как-то, то асинхронным, даже если будешь знать положение, то корректировать можно будет в пределах одного или более оборота двигателя.
Помнится, как-то я смотрел даташит на один оптический датчик (по-моему даже на тот, что от принтера)... Так там на выходе сигнал аналоговый, и фаза его зависит от того, в какую сторону крутится энкодер. Будто бы там два фотоприемника, и можно отследить, дырка пролетает слева направо или справа налево, в зависимости от того, с какого сигнал придет раньше.
Ну а начальное положение - да, по дополнительной нулевой "дырке" в блине и отдельной оптопаре, видимо.
как вы из него будете абсолютные координаты высчитывать?
на асинхронном двигателе - никак.
если коллекторным двигателем, хоть как-то, то асинхронным, даже если будешь знать положение, то корректировать можно будет в пределах одного или более оборота двигателя.
Вы не забывайте про редуктор. Конечно асинхронник трудно поймать в пределах одного оборота.
Энкодер будет ставиться уже на ось после редуктора.
(Хотя я еще с векторным управлением на частотнике не игрался. Может и можно...)
Вы не забывайте про редуктор. Конечно асинхронник трудно поймать в пределах одного оборота.
Энкодер будет ставиться уже на ось после редуктора.
тогда от старой стиральной машины берите плату управления двигателем - датчик там такой, меряет обороты вала двигателя.
Помнится, как-то я смотрел даташит на один оптический датчик...
Вы уже начинаете описывать не "блин с дырками", а "фабричный прибор", где многое учтено. Продолжайте поиски. :)) Вам нужен датчик положения. В Вашем случае даже простой датчик положения (может быть даже самодельный, только по устройству - истинного, а не расчетного положения) много предпочтительней датчиков скорости с последующим пересчетом в позицию.
датчик оборотов двигателя(см. выше) на валу двигателя, концевики и энкодер на выходе - думаю, будет более чем достаточно
датчик оборотов двигателя(см. выше) на валу двигателя, концевики и энкодер на выходе - думаю, будет более чем достаточно
Чтобы получить позицию нужно проинтегрировать скорость. Даже при классическом тахогенератоере, дающим весьма точно скорость со знаком, наличие конечной точности замера скорости, зоны нечувствительности, некоторой нелинейности характеристики, ограниченной точности расчета при активном движении весьма быстро расчетная позиция и фактическая начинают расходится. Причем скорость нарастания и величина ошибки сильно зависят от характера движения. Это компенсируют принудительным наездом на репер через определенное на практике время работы. Но тащить на репер вал придется вместе с нагрузкой. Допустимо ли это в данном случае - неизвестно. Да и понятие "достаточно" при отсутствии ТЗ... В химии, атомке, энергетике использовать для управления расчетное положение управляющих задвижек запрещено. В ЦТП используют задвижки и без датчика, и без расчета.