S - разгон/торможение для ЕМС2 слабо?

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение aftaev »

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

Re: S - разгон/торможение для ЕМС2 слабо?

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

aftaev писал(а):michael-yurov, у тебя есть привода которые аналог понимают?
Нет, а что?
Я подумывал те яксавовские купить, но пока что не могу определиться - что лучше, леадшайновские шаговики с энкодером, или яксавовские аналоговые сервы.
У шаговиков NEMA 23 момент намного выше (даже на максимальных оборотах) чем у 100 Ваттных сервомоторов. И шаговики более предпочтительны для станка с ременным приводом.
Шаговики придется использовать на более низких скоростях, соответственно, разрешение у станка будет ниже при таком же разрешении энкодера, но максимальные скорости - выше (за счет меньшего передаточного числа редуктора).
А цены на сервы и шаговики такие примерно одинаковые. В общем - думаю пока. Простите за оффтоп.
Аватара пользователя
Алексс
Почётный участник
Почётный участник
Сообщения: 2210
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 266
Заслуга: IQ32
Настоящее имя: Алексей
Откуда: Прага
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение Алексс »

чешский школьник написал систему управления станком с поддержкой S разгонов/торможений.
https://www.youtube.com/watch?v=ZfNcF--LarA

работает под виндой или АНДРОИДОМ.

описание:
SOČ.pdf
(8.43 МБ) 2966 скачиваний
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

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

Молодец школьник.
Когда уже производители систем управления (не говорю о дорогих промышленных) дорастут до его уровня?
Аватара пользователя
Алексс
Почётный участник
Почётный участник
Сообщения: 2210
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 266
Заслуга: IQ32
Настоящее имя: Алексей
Откуда: Прага
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение Алексс »

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

Re: S - разгон/торможение для ЕМС2 слабо?

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

Алексс писал(а):это никому не нужно.
В том и беда...
Я уже писал о том, что давно задумывался над созданием собственного планировщика траектории.
И более, чем уверен, в том, что смог бы написать быстрый и грамотный планировщик с поддержкой S кривых изменения скорости...
Но что с ним потом делать? куда его? кому? Для себя любимого писать? Мне не настолько это и нужно...
Перевести на разные языки программирования я не смогу, внедрить в чужие системы - тоже для меня сложно.
Написать полноценную систему ЧПУ -считаю слишком сложной задачей. Меня хватит только на интерфейс и планировщик траектории.
Вот и получается - что "никому это не нужно."
Аватара пользователя
tooshka
Почётный участник
Почётный участник
Сообщения: 1803
Зарегистрирован: 24 окт 2012, 14:26
Репутация: 209
Настоящее имя: Андрей
Откуда: Нижний Новгород
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение tooshka »

Хороший интерфейс сваять не каждый программист может (точнее если именно программеры интерфейсы делают, обычно не очень получается - видимо образ мышления и логика у программеров немного по другому работают)
Милая, ты услышь меня
под окном стою со своим я ЧПУ! (Протяжно; с надрывом; форте)
Внимание!!! Чрезмерное увлечение ЧПУ приводит к проблемам в семейных отношениях!
Аватара пользователя
Алексс
Почётный участник
Почётный участник
Сообщения: 2210
Зарегистрирован: 20 июл 2012, 15:49
Репутация: 266
Заслуга: IQ32
Настоящее имя: Алексей
Откуда: Прага
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение Алексс »

michael-yurov писал(а):Написать полноценную систему ЧПУ
все написано до нас.
скачай исходники LinuxCNC и нерепиши планировщик.
всякие gui, hal и прочие плюшки уже есть.
Каждая собака, бегущая на поводке впереди хозяина, думает, что ведет его за собой.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение Nick »

Да, для S-curve насколько я понял надо переписать только 1 функцию ну и добавить объявлений по мелочи.

(выше писал какую)
---

Точнее не выше, а тут: LinuxCNC S-разгон и торможение #1

Уже даже что-то написал, но все нет времени доделать.
Аватара пользователя
PKM
Почётный участник
Почётный участник
Сообщения: 4263
Зарегистрирован: 31 мар 2011, 18:11
Репутация: 705
Настоящее имя: Андрей
Откуда: Украина
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение PKM »

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

Re: S - разгон/торможение для ЕМС2 слабо?

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

tooshka писал(а):Хороший интерфейс сваять не каждый программист может (точнее если именно программеры интерфейсы делают, обычно не очень получается - видимо образ мышления и логика у программеров немного по другому работают)
А я не программист по специальности, а дизайнер. При чем в первую очередь интересуюсь именно интерфейсами и промышленным дизайном.

И программы я пишу отталкиваясь от кратчайшего пути между наиболее логичным и удобным интерфейсом для получения минимума необходимых исходных данных и требуемым результатом работы программы.
Алексс писал(а):скачай исходники LinuxCNC и нерепиши планировщик.
всякие gui, hal и прочие плюшки уже есть.
Я в этом совсем ничего не понимаю.
Для меня даже просто Linux - уже проблема.
Я только под Windows программировал и на Delphi,
А исходники у EMC, наверное, на С++.

Еще меня Linux не радует тем, что я не собираюсь им пользоваться.
Nick писал(а):Да, для S-curve насколько я понял надо переписать только 1 функцию ну и добавить объявлений по мелочи.
(выше писал какую)
---
Точнее не выше, а тут: LinuxCNC S-разгон и торможение #1
Уже даже что-то написал, но все нет времени доделать.
Я попробую разобраться, но для меня это очень сложно - чужой язык программирования, чужие исходники, чужие баги, чужая оптимизация и упрощение, чужие сокращения...
Всегда проще написать с чистого листа сразу так, как нужно.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение Serg »

michael-yurov писал(а):
Алексс писал(а):скачай исходники LinuxCNC и нерепиши планировщик.
всякие gui, hal и прочие плюшки уже есть.
Я в этом совсем ничего не понимаю.
Для меня даже просто Linux - уже проблема.
Я только под Windows программировал и на Delphi,
А исходники у EMC, наверное, на С++.

Еще меня Linux не радует тем, что я не собираюсь им пользоваться.

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

Re: S - разгон/торможение для ЕМС2 слабо?

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

Насколько я сейчас себе представляю алгоритм решения задачи, в голове вырисовываются два варианта.
Первый - простой для реализации.
Второй - значительно менее требовательный к вычислительным ресурсам, и абсолютно точный.

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

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

И так - на каждом маленьком кусочке траектории.
Данный метод потребует большого объема расчетов, особенно в случае с более, чем тремя осями.
Метод можно сильно оптимизировать. Особенно, важно оптимизировать ту часть расчетов, которая оценивает допустимость скорости и ускорения для каждой конкретной точки.


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

Оба метода я описал со значительными упрощениями, и опустил ряд тонкостей, но в целом - можно понять примерную логику вычислений.

Первый метод похож на Рендеринг 3d изображения с помощью лучевой трассировки (когда для каждой точки рассчитывается цвет),
а второй метод больше похож на работу видеокарты с Direct 3d (как в CAD программах).

Еще можно сравнить с растровым и векторным редакторами. В первом случае - алгоритмы проще, но для более высокой точности - потребуется очень большой объем вычислений.

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

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение dpss »

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

Re: S - разгон/торможение для ЕМС2 слабо?

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

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

Короче, алгоритм получается настолько сложный, что ради развлечения такой делать не станешь.
КУ!
Новичок
Сообщения: 1
Зарегистрирован: 15 окт 2013, 09:49
Репутация: 0
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

Сообщение КУ! »

Вводная статейка по данному вопросу:
http://archive.nbuv.gov.ua/portal/natur ... 2010_2.pdf

Реализовывал программу по данному алгоритму на описаном устройстве. Кому интересны подробности, можем пообщаться здесь или: Kuznetsoff<dot>Yu<at>mail.ru
Аватара пользователя
michael-yurov
Почётный участник
Почётный участник
Сообщения: 11730
Зарегистрирован: 26 июл 2012, 00:10
Репутация: 4703
Настоящее имя: Михаил Львович
Откуда: Новоуральск
Контактная информация:

Re: S - разгон/торможение для ЕМС2 слабо?

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

КУ! писал(а):Вводная статейка по данному вопросу:
http://archive.nbuv.gov.ua/portal/natur ... 2010_2.pdf

Реализовывал программу по данному алгоритму на описаном устройстве. Кому интересны подробности, можем пообщаться здесь или: Kuznetsoff<dot>Yu<at>mail.ru
Бегло просмотрел, но не увидел главного.
Вы пишите о том, как рассчитать изменение скорости на том или ином участке зная начальную и конечную требуемые скорости.
Но как их узнать - это же самый сложный вопрос!
Как узнать, до какой скорости можно разгоняться в том или ином месте траектории, чтобы и скорость и ускорение и скорость изменения ускорения не вышли за допустимые рамки?
Ответить

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