ПИД-регулирование. Общие вопросы.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
И вообще. Скорость вращения двигателем это единственное чем мы можем управлять.
Крайне неправильно использовать в качестве регулируемого ПИДом параметра положение. Никакой мягости хода не будет.
Крайне неправильно использовать в качестве регулируемого ПИДом параметра положение. Никакой мягости хода не будет.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
хмм... интересно, как это можно замерить? вот скажем будет у меня серва, повешу на нее блин от штанги и буду гонять. Что нужно измерять, чтобы понять какой вид управления хуже?
ferror?
ferror?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
ну хоть бы и ferror.
Ник, координаты можно только отслеживать, а управлять только скоростью при условии того, что момент двигатель держит.
Ник, координаты можно только отслеживать, а управлять только скоростью при условии того, что момент двигатель держит.
-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Читайте внимательней - станок сверлильный, по контуру идти не нужно. Для сверлильных важна безопасная высота. Пришли в точку опустили пиноль, просверлили, подняли. Всё.Lexxa писал(а): ооооооооооооочень важно по какой траектории сверло придет в точку сверления!!!!
Заблуждение. Управление +-10В это всего лишь аналоговый способ задания. Может задавать что угодно (скорость, момент, положение, температуру, давление и т.д.).Lexxa писал(а): Нет. Если управляешь скоростью, то контролировать надо скорость (про ПИД), и одновременно контролировать положение (про траекторию)
Все современные серовприводы имеют двойной контур ПИД - момент и скорость. Не современные - только момент. Поддержанием заданной(расчетной) скорости занимается в этом случае ЧПУ, а привод обеспечивает лишь заданный момент. Поэтому если, например, сервопривод имеет управление +-10В, то супер неправильно подгонять значения PID, регулирующего положение, чтобы станок нормально ездил.
Для приводов подач задают скорость (аналог или цифра не имеет значения), как сервопривод будет поддерживать скорость это его проблемы. С энкодера получаем положение каждые 1/1000 секунды. А что такое скорость? Ээто путь делить на время. Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
И про двойной ПИД. Серва делает ПИД по скорости,а УЧПУ по положению. Это и есть двойной контур. Но его может и не быть, если серва не использует ПИД (шаговый привод с заданием скорости), а ПИД по положению задействован.
P.S. Настройка ПИД сервы и УЧПУ это разные вещи. Сперва нужно серву настроить, а потом УЧПУ.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Ну если честно, то и сверлильному нужна стабильная подача. А для этого надо следовать траектории.
А скачки подачи могут серьезно навредить инструменту.
А скачки подачи могут серьезно навредить инструменту.
-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Для позиционирования стабильной подачи не надо. Для сверления да.Nick писал(а):Ну если честно, то и сверлильному нужна стабильная подача. А для этого надо следовать траектории.
А скачки подачи могут серьезно навредить инструменту.
Ну хоть историей ЧПУ поинтересуйтесь. С чего начиналось и что в перспективе.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
нужно и по контуру иногда зайти в точку сверления, чтобы например не ударить инструментом в заготовку, а безопасной высоты может не хватить, это я уже проходил.xentaur писал(а):Читайте внимательней - станок сверлильный, по контуру идти не нужно
Заблуждение. каждую тысячную секунды мы получаем положение. А скорость это пройденный путь делить на время))xentaur писал(а):Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
xentaur писал(а): Серва делает ПИД по скорости,а УЧПУ по положению.
Это ясно как светлый деньxentaur писал(а): Настройка ПИД сервы и УЧПУ это разные вещи. Сперва нужно серву настроить, а потом УЧПУ.
Ник, поясни, какой из компонентов ЕМС занимается планированием траектории? Мне думается, что моушн, так что ПИД по положению тут совсем непричем.xentaur писал(а):Серва делает ПИД по скорости,а УЧПУ по положению
-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Lexxa писал(а):Заблуждение. каждую тысячную секунды мы получаем положение. А скорость это пройденный путь делить на время))xentaur писал(а):Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
Вот пример. За один период опроса с энкодера считали 133 импульса. Время периода 0.001с. Внимание вопрос - какая была скорость вращения вала, если энкодер имеет 1000 рисок (4000 имп/об квадратура)?xentaur писал(а):С энкодера получаем положение каждые 1/1000 секунды. А что такое скорость? Ээто путь делить на время. Вот и получается, что каждую тысячную секунды получаем текущую скорость привода.
Вал провернулся на 133имп/4000имп/об=0.03325 об.
Скорость 0.03325об/0.001с=33,25об/с=1995об/мин.
Всё просто
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Нет понятия скорость вращения, есть касательная, это раз.
Понятие скорость в широком смысле это быстрота изменения некоторой величины, это два, в школе проходят.
В нашем случае скорость это (X0-X)/t, где Х0 - начальная координата, Х - текущая координата, t - время наблюдения, равное 1 мс.
И если внимательно посмотреть на то, что выдает 5i20 с энкодера, то там есть и скорость (с учетом редуктора), и положение, то сразу всё станет ясно, что такое скорость, а что положение.
Понятие скорость в широком смысле это быстрота изменения некоторой величины, это два, в школе проходят.
В нашем случае скорость это (X0-X)/t, где Х0 - начальная координата, Х - текущая координата, t - время наблюдения, равное 1 мс.
И если внимательно посмотреть на то, что выдает 5i20 с энкодера, то там есть и скорость (с учетом редуктора), и положение, то сразу всё станет ясно, что такое скорость, а что положение.
-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Скорость вращения через передачи преобразуется в линейную скорость и то не для всех механизмов. В некоторых так вращением и остается.Lexxa писал(а):Нет понятия скорость вращения, есть касательная, это раз.
Понятие скорость в широком смысле это быстрота изменения некоторой величины, это два, в школе проходят.
В нашем случае скорость это (X0-X)/t, где Х0 - начальная координата, Х - текущая координата, t - время наблюдения, равное 1 мс.
И если внимательно посмотреть на то, что выдает 5i20 с энкодера, то там есть и скорость (с учетом редуктора), и положение, то сразу всё станет ясно, что такое скорость, а что положение.
Быстрота изменения некоторой величины это производная. V=dx/dt. a=dv/dt. (только не нужно сюда релятивистскую механику приплетать).
Что конкретно выдает 5i20 с энкодера Я не знаю. В большинстве систем данные с энкодера попадают в инкрементальный/декрементальный счетчик/регистр и УЧПУ считывает значение регистра. Думаю в 5i20 тоже самое. Однако Я встречал плату управления движением (motion controller) в которых ПИД железный на борту, а управление на языке высокого уровня. Команды записываются в память ПК разделяемую с этой платой (memory maped).
P.S. Про касательную Я так ничего и не понял. Про какую касательную идет речь? Про касательную скорость? Тогда чем угловая не устраивает? Тем что Я её в об/мин использовал, а не радиан/с или градус/час (можно и в имп/мин энкодера)?
И как это "нет понятия скорость вращения..."? Как это понимать? Что на моторах пишут?
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Частоту.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
-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Так всё правильно! Частота и скорость это, по сути, одно и тоже.
Теперь про серву.
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. Я написал получаем и записываем - это не совсем верно. Это на самом деле связи и за один цикл ПИД происходит чтение/вычисление/запись по этим связям.
Теперь про серву.
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. Я написал получаем и записываем - это не совсем верно. Это на самом деле связи и за один цикл ПИД происходит чтение/вычисление/запись по этим связям.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Предположим, что энкодер.позишн это расстояние, которое проехал станок за сервопериод. Почему тогда на НАЛ-скопе при невращающемся энкодере это значение не обнуляется?
Ответ: потому что это абсолютное положение оси станка.
За то производная от него повторяет график скорости:

http://cnc-club.ru/forum/download/file. ... &mode=view
А вот так мы будем эту скорость регулировать
Ответ: потому что это абсолютное положение оси станка.
За то производная от него повторяет график скорости:
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-
xentaur
- Опытный
- Сообщения: 178
- Зарегистрирован: 09 ноя 2010, 02:29
- Репутация: 1
- Откуда: Украина Харьков
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
продифференцировали позицию задания => получили скорость => направили в ПИД => на генератор => +-10в
в приведенном примере hm2_5i20.0.encoder.01.position в ПИД не попадает,
а попадает в ПИД hm2_5i20.0.encoder.01.velocity. Должно работать вполне нормально, но логичнее продифференцировать выход ПИД, тогда обратная связь останется по положению.
в приведенном примере hm2_5i20.0.encoder.01.position в ПИД не попадает,
а попадает в ПИД hm2_5i20.0.encoder.01.velocity. Должно работать вполне нормально, но логичнее продифференцировать выход ПИД, тогда обратная связь останется по положению.
Зачем это писать?Lexxa писал(а):Предположим, что энкодер.позишн это расстояние, которое проехал станок за сервопериод. Почему тогда на НАЛ-скопе при невращающемся энкодере это значение не обнуляется?
Ответ: потому что это абсолютное положение оси станка.
За то производная от него повторяет график скорости:
Последний раз редактировалось xentaur 04 июн 2012, 01:52, всего редактировалось 1 раз.
- PKM
- Почётный участник

- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Не пойму, о чем вы спорите. В Linuxcnc можно сделать ПИД по скорости, можно - по положению. Кажется, можно и оба одновременно сделать, а мотором управлять по моменту.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
PKM, поясни как кроме дифференцирования получить скорость, чтобы управлять пидом по скорости и не получить на малых значениях вот это:
http://www.cnc-club.ru/forum/download/f ... &mode=view
http://www.cnc-club.ru/forum/download/f ... &mode=view
-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
ЕМС выдает раз в 1мс только один параметр - скорость. И использует (если ПИД - компонент ХАЛ) данные о полученной позиции только с одной целью - опознать ошибку позиционирования. Ни в каких ПИДах данные о позиции не используются.
Если это внешний ПИД, находящийся в приводе, то с привода требуется только сигнал ошибки, опять же для того, чтобы остановить ЕМС.
Ошибка позиционирования это фатальная ошибка и ничем ее исправить нельзя.
Если это внешний ПИД, находящийся в приводе, то с привода требуется только сигнал ошибки, опять же для того, чтобы остановить ЕМС.
Ошибка позиционирования это фатальная ошибка и ничем ее исправить нельзя.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
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-
Impartial
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Все это относится только к ХАЛ компонентам. С месы получают данные о позиции с только с одной целью - опознать ошибку.
Надо разделять ХАЛ и ЕМС. Скорость выдает планировщик траектории. Это не ХАЛ компонент.
Надо разделять ХАЛ и ЕМС. Скорость выдает планировщик траектории. Это не ХАЛ компонент.
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: ПИД-регулирование. Общие вопросы.
Разве за позицией следит не моушн?
Ведь на вхходе ПИД-регулятора который в ЕМС позишн, на входе фидбэка тоже позишн.
Я не понимаю как этот позишн в ПИДЕ преобразуется в скорость.
Ведь на вхходе ПИД-регулятора который в ЕМС позишн, на входе фидбэка тоже позишн.
Я не понимаю как этот позишн в ПИДЕ преобразуется в скорость.
