Динамическое управление ускорением
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Динамическое управление ускорением
Здесь уже обсуждалась возможность работы по S-кривой ускорения. http://cnc-club.ru/forum/viewtopic.php? ... 935#p44935
У меня немного другой вопрос: имеется ли в глубинах LinuxCNC возможность динамически изменять ускорение разгона-торможения в зависимости от скорости перемещения?
Зачем? Это может быть актуально, в особенности, при использовании шаговых двигателей. Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
У меня немного другой вопрос: имеется ли в глубинах LinuxCNC возможность динамически изменять ускорение разгона-торможения в зависимости от скорости перемещения?
Зачем? Это может быть актуально, в особенности, при использовании шаговых двигателей. Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
Чудес не бывает. Бывают фокусы.
- wldev
- Мастер
- Сообщения: 1647
- Зарегистрирован: 24 янв 2012, 16:04
- Репутация: 510
- Настоящее имя: Сергей Бочаров
- Откуда: Новосибирск
- Контактная информация:
Re: Динамическое управление ускорением
Тоже интересно как они там генерируют...
посмотреть кусок кода бы
посмотреть кусок кода бы
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Динамическое управление ускорением
На уровне планировщика траекторий, боюсь это будет также сложно как и S-кривая разгона. А вот на уровне stepgen наверное можно, но можно нарваться на большое отклонение от траектории.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Сначала подумал - а может быть тут ошибка - ведь с ростом скорости растет и отдаваемая двигателем мощность при постоянном моменте...Serg-tmn писал(а):Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
Но нет - кинетическая энергия пропорциональна квадрату скорости, соответственно, если скорость увеличивается линейно - мотору нужно будет отдавать возрастающую мощность.
А про S кривые могу рассказать следующее:Nick писал(а):На уровне планировщика траекторий, боюсь это будет также сложно как и S-кривая разгона.
S кривая - постепенное (трапецеидальное) изменение ускорения. Можно сравнить с движением на легковом автомобиле, когда вы плавно нажимаете/отпускаете педаль газа,
а не как на троллейбусе - то газ в пол то тормоз до упора.
S кривая в первую очередь позволяет избавиться от вибраций станка в начале и конце ускорения (aftaev где-то приводил пример видео сервоактуатора с маятником).
Можно ощутить это на себе в дешевых лифтах - он когда трогается, его трясет, когда останавливается - тоже (хотя тут может быть вообще ступенчатое изменение скорости).
А вот в крутых лифтах вообще не замечаешь, как он трогается и останавливается, и это было бы невозможно с линейным увеличением скорости, т.к. тогда чувствовалось бы резкое изменение ускорения свободного падения в лифте (чувствовалось бы изменение веса).
Когда решался - стоит ли покупать KFlop, на другом форуме меня уверяли, что он поддерживает S кривые изменения скорости.
Оказалось - поддерживает, но только при холостых перемещениях. ((((
Разработчик очень хотел бы сделать поддержку в планировщике траектории, но сказал, что в ближайшее время надеяться не стоит.
Я себе представляю следующий алгоритм расчета траектории с S кривыми:
Рассчитываем траекторию стандартными методами
Строим графики скоростей и ускорений
Корректируем это все так, чтобы на графике ускорений были не прямые грани а наклонные, как у трапеции (или, хотя бы ступеньками).
Соответственно, придется растянуть/сжать в соответствии с ускорениями графики скорости и положения.
Придется изменять графики всех осей одновременно, чтобы не было отклонений от траектории.
Как это сделать - могу нарисовать, тогда станет намного понятнее.
Возможны две проблемы
1. Полученный результат может оказаться неидеальным, возможно, некоторые участки можно было бы пройти немного быстрее (где раньше траектория упиралась в скорость одной из осей).
2. Алгоритм может оказаться не реализуемым (почему -не знаю, просто я не все тонкости продумал, когда писал).
И второй вариант расчета:
По идее, для расчета нужно лишь уметь рассчитывать движение по прямой исходя из начальной скорости и зная допустимую конечную скорость (частный случай, когда обе скорости равны нулю).
И то же самое для дуговых сегментов (к сожалению - в пространстве, а не на плоскости).
Научившись это рассчитывать можно получить требуемый профиль изменения скорости.
Затем данные можно квантовать и передавать, практически в любой аппаратный контроллер (т.к. для многих есть открытые библиотеки), или плату типа MESA.
Последний раз редактировалось michael-yurov 07 мар 2013, 15:07, всего редактировалось 1 раз.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
О!, а вот по сабжу - следующая мысль:
Скорость вывода импульсов step/dir можно легко регулировать во многих аппаратных контроллерах (например - в пурелоджиковском); т.е. там есть регулятор, который регулирует все вместе - и скорости и ускорения и холостые перемещения.
Что-то вроде изменения несущей частоты генератора импульсов.
Можно с увеличением скорости уменьшать этот регулятор, а с уменьшением - возвращать к 100%
Придется изначально спланировать траекторию с большей максимальной скоростью. т.к. она будет уменьшена. Но в этом нет никаких проблем.
Конкретно, применительно к пурелоджиковскому контроллеру - можно попросить Олега Гладышева (программиста/разработчика), и он, я думаю, без особых проблем добавит эту фишку в прошивку.
Только я не думаю, что они пустят эту фишку в массы. Полагаю, это не востребовано.
Их контроллер работает с Mach3, а для Mach3 это будет почти бесполезно. Удастся добиться больших ускорений на невысоких скоростях. Но тех, кто выбирает Mach это нифига не волнует.
Скорость вывода импульсов step/dir можно легко регулировать во многих аппаратных контроллерах (например - в пурелоджиковском); т.е. там есть регулятор, который регулирует все вместе - и скорости и ускорения и холостые перемещения.
Что-то вроде изменения несущей частоты генератора импульсов.
Можно с увеличением скорости уменьшать этот регулятор, а с уменьшением - возвращать к 100%
Придется изначально спланировать траекторию с большей максимальной скоростью. т.к. она будет уменьшена. Но в этом нет никаких проблем.
Конкретно, применительно к пурелоджиковскому контроллеру - можно попросить Олега Гладышева (программиста/разработчика), и он, я думаю, без особых проблем добавит эту фишку в прошивку.
Только я не думаю, что они пустят эту фишку в массы. Полагаю, это не востребовано.
Их контроллер работает с Mach3, а для Mach3 это будет почти бесполезно. Удастся добиться больших ускорений на невысоких скоростях. Но тех, кто выбирает Mach это нифига не волнует.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Еще немного пофлужу.
На мой взгляд S кривая лучше, чем просто уменьшение ускорения с ростом скорости.
Во первых - приближаясь к максимальной скорости ускорение будет уменьшаться стремясь к нулю, это позволит разогнаться до максимальных скоростей.
Во вторых - это убирает вибрации механики станка при разгонах/торможениях, что тоже очень важно, т.к. позволит добиться лучших результатов на менее жестких станках.
В третьих - ускорения при обработки мелких участков будут небольшими, это значительно повысит точность обработки (например, вчера гравировал печатную плату с мелкими элементами, и мне бы это пригодилось).
На мой взгляд S кривая лучше, чем просто уменьшение ускорения с ростом скорости.
Во первых - приближаясь к максимальной скорости ускорение будет уменьшаться стремясь к нулю, это позволит разогнаться до максимальных скоростей.
Во вторых - это убирает вибрации механики станка при разгонах/торможениях, что тоже очень важно, т.к. позволит добиться лучших результатов на менее жестких станках.
В третьих - ускорения при обработки мелких участков будут небольшими, это значительно повысит точность обработки (например, вчера гравировал печатную плату с мелкими элементами, и мне бы это пригодилось).
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Динамическое управление ускорением
Про S-кривые, я представляю, что это такое и для чего. Кстати, про лифт - у нас в доме лифты недавно меняли, так там что-то похожее реализовано - не только кабина разгоняется плавно, но даже и двери так открываются-закрываются.
А по сабжу - не далее, как вчера экспериментировал со скоростью-ускорением и обнаружил, что на той тестовой надписи ускорение влияет на время выполнения, больше, чем скорость. То есть, станок не успевает толком разогнаться. Но при ускорении 300 станок может развить 3500 мм/мин, а при 700 - только 2400. То есть приходится искать компромисс. А если снижать максимальное ускорение в зависимости от скорости, то можно выжать побольше.
А по сабжу - не далее, как вчера экспериментировал со скоростью-ускорением и обнаружил, что на той тестовой надписи ускорение влияет на время выполнения, больше, чем скорость. То есть, станок не успевает толком разогнаться. Но при ускорении 300 станок может развить 3500 мм/мин, а при 700 - только 2400. То есть приходится искать компромисс. А если снижать максимальное ускорение в зависимости от скорости, то можно выжать побольше.
Безусловно. Только как бы это реализовать малой кровью. Пока, в порядке полного бреда, представляется внешний контроллер, управляемый по Step/Dir. Как справедливо замечено, возможности этого простейшего интерфейса далеко не исчерпаны.На мой взгляд S кривая лучше, чем просто уменьшение ускорения с ростом скорости.
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
А у нас наоборот сделали, когда лифт поменяли - установили дрянь какую-то тупорылую от МогилевЛифтМаш (не примите за грубость, я просто называю вещи своими именами).Serg-tmn писал(а):Кстати, про лифт - у нас в доме лифты недавно меняли, так там что-то похожее реализовано - не только кабина разгоняется плавно, но даже и двери так открываются-закрываются.
Он настолько тупой, что быстрее пешком на 5 этаж подняться, чем на нем доехать. И это с учетом того, что мотор сейчас намного более мощный стоит. Лифтостроители, блин.
Действительно, как то я об этом не подумал. Наверное можно было скорость уменьшить, а ускорение увеличить, и время бы выполнения сократилось бы.Serg-tmn писал(а):обнаружил, что на той тестовой надписи ускорение влияет на время выполнения, больше, чем скорость. То есть, станок не успевает толком разогнаться. Но при ускорении 300 станок может развить 3500 мм/мин, а при 700 - только 2400. То есть приходится искать компромисс. А если снижать максимальное ускорение в зависимости от скорости, то можно выжать побольше.
Вообще, KFlop на моем станке стал работать с ускорениями 2000 мм/с², а ncstudio могла только 600, а с большим - срывалась на мелких участках.
Больше ускорения устанавливать не стал, т.к. эта цифра была заложена в расчеты жесткости станка, и при больших ускорениях конструкция начнет изгибаться. Да и ШВП начнут люфтить.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5182
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Динамическое управление ускорением
Трясёт не от этого, а из-за неправильной регулировки аварийного стопора и/или из-за кривых рельс.michael-yurov писал(а):Можно ощутить это на себе в дешевых лифтах - он когда трогается, его трясет, когда останавливается - тоже (хотя тут может быть вообще ступенчатое изменение скорости).
В обычных лифтах не делают изменение скорости, в них ставят асинхронные двигатели с мягкой характеристикой, что в результате даёт эту самую S-кривую.
![Smile :)](./images/smilies/icon_e_smile.gif)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
-
- Опытный
- Сообщения: 161
- Зарегистрирован: 04 мар 2013, 16:09
- Репутация: 8
- Контактная информация:
Re: Динамическое управление ускорением
Чисто математическистанок должен проехать по некоторой кривой,
производная от перемещения это скорость,
производная по скорости это ускорение,
это в станках реализовано.
а нам получается нужно учитывать ещё и производную от ускорения .
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
контроль по лишним производным поможет наверно скомпенсировать даже всякие задержки в линиях связи и в самих приводах для более точного контроля сервопривода.
Только кто ж такое реализует?
производная от перемещения это скорость,
производная по скорости это ускорение,
это в станках реализовано.
а нам получается нужно учитывать ещё и производную от ускорения .
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
контроль по лишним производным поможет наверно скомпенсировать даже всякие задержки в линиях связи и в самих приводах для более точного контроля сервопривода.
Только кто ж такое реализует?
Ломается всё, даже то что в принципе никогда не ломается... А я чиню.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: Динамическое управление ускорением
При проектировании закруглений велотреков обычно учитывали третью производную. Как-то давно читал, что когда проектировали трек в Крылатском для Олимпиады-80, привлекли серьезную математическую науку и учли производные высших порядков. Результат - куча мировых рекордов.Yur_ra писал(а):а нам получается нужно учитывать ещё и производную от ускорения .
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 2113
- Зарегистрирован: 17 янв 2013, 08:19
- Репутация: 622
- Контактная информация:
Re: Динамическое управление ускорением
По-хорошему - надо.Yur_ra писал(а): а нам получается нужно учитывать ещё и производную от ускорения .
Создатель mach3 утверждал почти год назад, что в новой, 4й, версии реализовал это, и даже больше. Однако... Воз и ныне там пока.Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
контроль по лишним производным поможет наверно скомпенсировать даже всякие задержки в линиях связи и в самих приводах для более точного контроля сервопривода.
Только кто ж такое реализует?
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Создатель Mach3 так накосячил в текщей версии, что с трудом верится в то, что он попытается проверять расчет высших производных его программой, анализируя спланированную траекторию,Darxton писал(а):Создатель mach3 утверждал почти год назад, что в новой, 4й, версии реализовал это, и даже больше. Однако... Воз и ныне там пока.
Хотя, спасибо за информацию - заманчиво.
-
- Мастер
- Сообщения: 2113
- Зарегистрирован: 17 янв 2013, 08:19
- Репутация: 622
- Контактная информация:
Re: Динамическое управление ускорением
У них(Artsoft) там еще та Санта-Барбара(в плане влияния личных взаимоотношений на продукцию), что серьезно к ним как разработчикам относиться не удается... А кроме того, расчет всех этих прелестей потребует еще большей производительности ПК, а также переписывание плагинов аппаратных контроллеров, удаление багов - так что хоббистам рассчитывать на нормальную работу в Mach4 в обозримом будущем вряд ли приходится.michael-yurov писал(а):Хотя, спасибо за информацию - заманчиво.
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Динамическое управление ускорением
Когда я использовал для управления станком турбоСНС там в конфигурации оси задавали начальную скорости врашения ШД, тоесть получалось что ШД начинает вращатся с мах ускорение на минимально установленной скорости, а дальше скорость наростала уже линейно. Может что то подобное можно применить и здесь для первой ступени регулирования ускорения.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Это даже не максимальное ускорение, а бесконечно большое ускорение в начальный момент. Короче говоря - для современных станков - недопустимо.solo писал(а):Когда я использовал для управления станком турбоСНС там в конфигурации оси задавали начальную скорости врашения ШД, тоесть получалось что ШД начинает вращатся с мах ускорение на минимально установленной скорости, а дальше скорость наростала уже линейно. Может что то подобное можно применить и здесь для первой ступени регулирования ускорения.
А здесь мы говорим об обратном - ка сделать, чтобы не только скорость изменялась плавно, но еще и ускорение.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Если бы я это делал - хватило бы производительности 486 процессора. И плагины не нужно было бы переписывать.Darxton писал(а):А кроме того, расчет всех этих прелестей потребует еще большей производительности ПК, а также переписывание плагинов аппаратных контроллеров,
Вот, вроде бы, все знаю, как грамотно сделать, а что толку? Приходится только смотреть, как другие разработчики умудряются писать значительно более слабые программы.
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Динамическое управление ускорением
так и я вроде о том жеmichael-yurov писал(а):А здесь мы говорим об обратном - ка сделать, чтобы не только скорость изменялась плавно, но еще и ускорение
Я конечно делетант и по этому до конца все не допонимаю. ШД нам позволяет получить большие ускорения на малих скоростах . Если поступить следующим образом. Задаем несколько максималь возможных ускорение в зависимости от скорости тоесть какаято талица или масив и тогда если в данный момент скорость ШД (такаято) то соотвецтвенно и ускорение с которым можно использовать ШД в даннов диапозонне скоростей(такоето) соотвецтвующее . Как то я это все безтолково написал. Ну типа коробки скоростей как в машине. В зависиости от скорости машины мы знаем какую передачу нам надо включать. На малих скоростях разгоняемя быстро, чтобы получить более точное следование траэктории на рабочих подачах , а на больших медленно чтобы получить максимальные скорости премещения.
- michael-yurov
- Почётный участник
- Сообщения: 11640
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4646
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Динамическое управление ускорением
Тут вот какой момент...
Высокие ускорения на малых скоростях - тоже плохо, как оказалось...
В реальности получается так, что добиться высоких скоростей станка за счет механики и электроники не так уж и сложно,
а вот на маленьких скоростях (при обработке мелких элементов) высокие ускорения приводят к сильным вибрациям станка (изгибаются конструктивные элементы), и получается, что высокие ускорения на маленьких скоростях, сыграют с нами злую шутку.
Я к тому, что идея уменьшения ускорения с ростом скорости - интересна при использовании ШД,
но в реальности было бы неплохо в принципе ускорение при движении изменять плавно, это позволит добиться и более высоких скоростей, и большей точности обработки, и более высоких ускорений (за счет снижения перегрузок в начале и в конце интервала ускорения).
А изменять ускорения динамически в зависимости от текущей скорости не тку уж и просто.
По той причине, что при планировании траектории скорость рассчитывается на основе допустимых ускорений, и изменить ускорения после расчета получается уже нельзя,
Разве что сделать первый расчет для примерной оценки скорости, а затем второй просчет уже с изменяемым ускорением.
Но есть еще одна проблема - обычный алгоритм расчета не позволяет планировать траекторию с переменным ускорением.
Высокие ускорения на малых скоростях - тоже плохо, как оказалось...
В реальности получается так, что добиться высоких скоростей станка за счет механики и электроники не так уж и сложно,
а вот на маленьких скоростях (при обработке мелких элементов) высокие ускорения приводят к сильным вибрациям станка (изгибаются конструктивные элементы), и получается, что высокие ускорения на маленьких скоростях, сыграют с нами злую шутку.
Я к тому, что идея уменьшения ускорения с ростом скорости - интересна при использовании ШД,
но в реальности было бы неплохо в принципе ускорение при движении изменять плавно, это позволит добиться и более высоких скоростей, и большей точности обработки, и более высоких ускорений (за счет снижения перегрузок в начале и в конце интервала ускорения).
А изменять ускорения динамически в зависимости от текущей скорости не тку уж и просто.
По той причине, что при планировании траектории скорость рассчитывается на основе допустимых ускорений, и изменить ускорения после расчета получается уже нельзя,
Разве что сделать первый расчет для примерной оценки скорости, а затем второй просчет уже с изменяемым ускорением.
Но есть еще одна проблема - обычный алгоритм расчета не позволяет планировать траекторию с переменным ускорением.
Re: Динамическое управление ускорением
В теме про S образный разгон я положил 2 статьи. В первой - от французов - был описан алгоритм планировщика позволяющий на ходу менять рабочую скорость от минимума до максимума. Идея заключалась в просчете и хранении целого семейства кривых просчитанных для разных случаев с некоторым шагом. По необходимости выбирается та или иная готовая кривая. Там же получается набор вариантов lookaheаd для разных скоростей. Но это требует очень нехилых вычислительных ресурсов. На примере они получали оптимизацию лучше чем у Синумерика.