Динамическое управление ускорением

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Динамическое управление ускорением

Сообщение Сергей Саныч »

Здесь уже обсуждалась возможность работы по S-кривой ускорения. http://cnc-club.ru/forum/viewtopic.php? ... 935#p44935
У меня немного другой вопрос: имеется ли в глубинах LinuxCNC возможность динамически изменять ускорение разгона-торможения в зависимости от скорости перемещения?
Зачем? Это может быть актуально, в особенности, при использовании шаговых двигателей. Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
wldev
Мастер
Сообщения: 1647
Зарегистрирован: 24 янв 2012, 16:04
Репутация: 510
Настоящее имя: Сергей Бочаров
Откуда: Новосибирск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение wldev »

Тоже интересно как они там генерируют...
посмотреть кусок кода бы
Новости: https://t.me/wldevruch
Обсуждения: https://t.me/wldevgr
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Nick »

На уровне планировщика траекторий, боюсь это будет также сложно как и S-кривая разгона. А вот на уровне stepgen наверное можно, но можно нарваться на большое отклонение от траектории.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

Serg-tmn писал(а):Как известно, момент ШД падает с увеличением скорости. Соответственно, для оптимального разгона есть смысл при низких скоростях задавать бОльшие значения ускорения, а при высоких - меньшие.
Сначала подумал - а может быть тут ошибка - ведь с ростом скорости растет и отдаваемая двигателем мощность при постоянном моменте...
Но нет - кинетическая энергия пропорциональна квадрату скорости, соответственно, если скорость увеличивается линейно - мотору нужно будет отдавать возрастающую мощность.
Nick писал(а):На уровне планировщика траекторий, боюсь это будет также сложно как и S-кривая разгона.
А про 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: Динамическое управление ускорением

Сообщение michael-yurov »

О!, а вот по сабжу - следующая мысль:
Скорость вывода импульсов step/dir можно легко регулировать во многих аппаратных контроллерах (например - в пурелоджиковском); т.е. там есть регулятор, который регулирует все вместе - и скорости и ускорения и холостые перемещения.
Что-то вроде изменения несущей частоты генератора импульсов.
Можно с увеличением скорости уменьшать этот регулятор, а с уменьшением - возвращать к 100%
Придется изначально спланировать траекторию с большей максимальной скоростью. т.к. она будет уменьшена. Но в этом нет никаких проблем.

Конкретно, применительно к пурелоджиковскому контроллеру - можно попросить Олега Гладышева (программиста/разработчика), и он, я думаю, без особых проблем добавит эту фишку в прошивку.
Только я не думаю, что они пустят эту фишку в массы. Полагаю, это не востребовано.
Их контроллер работает с Mach3, а для Mach3 это будет почти бесполезно. Удастся добиться больших ускорений на невысоких скоростях. Но тех, кто выбирает Mach это нифига не волнует.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

Еще немного пофлужу.
На мой взгляд S кривая лучше, чем просто уменьшение ускорения с ростом скорости.

Во первых - приближаясь к максимальной скорости ускорение будет уменьшаться стремясь к нулю, это позволит разогнаться до максимальных скоростей.
Во вторых - это убирает вибрации механики станка при разгонах/торможениях, что тоже очень важно, т.к. позволит добиться лучших результатов на менее жестких станках.
В третьих - ускорения при обработки мелких участков будут небольшими, это значительно повысит точность обработки (например, вчера гравировал печатную плату с мелкими элементами, и мне бы это пригодилось).
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Сергей Саныч »

Про S-кривые, я представляю, что это такое и для чего. Кстати, про лифт - у нас в доме лифты недавно меняли, так там что-то похожее реализовано - не только кабина разгоняется плавно, но даже и двери так открываются-закрываются.
А по сабжу - не далее, как вчера экспериментировал со скоростью-ускорением и обнаружил, что на той тестовой надписи ускорение влияет на время выполнения, больше, чем скорость. То есть, станок не успевает толком разогнаться. Но при ускорении 300 станок может развить 3500 мм/мин, а при 700 - только 2400. То есть приходится искать компромисс. А если снижать максимальное ускорение в зависимости от скорости, то можно выжать побольше.
На мой взгляд S кривая лучше, чем просто уменьшение ускорения с ростом скорости.
Безусловно. Только как бы это реализовать малой кровью. Пока, в порядке полного бреда, представляется внешний контроллер, управляемый по Step/Dir. Как справедливо замечено, возможности этого простейшего интерфейса далеко не исчерпаны.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

Serg-tmn писал(а):Кстати, про лифт - у нас в доме лифты недавно меняли, так там что-то похожее реализовано - не только кабина разгоняется плавно, но даже и двери так открываются-закрываются.
А у нас наоборот сделали, когда лифт поменяли - установили дрянь какую-то тупорылую от МогилевЛифтМаш (не примите за грубость, я просто называю вещи своими именами).
Он настолько тупой, что быстрее пешком на 5 этаж подняться, чем на нем доехать. И это с учетом того, что мотор сейчас намного более мощный стоит. Лифтостроители, блин.
Serg-tmn писал(а):обнаружил, что на той тестовой надписи ускорение влияет на время выполнения, больше, чем скорость. То есть, станок не успевает толком разогнаться. Но при ускорении 300 станок может развить 3500 мм/мин, а при 700 - только 2400. То есть приходится искать компромисс. А если снижать максимальное ускорение в зависимости от скорости, то можно выжать побольше.
Действительно, как то я об этом не подумал. Наверное можно было скорость уменьшить, а ускорение увеличить, и время бы выполнения сократилось бы.
Вообще, KFlop на моем станке стал работать с ускорениями 2000 мм/с², а ncstudio могла только 600, а с большим - срывалась на мелких участках.
Больше ускорения устанавливать не стал, т.к. эта цифра была заложена в расчеты жесткости станка, и при больших ускорениях конструкция начнет изгибаться. Да и ШВП начнут люфтить.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5182
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Serg »

michael-yurov писал(а):Можно ощутить это на себе в дешевых лифтах - он когда трогается, его трясет, когда останавливается - тоже (хотя тут может быть вообще ступенчатое изменение скорости).
Трясёт не от этого, а из-за неправильной регулировки аварийного стопора и/или из-за кривых рельс.
В обычных лифтах не делают изменение скорости, в них ставят асинхронные двигатели с мягкой характеристикой, что в результате даёт эту самую S-кривую. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Yur_ra
Опытный
Сообщения: 161
Зарегистрирован: 04 мар 2013, 16:09
Репутация: 8
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Yur_ra »

Чисто математическистанок должен проехать по некоторой кривой,
производная от перемещения это скорость,
производная по скорости это ускорение,
это в станках реализовано.
а нам получается нужно учитывать ещё и производную от ускорения .
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
контроль по лишним производным поможет наверно скомпенсировать даже всякие задержки в линиях связи и в самих приводах для более точного контроля сервопривода.
Только кто ж такое реализует?
Ломается всё, даже то что в принципе никогда не ломается... А я чиню.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Сергей Саныч »

Yur_ra писал(а):а нам получается нужно учитывать ещё и производную от ускорения .
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
При проектировании закруглений велотреков обычно учитывали третью производную. Как-то давно читал, что когда проектировали трек в Крылатском для Олимпиады-80, привлекли серьезную математическую науку и учли производные высших порядков. Результат - куча мировых рекордов.
Чудес не бывает. Бывают фокусы.
Darxton
Мастер
Сообщения: 2113
Зарегистрирован: 17 янв 2013, 08:19
Репутация: 622
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Darxton »

Yur_ra писал(а): а нам получается нужно учитывать ещё и производную от ускорения .
По-хорошему - надо.
Можно и дальше пойти - производную от производной по ускорению учитывать, тогда плавность движений будет ещё больше.
контроль по лишним производным поможет наверно скомпенсировать даже всякие задержки в линиях связи и в самих приводах для более точного контроля сервопривода.
Только кто ж такое реализует?
Создатель mach3 утверждал почти год назад, что в новой, 4й, версии реализовал это, и даже больше. Однако... Воз и ныне там пока.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

Darxton писал(а):Создатель mach3 утверждал почти год назад, что в новой, 4й, версии реализовал это, и даже больше. Однако... Воз и ныне там пока.
Создатель Mach3 так накосячил в текщей версии, что с трудом верится в то, что он попытается проверять расчет высших производных его программой, анализируя спланированную траекторию,

Хотя, спасибо за информацию - заманчиво.
Darxton
Мастер
Сообщения: 2113
Зарегистрирован: 17 янв 2013, 08:19
Репутация: 622
Контактная информация:

Re: Динамическое управление ускорением

Сообщение Darxton »

michael-yurov писал(а):Хотя, спасибо за информацию - заманчиво.
У них(Artsoft) там еще та Санта-Барбара(в плане влияния личных взаимоотношений на продукцию), что серьезно к ним как разработчикам относиться не удается... А кроме того, расчет всех этих прелестей потребует еще большей производительности ПК, а также переписывание плагинов аппаратных контроллеров, удаление багов - так что хоббистам рассчитывать на нормальную работу в Mach4 в обозримом будущем вряд ли приходится.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Динамическое управление ускорением

Сообщение solo »

Когда я использовал для управления станком турбоСНС там в конфигурации оси задавали начальную скорости врашения ШД, тоесть получалось что ШД начинает вращатся с мах ускорение на минимально установленной скорости, а дальше скорость наростала уже линейно. Может что то подобное можно применить и здесь для первой ступени регулирования ускорения.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

solo писал(а):Когда я использовал для управления станком турбоСНС там в конфигурации оси задавали начальную скорости врашения ШД, тоесть получалось что ШД начинает вращатся с мах ускорение на минимально установленной скорости, а дальше скорость наростала уже линейно. Может что то подобное можно применить и здесь для первой ступени регулирования ускорения.
Это даже не максимальное ускорение, а бесконечно большое ускорение в начальный момент. Короче говоря - для современных станков - недопустимо.
А здесь мы говорим об обратном - ка сделать, чтобы не только скорость изменялась плавно, но еще и ускорение.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

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

Вот, вроде бы, все знаю, как грамотно сделать, а что толку? Приходится только смотреть, как другие разработчики умудряются писать значительно более слабые программы.
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Динамическое управление ускорением

Сообщение solo »

michael-yurov писал(а):А здесь мы говорим об обратном - ка сделать, чтобы не только скорость изменялась плавно, но еще и ускорение
так и я вроде о том же
Я конечно делетант и по этому до конца все не допонимаю. ШД нам позволяет получить большие ускорения на малих скоростах . Если поступить следующим образом. Задаем несколько максималь возможных ускорение в зависимости от скорости тоесть какаято талица или масив и тогда если в данный момент скорость ШД (такаято) то соотвецтвенно и ускорение с которым можно использовать ШД в даннов диапозонне скоростей(такоето) соотвецтвующее . Как то я это все безтолково написал. Ну типа коробки скоростей как в машине. В зависиости от скорости машины мы знаем какую передачу нам надо включать. На малих скоростях разгоняемя быстро, чтобы получить более точное следование траэктории на рабочих подачах , а на больших медленно чтобы получить максимальные скорости премещения.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11640
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4646
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: Динамическое управление ускорением

Сообщение michael-yurov »

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

Я к тому, что идея уменьшения ускорения с ростом скорости - интересна при использовании ШД,
но в реальности было бы неплохо в принципе ускорение при движении изменять плавно, это позволит добиться и более высоких скоростей, и большей точности обработки, и более высоких ускорений (за счет снижения перегрузок в начале и в конце интервала ускорения).

А изменять ускорения динамически в зависимости от текущей скорости не тку уж и просто.
По той причине, что при планировании траектории скорость рассчитывается на основе допустимых ускорений, и изменить ускорения после расчета получается уже нельзя,
Разве что сделать первый расчет для примерной оценки скорости, а затем второй просчет уже с изменяемым ускорением.
Но есть еще одна проблема - обычный алгоритм расчета не позволяет планировать траекторию с переменным ускорением.
dpss
Мастер
Сообщения: 265
Зарегистрирован: 23 фев 2012, 13:40
Репутация: 27
Контактная информация:

Re: Динамическое управление ускорением

Сообщение dpss »

В теме про S образный разгон я положил 2 статьи. В первой - от французов - был описан алгоритм планировщика позволяющий на ходу менять рабочую скорость от минимума до максимума. Идея заключалась в просчете и хранении целого семейства кривых просчитанных для разных случаев с некоторым шагом. По необходимости выбирается та или иная готовая кривая. Там же получается набор вариантов lookaheаd для разных скоростей. Но это требует очень нехилых вычислительных ресурсов. На примере они получали оптимизацию лучше чем у Синумерика.
Ответить

Вернуться в «LinuxCNC»