Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Алгоритм позиционирования
Форум разработчиков электроники ELECTRONIX.ru > Силовая Электроника - Power Electronics > Электрические машины, Электропривод и Управление
Страницы: 1, 2, 3, 4
haker_fox
Здравствуйте!
Тема перекочевала отсюда.

В моем приводе это вопрос позиционирования встал ребром. По началу я не считал эту задачу сложной, но теперь понял, что все не так просто...
Застабилизировать скорость, когда вал должен просто вращаться, оказалось делом не сложным. PI регулятор работает.
Но вот вопрос позиционирования раскусить не могу... то, что смог реализовать работает с затухающими колебаниями относительно точки, в которую приводу нужно уйти.
Привожу код, который сможет пояснить суть алгоритма. Но общий принцип такой: берется рассогласованиее по координатам, которое домножается на некоторой коэффициент posTolPGain (пропорциональная часть), получаем скорость, на которой приказываем приводу двигаться. По мере приближения к заданной точке, рассогласование будет уменьшаться, пока не достигнет того минимума, при котором привод останавливается. Остается некоторая ошибка. Эта ошибка (ее величина определяется переменной posTolerance), компенсируется следующей ступенью пропорционального регулятора, у которого коэффициент posTolPGain1, который много больше, чем posTolPGain, в силу малости ошибки. Перввая ступень регулятора работает великолепно, но всегда остается ошибка. Вторая ступень дает колебания. Будут ли они затухающими, или нет, зависит от posTolPGain1, но они есть всегда... Мне не приходит идея, что делать? Использовать еще и интегральную составляющую для устранения ошибки позиционирования? Но это уже будет целых два ПИ-регулятора со своими коэффициентами... многовато их получается... Есть ли какие-нибудь идей у уважаемых профессионалов? Спасибо!
Да, датчик обратной связи - энкодер. Больше ничего нет..., и добалять нельзя. Привода аппаратно готов и какой бы ущербный он не был, придется придумывать, как реализовать позиционирование на энкодере.
Код
/*
    This function must be called every 5 ms in Position Mode
    IN:
        pos - desired position
    OUT:
        servo result codes
*/
uint8_t TServoControl::positionModeProcess(int16_t pos)
{
    int32_t pos_tolerance = pos - getPosition();
    int32_t dp = pos_tolerance;
    if(dp < 0)
        dp*= -1L;
    if(dp > posTolerance)
        {
            int32_t vel = ((pos - getPosition()) * posTolPGain) / 128L;
            if(vel > 0)
                {
                    if(vel > velocityLimit)
                        vel = velocityLimit;
                }
            else
                if(vel < 0)
                    {
                        if(vel < -velocityLimit)
                            vel = -velocityLimit;
                    }
            velocityModeProcess(vel);
        }
    else
        {
            int16_t s_pwm = pos_tolerance * posTolPGain1 / 128L;
            if(s_pwm > 0)
                setServoMode(SERVO_POS_VELOCITY_MODE);
            else
                if(s_pwm < 0)
                    {
                        setServoMode(SERVO_NEG_VELOCITY_MODE);
                        s_pwm*= -1;
                    }
            if(s_pwm > 250L)
                s_pwm = 250;
            if(s_pwm)
                setPWM((uint8_t)s_pwm);
            else
                setServoMode(SERVO_FAST_STOP_MODE);
        }
    return SERVO_OK_RESULT;
}

Требования не высокие: нужно просто перемещаться из текущей точки в заданную. Ускорение и максимальная скорость, до которой разгоняемя - задаются. Погрешность допустима.. ну сколько, даже не знаю как выразить. Ну вал двигателя может провернуться или не довернуться процентов на 20 - 40 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.
Tanya
Цитата(haker_fox @ Nov 20 2008, 10:03) *
Здравствуйте!

Требования не высокие: нужно просто перемещаться из текущей точки в заданную. Ускорение и максимальная скорость, до которой разгоняемя - задаются. Погрешность допустима.. ну сколько, даже не знаю как выразить. Ну вал двигателя может провернуться или не довернуться процентов на 20 - 40 от того значения, которое соответсвует заданной координате. Извините за доморощенные термины. Ну вот, пока вроде все.

А в чем же проблема? Вы должны посчитать зависимость позиция(время).А потом придерживаться этого курса. Например, исходя из постоянной мощности, скорость будет пропорциональна корню из времени, позиция - времени в степени 3/2. Это при разгоне и торможении. В зависимости от длины перемещения возможны случаи как с участком, проходимым с постоянной скоростью, если максимальная скорость ограничена, так и без оного. Возможно, что торможение может быть более быстрым... Это зависит от механики.
_Pasha
Цитата(haker_fox @ Nov 20 2008, 11:03) *
Вторая ступень дает колебания. Будут ли они затухающими, или нет, зависит от posTolPGain1, но они есть всегда...

1) Похоже, что надо PID вместо PI. Множитель дифференциальной части должен быть равен примерно 0,5 от множителя пропорциональной.
2) В microchip были аппликухи про серваки.
haker_fox
Цитата(Tanya @ Nov 20 2008, 16:02) *
А в чем же проблема? Вы должны посчитать зависимость позиция(время).А потом придерживаться этого курса. Например, исходя из постоянной мощности, скорость будет пропорциональна корню из времени, позиция - времени в степени 3/2. Это при разгоне и торможении. В зависимости от длины перемещения возможны случаи как с участком, проходимым с постоянной скоростью, если максимальная скорость ограничена, так и без оного. Возможно, что торможение может быть более быстрым... Это зависит от механики.

Думаю, что в динамичной системе, не стоит уповать на какое-либо постоянство. К сожалению, практика это доказывает. Поэтому и пытаюсь прикрутить П-регулятор. Причем изобретаю велосипед: ставлю двухступенчатый. Т.к. в первой ступени будет либо недобег (низкий проп. коэффициент), либо перебег с возможными колебаниями. Вторая ступень ошибку устраняет.
Может быть я Вас неверно понимаю, если что, не ругайте сильно) Я еще пока только начинающий.

Цитата(_Pasha @ Nov 20 2008, 16:11) *
1) Похоже, что надо PID вместо PI. Множитель дифференциальной части должен быть равен примерно 0,5 от множителя пропорциональной.

Ага, прихожу к тому же. Только Вы еще Д-составляющую предлагаете. В данном случае она будет работать, если мы решим сорвать привод с установившейся точки?
Цитата(_Pasha @ Nov 20 2008, 16:11) *
2) В microchip были аппликухи про серваки.

Они у них замечательные, но не очень приспособленные к жизни. Хотя многое я позаимствовал у них.
Tanya
Цитата(haker_fox @ Nov 20 2008, 11:51) *
Думаю, что в динамичной системе, не стоит уповать на какое-либо постоянство. К сожалению, практика это доказывает. Поэтому и пытаюсь прикрутить П-регулятор. Причем изобретаю велосипед: ставлю двухступенчатый. Т.к. в первой ступени будет либо недобег (низкий проп. коэффициент), либо перебег с возможными колебаниями. Вторая ступень ошибку устраняет.
Может быть я Вас неверно понимаю, если что, не ругайте сильно) Я еще пока только начинающий.

Да, выразилась туманно. Естественно, без регулятора не работает. Он подразумевался. Совет был в том, чтобы правильно выбрать траекторию. Ваша система эквивалентна заряду емкости до нужного значения напряжения от регулируемого источника через индуктивность и резистор. Если резистор маленький и/или меняется неконтролируемым образом (трение), то без колебаний трудно, если хочется побыстрее приехать... Добавление в систему управления дифференциального члена эквивалентно созданию искусственного трения.
haker_fox
Цитата(Tanya @ Nov 20 2008, 17:03) *
Да, выразилась туманно. Естественно, без регулятора не работает. Он подразумевался. Совет был в том, чтобы правильно выбрать траекторию. Ваша система эквивалентна заряду емкости до нужного значения напряжения от регулируемого источника через индуктивность и резистор. Если резистор маленький и/или меняется неконтролируемым образом (трение), то без колебаний трудно, если хочется побыстрее приехать... Добавление в систему управления дифференциального члена эквивалентно созданию искусственного трения.

Вы выразились вполне ясно, просто мой уровень компетенции еще не вырос до нужного значения)
На счет зарядки конденсатора - хорошая аналогия! Чтож, буду эксперементировать с регулятором ПИ(Д) по положению.
dpss
Цитата(haker_fox @ Nov 20 2008, 12:16) *
Вы выразились вполне ясно, просто мой уровень компетенции еще не вырос до нужного значения)
На счет зарядки конденсатора - хорошая аналогия! Чтож, буду эксперементировать с регулятором ПИ(Д) по положению.

А может стоит перед экспериментами поизучать описания и структурные схемы промышленных приводов позиционирования? Неплохая документация у Сименса (серия SIMOTION) , Омрон-Яскава, Бекхофф и многих других. На сайте Техаса http://focus.ti.com/docs/solution/folders/print/195.html
http://focus.ti.com/dsp/docs/dspplatformsc...0&tabId=518
Скачайте и поставьте систему и библиотеку TIDKS для разных типов двигателей. Там есть описания и исходники и учебные работы . Есть библиотека псевдоплавающих вычислений для регуляторов. По регуляторам в журнале СТА http://www.cta.ru/ за последние два года был ряд хороших статей с практическими советами.
haker_fox
Блин!) Еще одна неприятность выяснилась: появляются лишние импульсы от энкодера, если его резко повращать "туда-сюда". Если вращение идет плавно, все ок! Ну не дают денег на промышленный энкодер, пришлось ставить оптрон из мышки..., а они там, видимо, не очень по точности...
PhX
Попробуйте так:
В контур скорости поставьте ПИ регулятор, а в контур положения П.
Должно заработать нормально.

Цитата
Блин!) Еще одна неприятность выяснилась: появляются лишние импульсы от энкодера, если его резко повращать "туда-сюда". Если вращение идет плавно, все ок! Ну не дают денег на промышленный энкодер, пришлось ставить оптрон из мышки..., а они там, видимо, не очень по точности...

А у Вас не те же проблемы что и у меня были =)
haker_fox
Цитата(PhX @ Nov 21 2008, 12:32) *
Попробуйте так:
В контур скорости поставьте ПИ регулятор, а в контур положения П.
Должно заработать нормально.

Я именно так вчера и проэксперементировал! Да. работает, 1 колебание есть и затихает. Но скорость позиционирования не удовлетворяет. Да и при рывке привода с установившейся координаты проходит достаточно много времени (2 сек примерно), пока он вернет все на свои места.
Цитата(PhX @ Nov 21 2008, 12:32) *
А у Вас не те же проблемы что и у меня были =)

Да похоже, что нет. Ведь у меня аппаратная обработка фаз энкодера на триггерах... Нда... нужно смотреть....
PhX
Цитата(haker_fox @ Nov 21 2008, 09:06) *
Но скорость позиционирования не удовлетворяет.

А что предпологается позиционировать-то (крутить двигателем). Есть такие важные понятия как приведенный момент инерции и жескость механических связей... от них многое зависит... smile.gif
А еще есть такой параметр kФ, который также во многом определяет быстродействие. smile.gif
А еще есть максимальный ток якоря... Который лучше бы не превышать... smile.gif
Если хочется не просто позиционировать, а позиционировать быстро ИМХО эти праметры нужно знать.
haker_fox
Цитата(PhX @ Nov 21 2008, 13:45) *
А что предпологается позиционировать-то (крутить двигателем). Есть такие важные понятия как приведенный момент инерции и жескость механических связей... от них многое зависит... smile.gif
А еще есть такой параметр kФ, который также во многом определяет быстродействие. smile.gif
А еще есть максимальный ток якоря... Который лучше бы не превышать... smile.gif
Если хочется не просто позиционировать, а позиционировать быстро ИМХО эти праметры нужно знать.

Позиционировать нужно манипулятор. Три оси. Манипулятор промышленный, готовый. Документации нет. Соответсвенно провести динамический расчет возможности нет. Хотелось, если честно, методом тыка и проб и ошибок. Я полностью понимаю, что это не научно и может привести к провалу. Но времени и рерусов на проведение исследований нет. Также не хочется брать что-либо промышленное, хочется сделать своими руками. В общем задачу можно считать академеической. Но делать надо. Простаивает лабораторное оборудование (робот). Хочется отремонтировать.
MaslovVG
Цитата(haker_fox @ Nov 20 2008, 10:03) *
В моем приводе это вопрос позиционирования встал ребром. По началу я не считал эту задачу сложной, но теперь понял, что все не так просто...
Застабилизировать скорость, когда вал должен просто вращаться, оказалось делом не сложным. PI регулятор работает.
Но вот вопрос позиционирования раскусить не могу... то, что смог реализовать работает с затухающими колебаниями относительно точки, в которую приводу нужно уйти.

Сначала нужно конкретизировать задачу. Что требуется просто позиционирование или полноценный серво (следящий) привод.
1. Позиционирование. На станочном обоудовании обычно осуществляется следующим образом.
Двигатель работает на штатной скорости, на определенном растоянии от заданной точки скорость ступенчато снижается и на малой скорости подходит к заданной позиции. В прецезинных системах ступеней торможения может быть несколько. При таком алгоритме упрощаются требования к электроприводу.
2. В случае слежения простым ПИД регулятором не обойдешся. Слишком много в системе элементов с разными постояными времени. Момент инерции двигателя,механической нагрузки, влияние люфтов, трения. Приходится применять регуляторы с много-петлевой обратной связью. Обычно по току, скорости, плюс по Отклонению кординаты, зачастую нелинейные. Все зависит от механических параметров системы и требуемой точности.
В вашем случае мне кажется наиболее приемлем первый метод.
alexander55
Цитата(haker_fox @ Nov 21 2008, 08:51) *

ПИ-регулятор принципиально дает перерегулирование.
Добавление скоростной компенсации к П-регулятору тоже дает перерегулирование.
Способы устранения перерегулирования:
- задатчики интенсивности
- П-регулятор
- адаптивный регулятор.
PhX
Цитата
Позиционировать нужно манипулятор. Три оси...


Цитата(MaslovVG @ Nov 21 2008, 10:41) *
...Слишком много в системе элементов с разными постояными времени. Момент инерции двигателя,механической нагрузки, влияние люфтов, трения. Приходится применять регуляторы с много-петлевой обратной связью. Обычно по току, скорости, плюс по Отклонению кординаты, зачастую нелинейные. Все зависит от механических параметров системы и требуемой точности.

Это как раз ваш случай. Пока с регуляторами точностью и быстродействием особо не заморачивайтесь. Пусть хоть как-то стабильно заработает. Дальше видно будет. Ограничение по току в первую очередь предусмотрите, а то сожжоте обмотки и все.
Tanya
Цитата(alexander55 @ Nov 21 2008, 09:52) *
ПИ-регулятор принципиально дает перерегулирование.
Добавление скоростной компенсации к П-регулятору тоже дает перерегулирование.


ПИ-регулятор не дает принципиально перерегулирования.
Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.
alexander55
Цитата(PhX @ Nov 21 2008, 07:32) *
Попробуйте так:
В контур скорости поставьте ПИ регулятор, а в контур положения П.
Должно заработать нормально.

Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.

Цитата(Tanya @ Nov 21 2008, 10:15) *
ПИ-регулятор не дает принципиально перерегулирования.
Добавление скоростной компенсации к П-регулятору тоже не дает перерегулирование.

biggrin.gif
haker_fox
Цитата(alexander55 @ Nov 21 2008, 15:23) *
Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.
biggrin.gif

Если привод "пришел" в нужную точку и застабилизировлся в ней, то при попытки отклонить его от этой точки, будет ли он "сопротивляться", те создавать момент на валу, противостоящий отклонению? Ведь ошибка будет не очень большой в этом случае и понадобиться большой П-коэффициент, чтобы усилить ошибку и создать достаточный для сопротивления момент. Вместе с тем, такой большой коэффициент будет приводить к колебаниям, относительно заданной координаты, когда привод "приходит" в нее "издалека", по инерции проскакивает, затем возвращается, а большой П-коэффициент будет только способствовать автоколебаниям. Снвоа напрашивается двуступенчатый контур П-регулятора по положению. Один с относительно небольшим коэффициентом, призван привести привод в заданную точку с 1 - 2 колебаниями. Второй влкючается в работу, когда ошибка позиционирования станет приемлимой после работы первой ступени, и призван обеспечить многократное увеличение момента при попытке дистабилизировать привод...
Уф... простите за туманное изложение мысле... просто с приводами раньше не работал... год назад начал, но, как видите, пока еще не много достиг...
Спасибо Вам за все советы!!!
Tanya
Цитата(alexander55 @ Nov 21 2008, 10:23) *
Правильное решение.
При наличии люфта в механике ПИ-регулятор в контуре положения будет качать.
При наличии люфта надо подходить к точке позиционирования с выбранным люфтом и апериодически.
Это возможно только с П-регулятом в контуре положения.


biggrin.gif

Тогда уж и без люфта будет качать...
Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет.
alexander55
Цитата(Tanya @ Nov 21 2008, 10:43) *
Тогда уж и без люфта будет качать...

Затухающе, а с люфтом постоянно - устойчивые незатухающие колебания.

Цитата(Tanya @ Nov 21 2008, 10:43) *
Все, что Вы пишите справедливо только для случая, когда стационарное выходное воздействие строго равно нулю, что бывает... иногда... не спорю. А в общем случае нет.

Введением ПИ-регулятора астатизм разомкнутой системы становится равным 2,
с П-регулятором - 1.
PhX
Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?
Tanya
Цитата(haker_fox @ Nov 21 2008, 10:36) *
Если привод "пришел" в нужную точку и застабилизировлся в ней, то при попытки отклонить его от этой точки, будет ли он "сопротивляться", те создавать момент на валу, противостоящий отклонению? Ведь ошибка будет не очень большой в этом случае и понадобиться большой П-коэффициент, чтобы усилить ошибку и создать достаточный для сопротивления момент. Вместе с тем, такой большой коэффициент будет приводить к колебаниям, относительно заданной координаты, когда привод "приходит" в нее "издалека", по инерции проскакивает, затем возвращается, а большой П-коэффициент будет только способствовать автоколебаниям. Снвоа напрашивается двуступенчатый контур П-регулятора по положению. Один с относительно небольшим коэффициентом, призван привести привод в заданную точку с 1 - 2 колебаниями. Второй влкючается в работу, когда ошибка позиционирования станет приемлимой после работы первой ступени, и призван обеспечить многократное увеличение момента при попытке дистабилизировать привод...
Уф... простите за туманное изложение мысле... просто с приводами раньше не работал... год назад начал, но, как видите, пока еще не много достиг...
Спасибо Вам за все советы!!!

Нет, ТАК ничего не нужно перестраивать, - правильно настроенный регулятор предназначен для устранения малых отклонений в квазистационарном режиме. Поэтому-то проще всего "вести" систему по правильной фазовой траектории...плавненько так... и не перестраивать ничего. То, что пишет alexander55 применимо в некотрых случаях... Например, если червячная передача, или система перемещается строго горизонтально...
alexander55
Цитата(PhX @ Nov 21 2008, 10:51) *
Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?

Уточню вопрос.
Где стоит датчик положения на валу двигателя или на валу механизма ?
Tanya
Цитата(alexander55 @ Nov 21 2008, 10:50) *
Затухающе, а с люфтом постоянно - устойчивые незатухающие колебания.


Введением ПИ-регулятора астатизм разомкнутой системы становится равным 2,
с П-регулятором - 1.

Нет, не всегда будут колебания. И даже с люфтом...
А зачем нам управлять разомкнутой системой?
haker_fox
Цитата(PhX @ Nov 21 2008, 15:51) *
Такой вопрос:
Вы пока отдельно движком крутите или с подключенной механикой?

И так и так. Но в основном отлаживаюсь на отдельном двигателе. Когда есть результаты, подключаю привод к манипулятору.

Цитата(Tanya @ Nov 21 2008, 15:53) *
Нет, ТАК ничего не нужно перестраивать, - правильно настроенный регулятор предназначен для устранения малых отклонений в квазистационарном режиме. Поэтому-то проще всего "вести" систему по правильной фазовой траектории...плавненько так... и не перестраивать ничего. То, что пишет alexander55 применимо в некотрых случаях... Например, если червячная передача, или система перемещается строго горизонтально...

К сожалению, не совсем понял, о чем говорится( Как вести систему, да еще плавно, если рассогласование координат по мере приближения к заданной точке уменьшается, следовательно и уменьшается выходной сигнал с П-регулятора, в точку привод выйдет на почти нулевой скорости. И, если даже погрешность будет нулевой, то что его заставит противостоять попытке вывести привод из заданной точки? Ведь по какой причине он плавно (на небольой скорости) пришел в эту точку, также плавно он и будет сопротивляться, что не приемлимо...

Цитата(alexander55 @ Nov 21 2008, 15:55) *
Уточню вопрос.
Где стоит датчик положения на валу двигателя или на валу механизма ?

На двух звеньях датчик стоит на ходовом валу механизма, передаточное отношения зубчатой передачи от двигателя к валу -1. На одном звене вал двигателя через шестерню передает движение ходовому валу, и через еще одну шестерню от двигателя на датчик.
alexander55
Цитата(Tanya @ Nov 21 2008, 10:58) *

Потому что в замкнутой системе получится ПФ
- с ПИ - колебательное звено
- с П - апериодическое звено.
Извините, срочно надо выезжать на объект.
Tanya
Цитата(haker_fox @ Nov 21 2008, 11:39) *
К сожалению, не совсем понял, о чем говорится( Как вести систему, да еще плавно, если рассогласование координат по мере приближения к заданной точке уменьшается, следовательно и уменьшается выходной сигнал с П-регулятора, в точку привод выйдет на почти нулевой скорости. И, если даже погрешность будет нулевой, то что его заставит противостоять попытке вывести привод из заданной точки? Ведь по какой причине он плавно (на небольой скорости) пришел в эту точку, также плавно он и будет сопротивляться, что не приемлимо...

Поясню. Регулятор не должен знать, что мы плавно-плавно движемся. Для него все должно быть квазистационарно.
Представьте себе график - по одной оси координата, по другой - скорость. Это и будет фазовое пространство. Линия, выходящая из некоторой точки на оси абсцисс (положение) и приходящая на эту же ось, будет задавать движение из одной точки в другую с нулевой начальной и конечной скоростями.
Если правильно вести систему по такой правильной (допустимой) траектории, то мы не превысим максимальной скорости, ускорения... и все нам с рук сойдет... гладко. Для этого мы должны запрограммировать задатчики перемещения и, возможно, скорости. Т.е. регулятор должен отрабатывать отклонения текущих значений от заданных... тоже текущих... по программе.



Цитата(alexander55 @ Nov 21 2008, 11:44) *
Потому что в замкнутой системе получится ПФ
- с ПИ - колебательное звено
- с П - апериодическое звено.
Извините, срочно надо выезжать на объект.

В замкнутой системе получится произведение... И какое оно будет? Зависит от управляемого объекта ....
Осторожнее там... на объекте.... берегите себя...
PhX
Цитата(haker_fox @ Nov 21 2008, 12:41) *

Существенно ли меняется момент инеции приведенный к валу исполнительного двигателя в завичимости от углов поворота остальных осей?
Если существенно, то вам придется усложнять систему управления или снижать требования по скорости.
Вообще в манипуляторах рацональнее использовать систему управления, которая позволяет реализовать трапецеидальный закон изменения скорости с ограничением рывка и ускорения.
dpss
Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой. Крутящий момент мотора зависит только от тока в обмотке.
Без контура управления по току привод будет с плохой устойчивостью и никакое шаманство с регуляторами не поможет. Разрешение энкодера должно быть как минимум в 10 раз выше разрешения привода.
Tanya
Цитата(dpss @ Nov 21 2008, 12:47) *
Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой. Крутящий момент мотора зависит только от тока в обмотке.
Без контура управления по току привод будет с плохой устойчивостью и никакое шаманство с регуляторами не поможет. Разрешение энкодера должно быть как минимум в 10 раз выше разрешения привода.

Можно током и не сильно управлять (только ограничить), а его значение использовать как дифференциальный член в контуре скорости. Это если момент пропорционален току.
dpss
На двух звеньях датчик стоит на ходовом валу механизма, передаточное отношения зубчатой передачи от двигателя к валу -1. На одном звене вал двигателя через шестерню передает движение ходовому валу, и через еще одну шестерню от двигателя на датчик.
[/quote]
С шестернями ничего хорошего не получится . Обычно энкодер либо монтируют на торец двигателя , либо
на конец ходового винта. Соединяют безлюфтовыми муфтами .
haker_fox
Как все сложно для меня. Может быть и вправду, использовать метод, предложенный уважаемым MaslovVG, т.е. ступенчато подходить к заданной точке?
Tanya
Цитата(haker_fox @ Nov 21 2008, 13:23) *
Как все сложно для меня. Может быть и вправду, использовать метод, предложенный уважаемым MaslovVG, т.е. ступенчато подходить к заданной точке?

Тут Вам все советуют примерно одно и то же... Только разными словами.
haker_fox
Цитата(Tanya @ Nov 21 2008, 18:29) *
Тут Вам все советуют примерно одно и то же... Только разными словами.

Наверно я пока путаюсь в этих разных словах...
Tanya
Цитата(haker_fox @ Nov 21 2008, 13:41) *
Наверно я пока путаюсь в этих разных словах...

Чем ступенчатое проще бесступенчатого? На самом деле... тоже... многоступенчатого.
Вы сильно не переживайте. Правильные (грубые) системы управления работают (должны...) при довольно большом изменении параметров регулирования и внешних. Если не стремиться к рекордным скоростям, то ... разные варианты дадут примерно одинаковый результат... Если нет особых... гнусностей - нелинейности, задержек (люфтов), хитрого трения и проч... Почитайте... симулятор... мозги... железо... если плохо - повторить цикл.
PhX
Цитата(Tanya @ Nov 21 2008, 14:57) *
Почитайте... симулятор... мозги... железо... если плохо - повторить цикл.

+1
Как бы я поступил на вашем месте:
1. Взял бы хорошую книгу по приводу. Можно даже для техникумов, для начала.
(забыл к сожалению авторов... sad.gif )
2. Прочитал бы про электропривод с подчиненным регулированием координат.
3. Провел идентификацию механики и двигателя (приняв систему одномассовой)
4. Загнал бы в симулятор аля MatLab simulink.
5. После получения удовлетворительных результатов занялся программированием МК.
Просто так не бывает, чтобы и точно и просто и быстро. smile.gif
Приходится чем-то жертвовать.
MaslovVG
Цитата(haker_fox @ Nov 21 2008, 13:23) *
Как все сложно для меня. Может быть и вправду, использовать метод, предложенный уважаемым MaslovVG, т.е. ступенчато подходить к заданной точке?


Вообще то самым лучшим и наиболее дешевым решением вашей задачи яляется приобретение готового привода. Благо сейчас их существует море на все вкусы и требования. Естественно нужно четко определить что в конце концов требуеся. А это вообще определяеся в основном конструкцией и механическими характеристиками манипулятора.

Все остальное целесообразно только в целях образования и приобретения практических навыков в общем лабораторная работа по теории автоматического регулирования..
dpss
Цитата(PhX @ Nov 21 2008, 14:17) *
+1
Как бы я поступил на вашем месте:
1. Взял бы хорошую книгу по приводу. Можно даже для техникумов, для начала.
(забыл к сожалению авторов... sad.gif )
2. Прочитал бы про электропривод с подчиненным регулированием координат.
3. Провел идентификацию механики и двигателя (приняв систему одномассовой)
4. Загнал бы в симулятор аля MatLab simulink.
5. После получения удовлетворительных результатов занялся программированием МК.
Просто так не бывает, чтобы и точно и просто и быстро. smile.gif
Приходится чем-то жертвовать.

1.Литературы на тему приводов в сети - воз и малая тележка и даже на русском. Не мешало бы начать со старого толстого учебника по ТАУ.
2.Раздобыл бы коллкторный мотор с уже установленным в нем энкодером с модулем не меньше 500. Начинать лучше с коллекторного - на первых порах не придется разбиратсья с векторным управлением.
3.Контроллер , который будет управлять мотором , должен иметь такой размер памяти , который позволил бы писать логи переменных привода (фиксируется в реальном времени ). По этим данным с помощью например LABVIEW можно построить фазовые диаграммы, оценить реакцию на "одиночный импульс" и т.д.
4. По началу экспериментировать лучше на моторе без исполнительного механизма. Если привод выйдет из под контроля не придется шар-винтовую пару рихтовать молотком .
_Sam_
Цитата
Чем ступенчатое проще бесступенчатого? На самом деле... тоже... многоступенчатого.

Ну вообще то проще и существенноsmile.gif
Всего то надо 2-3 ступени торможения организовать и никакого перерегулирования! Точность думаю устроит за глаза и за уши, учитывая, что используется такой грубый датчик. У меня на больших станках при помощи такого алгоритма точность получалась порядка 5микрон(c микронным датчиком), и в люфтах система чувствовала себя вполне хорошоsmile.gif.

Сделать нормальную систему управления c замкнутой обратной связью, которая работает в люфтах с одним датчиком обратной связи по положению и не разбивает механику очень непросто. Назовите например хотя бы одну систему ЧПУ, которая умеет это делать.

Кстати если ваша механика ещё и подклинивать изредка будет, то думаю вам ещё не один год понадобиться для завершения этого проекта.
haker_fox
Всем ответившим за последние 12 часов огромное спасибо!!! Сейчас выходные будут, я немного должен обмозговать все сказанное. По-моему, в моем приводе есть грубые ошибки, в частности измерение скорости ведется только каждые 50 мс, т.е. ОГРОМНЕЙШЕЕ запаздываение, тогда как даже с таким грубым энкодером, как у меня, скорость можно получать за время меньшее, чем 0.007 с. В общем надо подумать!
Еще раз большое спасибо!
evgeny_ch
Цитата(haker_fox @ Nov 22 2008, 08:57) *
...
По-моему, в моем приводе есть грубые ошибки, в частности измерение скорости ведется только каждые 50 мс, т.е. ОГРОМНЕЙШЕЕ запаздываение, тогда как даже с таким грубым энкодером, как у меня, скорость можно получать за время меньшее, чем 0.007 с. В общем надо подумать!
Еще раз большое спасибо!

Вы встали на верный путь. Надо уменьшать время расчёта упр. воздействия на двигатель.
Неплохо смотреть ФЧХ всего привода. Заодно поичитайте, что такое Jerk.
Коли тут упоминают CNC, есть повод добавить упреждающее регулирование.
alexander55
Цитата(dpss @ Nov 21 2008, 12:47) *
Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой.

Подчиненное регулирование, тсз.
Рекомендуемые настройки - на модульный оптимум и симметричный оптимум с фильтром для унификации.
haker_fox
Я вот задумался, а может быть реализовать измерение скорости за счет противоЭДС? Таким образом, время измерения будет принебрежительно мало. А "грубый" энкодер можно оставить только для измерения координаты, благо особая точность не нужна. Как Вы считаете, уважаемые профессионалы?
Просто увеличивать разрядность энкодера, это значит загрузить МК (фазы энкодера висят на прерываниях), да и проблематично это сейчас - менять энкодер, а вот привод чуть доработать можно.
Какие могут быть подводные камни с измерением противоЭДС? Микроконтроллер ATmega168.
Спасибо!
Jurenja
haker_fox, для понимания "почему так все работает" и "в чем причина переколебаний" будет очень полезна любая литература по устойчивости систем с отрицательной обратной связью.
Согласен с dpss:
Цитата
Типовая система позиционирования обычно содержит три контура управления - по скорости , по полoжению, по току вложенные один в другой...
alexander55
Цитата(haker_fox @ Nov 26 2008, 17:30) *
Какие могут быть подводные камни с измерением противоЭДС?

ЭДС (E=Ke*w) - расчетная величина. Отсюда и все проблемы.
U=E+I*R+L*dI/dt
R - меняется от температуры,
составляющую L*dI/dt учитывать достаточно сложно.
Но в контурных системах есть некоторое упрощение из-за наличия датчика положения (не требуется выдерживать точно угловую скорость двигателя, т.к. "вытягивание" производится за счет датчика положения).
haker_fox
Цитата(alexander55 @ Nov 27 2008, 13:57) *
ЭДС (E=Ke*w) - расчетная величина. Отсюда и все проблемы.
U=E+I*R+L*dI/dt
R - меняется от температуры,
составляющую L*dI/dt учитывать достаточно сложно.
Но в контурных системах есть некоторое упрощение из-за наличия датчика положения (не требуется выдерживать точно угловую скорость двигателя, т.к. "вытягивание" производится за счет датчика положения).

Ладно, значит этот метод отпадает. Будем пробывать и далее энкодером измерять.
Я выделил два метода измерения угловой скорости с помощью энкодера:
1. Измеряется количество импульсов энкодера за еденицу времени, в моем случае за 50 мс, отсюда и запаздывание. Этот способ хорош тем, что зависимость угловой скорости от количества импульсов строго линейна, соответственно погрешность измерений минимальная. Но для энкодера, у которого импульсов на оборот мало, нужно либо увеличивать время измерений, для снижения погрешности, но это приведет к огромному запаздыванию; либо увеличивать разрешение энкодера, а время измерения уменьшить для снижения запаздывания.
2. Измерять период между импульсами энкодера. Метод хорош тем, что время отклика минимально (выше писал, что менее 7 мс), но возрастает погрешность из за параболической (обратной) зависимости угловой скорости от периода между импульсами энкодера. Это приводит к неустойчивой работе регулятора.

Вполне возможно, что второй способ я реализовал криво. Это еще толком не выяснено. Радует одно, что в этом случае хоть и регулятор сбоит, но время отклика очень мало. Сбои регулятора, как я уверен, только из за погрешностей измерений вторым способом, потому что при первом способе таких сбоев нет. Но увеличивается время отклика.

З.Ы. Мне немного неловко оперировать здесь совими мыслями, ведь это всем известные прописные истины. Но я прохожу этот путь, потому что мне интересно работать над своим приводом. И я верю, что он заработает согласно тому, как я задумал. И это осуществится благодаря Вашим консультациям, уважаемые специалисты! Спасибо!
Tanya
Цитата(haker_fox @ Nov 27 2008, 09:43) *
З.Ы. Мне немного неловко оперировать здесь совими мыслями, ведь это всем известные прописные истины. Но я прохожу этот путь, потому что мне интересно работать над своим приводом. И я верю, что он заработает согласно тому, как я задумал. И это осуществится благодаря Вашим консультациям, уважаемые специалисты! Спасибо!

Еще бесплатный совет... Заведите обратную связь по току через обмотку.
Если момент пропорционален току... минус момент трения, то ток будет задавать ускорение, а интеграл (лучше аналоговый интегратор) будет давать приращение момента импульса... скорости. Это лучше, чем управлять вслепую и ждать сигнала рассогласования.. задержка меньше будет... Типа... так...
На интегратор поступает управляющее воздействие. Туда же с обратным знаком сила тока через обмотку. Компаратор (или АЦП контроллера), наблюдающий за интегратором включает-выключает мотор. Шим сам собой получается...такой, какой надо.
haker_fox
Цитата(Tanya @ Nov 27 2008, 17:47) *
Еще бесплатный совет... Заведите обратную связь по току через обмотку.
Если момент пропорционален току... минус момент трения, то ток будет задавать ускорение, а интеграл (лучше аналоговый интегратор) будет давать приращение момента импульса... скорости. Это лучше, чем управлять вслепую и ждать сигнала рассогласования.. задержка меньше будет... Типа... так...
На интегратор поступает управляющее воздействие. Туда же с обратным знаком сила тока через обмотку. Компаратор (или АЦП контроллера), наблюдающий за интегратором включает-выключает мотор. Шим сам собой получается...такой, какой надо.

Я верно понимаю, что это что-то типа электронной релейной схемы? Таким образом, например, работают регуляторы напряжения, у которых есть опора на делителях, а внутри компаратор, который выход с опорой сравнивает и дает PWM на выходе. Быстродействие, конечно, огромное. Чтож, подумаю над этим вариантом! Благодарю за совет!
bb-offtopic.gif Если бесплатный совет такой великолепный, то какой бы был за деньги?))))
Tanya
Цитата(haker_fox @ Nov 27 2008, 13:34) *
Чтож, подумаю над этим вариантом! Благодарю за совет!
bb-offtopic.gif Если бесплатный совет такой великолепный, то какой бы был за деньги?))))

Если подумаете, то догадаетесь, что если у Вас есть программа изменения скорости, то на этот интегратор надо что-то подавать, дабы облегчить работу управляющей системы...
haker_fox
Выкладываю пару графиков.
Каждый график иллюстрирует работу привода при минимальной и при максимальной скорости. Из графиков четко видно, что на минимальной скорости есть запаздываение, причем существенное.
Откуда оно берется, для меня пока загадка. Придется далее анализировать систему.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.