Страница 5 из 11
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 15:41
Lexxa
И вообще. Скорость вращения двигателем это единственное чем мы можем управлять.
Крайне неправильно использовать в качестве регулируемого ПИДом параметра положение. Никакой мягости хода не будет.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 16:22
Nick
хмм... интересно, как это можно замерить? вот скажем будет у меня серва, повешу на нее блин от штанги и буду гонять. Что нужно измерять, чтобы понять какой вид управления хуже?
ferror?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 16:24
Lexxa
ну хоть бы и ferror.
Ник, координаты можно только отслеживать, а управлять только скоростью при условии того, что момент двигатель держит.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 22:10
xentaur
Lexxa писал(а):
ооооооооооооочень важно по какой траектории сверло придет в точку сверления!!!!
Читайте внимательней -
станок сверлильный, по контуру идти не нужно. Для сверлильных важна безопасная высота. Пришли в точку опустили пиноль, просверлили, подняли. Всё.
Lexxa писал(а):
Нет. Если управляешь скоростью, то контролировать надо скорость (про ПИД), и одновременно контролировать положение (про траекторию)
Все современные серовприводы имеют двойной контур ПИД - момент и скорость. Не современные - только момент. Поддержанием заданной(расчетной) скорости занимается в этом случае ЧПУ, а привод обеспечивает лишь заданный момент. Поэтому если, например, сервопривод имеет управление +-10В, то супер неправильно подгонять значения PID, регулирующего положение, чтобы станок нормально ездил.
Заблуждение. Управление +-10В это всего лишь аналоговый способ задания. Может задавать что угодно (скорость, момент, положение, температуру, давление и т.д.).
Для приводов подач задают скорость (аналог или цифра не имеет значения), как сервопривод будет поддерживать скорость это его проблемы. С энкодера получаем положение каждые 1/1000 секунды. А что такое скорость? Ээто путь делить на время. Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
И про двойной ПИД. Серва делает ПИД по скорости,а УЧПУ по положению. Это и есть двойной контур. Но его может и не быть, если серва не использует ПИД (шаговый привод с заданием скорости), а ПИД по положению задействован.
P.S. Настройка ПИД сервы и УЧПУ это разные вещи. Сперва нужно серву настроить, а потом УЧПУ.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 23:41
Nick
Ну если честно, то и сверлильному нужна стабильная подача. А для этого надо следовать траектории.
А скачки подачи могут серьезно навредить инструменту.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 01 июн 2012, 23:52
xentaur
Nick писал(а):Ну если честно, то и сверлильному нужна стабильная подача. А для этого надо следовать траектории.
А скачки подачи могут серьезно навредить инструменту.
Для позиционирования стабильной подачи не надо. Для сверления да.
Ну хоть историей ЧПУ поинтересуйтесь. С чего начиналось и что в перспективе.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 02 июн 2012, 22:07
Lexxa
xentaur писал(а):Читайте внимательней - станок сверлильный, по контуру идти не нужно
нужно и по контуру иногда зайти в точку сверления, чтобы например не ударить инструментом в заготовку, а безопасной высоты может не хватить, это я уже проходил.
xentaur писал(а):Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
Заблуждение. каждую тысячную секунды мы получаем положение. А скорость это пройденный путь делить на время))
xentaur писал(а): Серва делает ПИД по скорости,а УЧПУ по положению.
xentaur писал(а): Настройка ПИД сервы и УЧПУ это разные вещи. Сперва нужно серву настроить, а потом УЧПУ.
Это ясно как светлый день
xentaur писал(а):Серва делает ПИД по скорости,а УЧПУ по положению
Ник, поясни, какой из компонентов ЕМС занимается планированием траектории? Мне думается, что моушн, так что ПИД по положению тут совсем непричем.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 июн 2012, 20:25
xentaur
Lexxa писал(а):
xentaur писал(а):Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
Заблуждение. каждую тысячную секунды мы получаем положение. А скорость это пройденный путь делить на время))
xentaur писал(а):С энкодера получаем положение каждые 1/1000 секунды. А что такое скорость? Ээто путь делить на время. Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
Вот пример. За один период опроса с энкодера считали 133 импульса. Время периода 0.001с. Внимание вопрос - какая была скорость вращения вала, если энкодер имеет 1000 рисок (4000 имп/об квадратура)?
Вал провернулся на 133имп/4000имп/об=0.03325 об.
Скорость 0.03325об/0.001с=33,25об/с=1995об/мин.
Всё просто

Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 июн 2012, 20:46
Lexxa
Нет понятия скорость вращения, есть касательная, это раз.
Понятие скорость в широком смысле это быстрота изменения некоторой величины, это два, в школе проходят.
В нашем случае скорость это (X0-X)/t, где Х0 - начальная координата, Х - текущая координата, t - время наблюдения, равное 1 мс.
И если внимательно посмотреть на то, что выдает 5i20 с энкодера, то там есть и скорость (с учетом редуктора), и положение, то сразу всё станет ясно, что такое скорость, а что положение.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 июн 2012, 21:22
xentaur
Lexxa писал(а):Нет понятия скорость вращения, есть касательная, это раз.
Понятие скорость в широком смысле это быстрота изменения некоторой величины, это два, в школе проходят.
В нашем случае скорость это (X0-X)/t, где Х0 - начальная координата, Х - текущая координата, t - время наблюдения, равное 1 мс.
И если внимательно посмотреть на то, что выдает 5i20 с энкодера, то там есть и скорость (с учетом редуктора), и положение, то сразу всё станет ясно, что такое скорость, а что положение.
Скорость вращения через передачи преобразуется в линейную скорость и то не для всех механизмов. В некоторых так вращением и остается.
Быстрота изменения некоторой величины это производная. V=dx/dt. a=dv/dt. (только не нужно сюда релятивистскую механику приплетать).
Что конкретно выдает 5i20 с энкодера Я не знаю. В большинстве систем данные с энкодера попадают в инкрементальный/декрементальный счетчик/регистр и УЧПУ считывает значение регистра. Думаю в 5i20 тоже самое. Однако Я встречал плату управления движением (motion controller) в которых ПИД железный на борту, а управление на языке высокого уровня. Команды записываются в память ПК разделяемую с этой платой (memory maped).
P.S. Про касательную Я так ничего и не понял. Про какую касательную идет речь? Про касательную скорость? Тогда чем угловая не устраивает? Тем что Я её в об/мин использовал, а не радиан/с или градус/час (можно и в имп/мин энкодера)?
И как это "нет понятия скорость вращения..."? Как это понимать? Что на моторах пишут?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 июн 2012, 22:16
Lexxa
xentaur писал(а):Что на моторах пишут?
Частоту.
Весь спор собственно из-за того что по умолчанию подается на вход ПИД-регулятора именно в ЕМС, а подается положение:
Код: Выделить всё
net zpos-cmd axis.2.motor-pos-cmd => pid.z.command
#Обратная связь тоже в миллиметрах!!!
net zpos-fb <= hm2_5i20.0.encoder.03.position
net zpos-fb => pid.z.feedback
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 03 июн 2012, 23:56
xentaur
Так всё правильно! Частота и скорость это, по сути, одно и тоже.
Теперь про серву.
net zpos-cmd axis.2.motor-pos-cmd => pid.z.command #записываем команду задания позиции в мм.
#Обратная связь тоже в миллиметрах!!!
net zpos-fb <= hm2_5i20.0.encoder.03.position #получаем значение энкодера, точнее оси, в мм.
net zpos-fb => pid.z.feedback #записываем его в ПИД
Не нужно забывать, что здесь задание позиции делается для интервала 1мс. Но серва не синхронизирована с ПИД ЕМС и может иметь другой период, поэтому принять задание позиции не может, а принимает задание скорости +-10В (для примера). Таким образом нужно серве задать скорость, что просто решается дифференцированием позиции. Обратную связь берем по положению - так проще ошибку позиции подсчитать, можно и скорость взять - но точность тахогенераторов и таходатчиков значительно ниже энкодеров. Можно и с энкодера скорость пересчитать, а потом назад в позицию.
P.S. Я написал получаем и записываем - это не совсем верно. Это на самом деле связи и за один цикл ПИД происходит чтение/вычисление/запись по этим связям.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 00:44
Lexxa
Предположим, что энкодер.позишн это расстояние, которое проехал станок за сервопериод. Почему тогда на НАЛ-скопе при невращающемся энкодере это значение не обнуляется?
Ответ: потому что это абсолютное положение оси станка.
За то производная от него повторяет график скорости:
http://cnc-club.ru/forum/download/file. ... &mode=view
А вот так мы будем эту скорость регулировать
Код: Выделить всё
#Включение привода
net xenable => pid.x.enable
# Регулируемая величина - скорость
net xpos-cmd axis.0.motor-pos-cmd => ddt.0.in
net xvel ddt.0.out => pid.x.command
net xoutput pid.x.output => hm2_5i20.0.pwmgen.01.value
#Обратная связь по скорости
net xpos-fb <= hm2_5i20.0.encoder.01.position
net xpos-fb => axis.0.motor-pos-fb
net x-fb-vel hm2_5i20.0.encoder.01.velocity => pid.x.feedback
net x-index-enable axis.0.index-enable <=> hm2_5i20.0.encoder.01.index-enable
net xenable axis.0.amp-enable-out => hm2_5i20.0.pwmgen.01.enable
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 01:37
xentaur
продифференцировали позицию задания => получили скорость => направили в ПИД => на генератор => +-10в
в приведенном примере hm2_5i20.0.encoder.01.position в ПИД не попадает,
а попадает в ПИД hm2_5i20.0.encoder.01.velocity. Должно работать вполне нормально, но логичнее продифференцировать выход ПИД, тогда обратная связь останется по положению.
Lexxa писал(а):Предположим, что энкодер.позишн это расстояние, которое проехал станок за сервопериод. Почему тогда на НАЛ-скопе при невращающемся энкодере это значение не обнуляется?
Ответ: потому что это абсолютное положение оси станка.
За то производная от него повторяет график скорости:
Зачем это писать?
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 01:45
PKM
Не пойму, о чем вы спорите. В Linuxcnc можно сделать ПИД по скорости, можно - по положению. Кажется, можно и оба одновременно сделать, а мотором управлять по моменту.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 08:58
Lexxa
PKM, поясни как кроме дифференцирования получить скорость, чтобы управлять пидом по скорости и не получить на малых значениях вот это:
http://www.cnc-club.ru/forum/download/f ... &mode=view
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 09:23
Impartial
ЕМС выдает раз в 1мс только один параметр - скорость. И использует (если ПИД - компонент ХАЛ) данные о полученной позиции только с одной целью - опознать ошибку позиционирования. Ни в каких ПИДах данные о позиции не используются.
Если это внешний ПИД, находящийся в приводе, то с привода требуется только сигнал ошибки, опять же для того, чтобы остановить ЕМС.
Ошибка позиционирования это фатальная ошибка и ничем ее исправить нельзя.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 09:33
Lexxa
Impartial, +1, но
Код: Выделить всё
net zpos-cmd axis.2.motor-pos-cmd => pid.z.command
#Обратная связь тоже в миллиметрах!!!
net zpos-fb <= hm2_5i20.0.encoder.03.position
net zpos-fb => pid.z.feedback
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 09:43
Impartial
Все это относится только к ХАЛ компонентам. С месы получают данные о позиции с только с одной целью - опознать ошибку.
Надо разделять ХАЛ и ЕМС. Скорость выдает планировщик траектории. Это не ХАЛ компонент.
Re: ПИД-регулирование. Общие вопросы.
Добавлено: 04 июн 2012, 09:44
Lexxa
Разве за позицией следит не моушн?
Ведь на вхходе ПИД-регулятора который в ЕМС позишн, на входе фидбэка тоже позишн.
Я не понимаю как этот позишн в ПИДЕ преобразуется в скорость.