Что я еще не знал о LinuxCNC, что нам еще предстоит сделать
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Пока я пытаюсь догнать вашу мысль, ответьте на вопрос: что такое jerk. В инете только в контексте рыбалки нашел.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
тут на форуме две темы (по S-разгон ищем))aaleksander писал(а):что такое jerk
там кое что есть...
http://cnc-club.ru/forum/viewtopic.php? ... hilit=jerk
http://cnc-club.ru/forum/viewtopic.php? ... erk#p60859
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Это в идеале, а на самом деле (по крайней мере в условиях LinuxCNC) у нас скорость на протяжении каждого servo-thread постоянна, поэтому функция получается кусочно непрерывно дифференцируемая (на каждом отрезке servo-thread), а на всем времени - просто непрерывная и дифференцируемая.michael-yurov писал(а):Если речь о непрерывно дифференцируемой функции, то как бы у нас вся траектория такая, кроме точек, где необходимо остановитсья для смены направления.
? можешь по подробнее это описать?michael-yurov писал(а):Все равно при дроблении по 1 мс не получится достаточно плавно менять ускорение.
Я просто пару сообщений пропустилmichael-yurov писал(а):Так это я так, для aaleksander объяснял задачу.
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Ну например такой приблизительный алгоритм.
Дано: фиксированный промежуток времени - t.
1. Допустим, прямо сейчас мы находимся на траектории в точке А. У нас есть некоторое ускорение и некоторая скорость. И еще есть вектор
2. Зная ускорение и скорость, пробегаем по траектории вперед и смотрим, где мы с такими параметрами окажемся через t. Это точка Б.
3. Анализируем промежуточные точки между А и Б на предмет превышения заданных пределов ускорений, по каждой из осей.
4. Если превышений не обнаружено, то точку Б оставляем как есть и переходим на шаг 1. (там Б становится А и все сначала)
5. Если превышение обнаружено, то надо рассчитать, с какими ускорениями нам тут надо было оказаться и скорректировать отрезок от А до этого места на предмет торможения и прочего.
Шаг пять скорее всего будет рекурсивный с возвращением на несколько шагов назад.
Есть какая-нибудь песочница-эмулятор, чтобы поэкспериментировать? Под винду?
Дано: фиксированный промежуток времени - t.
1. Допустим, прямо сейчас мы находимся на траектории в точке А. У нас есть некоторое ускорение и некоторая скорость. И еще есть вектор
2. Зная ускорение и скорость, пробегаем по траектории вперед и смотрим, где мы с такими параметрами окажемся через t. Это точка Б.
3. Анализируем промежуточные точки между А и Б на предмет превышения заданных пределов ускорений, по каждой из осей.
4. Если превышений не обнаружено, то точку Б оставляем как есть и переходим на шаг 1. (там Б становится А и все сначала)
5. Если превышение обнаружено, то надо рассчитать, с какими ускорениями нам тут надо было оказаться и скорректировать отрезок от А до этого места на предмет торможения и прочего.
Шаг пять скорее всего будет рекурсивный с возвращением на несколько шагов назад.
Есть какая-нибудь песочница-эмулятор, чтобы поэкспериментировать? Под винду?
-
- Мастер
- Сообщения: 577
- Зарегистрирован: 23 авг 2013, 18:04
- Репутация: 118
- Откуда: г. Ухта
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Кстати, можно разбить траекторию на участки. В качестве границ участка - точки, где скорость падает до нуля.
И уже эти участки оптимизировать. Заодно и распаралелить можно на многоядерном проце.
И уже эти участки оптимизировать. Заодно и распаралелить можно на многоядерном проце.
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вот здесь у меня уже мозг клинит.Nick писал(а):у нас скорость на протяжении каждого servo-thread постоянна, поэтому функция получается кусочно непрерывно дифференцируемая (на каждом отрезке servo-thread)
И так куча проблем, так еще и эти ограничения с периодом сервоцикла.
Я даже не могу понять - помогают они решить задачу, или наоборот - лишние проблемы создают.
А че тут описывать - Видео в теме про фрезу смотрел? трохоидальную обработку видел? там станок делает больше десяти витков по траектории в секунду, что там можно успеть нарегулировать, если у тебя на виток менее 100 сервоциклов?Nick писал(а): можешь по подробнее это описать?
Там не то что ускорение плавно изменять не получится, а даже скорость будет скакать, не говоря об отклонении сервоприводов от траектории.
А если еще это разбиение на сервоциклы добавит проблем в численном дифференцировании - то совсем дело плохо.
Идея верная. Ее несколько усложнит наличие нескольких осей (нужно будет смотреть из за какой оси нам требуется больше всего сбросить скорость),aaleksander писал(а):Ну например такой приблизительный алгоритм.
Еще будут проблемы с разбиением на эти самые мелкие участки (сложно будет почитать производную от ускорения).
И самое, что выносит мне мозг - это что делать, если, например, в точке "B" мы обнаружили, что текущая скорость слишком высокая, а текущие ускорение слишком низкое, или наоборот, или и то и другое слишком высокое, или и то и другое слишком низкое?
Ладно скорость... а если у нас скорость изменения ускорения настолько мала, что мы не успеваем достаточно быстро увеличить ускорение? Короче - я уже запутался.
А не получится ли так, что у нас будут две рекурсивные функции, одна в другой?
И что значит "скорректировать отрезок от A до этого места?", а как его скорректировать?
Я себе это дело вообще по другому пытался представить:
Вот у нас есть графики скоростей движения по всем осям.
В случае с постоянным ускорением у них будет трапецеидальная форма с постоянным наклоном.
А теперь - скругляем углы этих трапеций так, чтобы площадь и высота трапеций осталась прежней. Графики выдавятся в ширину, и нужно будет одновременно отмасштабировать графики скорости по остальным осям.
Самое важное - правильно выбрать очередность, чтобы не получилось так, что ограничивая одну ось мы выведем за допустимые рамки jerk на другой оси.
Либо - сглаживать графики на всех осях несколько раз до тех пор, пока все не будет в пределах допустимого. При чем при таких раздавливаниях графиков они раздавятся вместе со своими временными интервалами (чтобы все графики одновременно масштабировать).
А вот потом уже придется заново разбить все это дело на настоящие сервоциклы.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Тут ещё вот какой момент: в случае S-разгона увеличивается время между нулевой скоростью и заданной (наоборот), т.е. увеличивается время, когда режимы резания не соответствуют заданным. А это может быть чревато...
P.S. Т.е. надо ещё соотв. образом согласованно менять обороты шпинделя.
P.S. Т.е. надо ещё соотв. образом согласованно менять обороты шпинделя.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
третья производная от пути (первая - скорость, вторая - ускорение). Иногда переводят как "рывок".aaleksander писал(а):что такое jerk.
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
За то, что хорошо, - это то что на маленьких участках ускорения будут ниже, т.к. не будут успевать нарастать до высоких значений, а, соответственно, точность движения по траектории - выше,UAVpilot писал(а):Тут ещё вот какой момент: в случае S-разгона увеличивается время между нулевой скоростью и заданной (наоборот), т.е. увеличивается время, когда режимы резания не соответствуют заданным. А это может быть чревато...
P.S. Т.е. надо ещё соотв. образом согласованно менять обороты шпинделя.
А на больших элементах - будет успевать и ускорение высокое набрать, и скорость.
При чем при изменении ускорения по S кривой, а не линейно в итоге получается достичь максимальной скорости быстрее, т.к. ускорения уже могут быть выше,
И, конечно же, главное - отсутствие вибраций станка от резкого изменения ускорений.
Но вся эта веселуха с плавными ускорениями будет иметь смысл только при полноценном LookAhead.
А менять обороты шпинделя - это уже высший пилотаж.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Видео видел, имхо для этого вполне хватит сервоцикла в 1000Гц, в крайнем случае частоту серво периода можно повысить...michael-yurov писал(а):А че тут описывать - Видео в теме про фрезу смотрел? трохоидальную обработку видел? там станок делает больше десяти витков по траектории в секунду, что там можно успеть нарегулировать, если у тебя на виток менее 100 сервоциклов?
Там не то что ускорение плавно изменять не получится, а даже скорость будет скакать, не говоря об отклонении сервоприводов от траектории.
Скорость скакать не будет, т.к. это сгладит механика + ПИД привода.
Ну этот момент и при обычном разгоне существует, и шпиндель там никто не синхронизируетUAVpilot писал(а):Тут ещё вот какой момент: в случае S-разгона увеличивается время между нулевой скоростью и заданной (наоборот), т.е. увеличивается время, когда режимы резания не соответствуют заданным. А это может быть чревато...
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Частота сервоциклов ограничивается частотой контура регулировки тока, который ограничен частотой шима. Частоту шима поднимать до бесконечности нельзя, иначе будут большие потери в стальном магнитопроводе мотора от токов Фуко. В предельном случае частота контура регулировки тока равна частоте шима. В классическом варианте данные тока в обмотках измеренные в текущем цикле шима используются только в следующем, т.е. есть запаздывание на 1 цикл. В скоростных приводах такой задержки нет. Можно на выход привода поставить фильтр-реактор после которого вместо шима идет аналоговое напряжение, и значит частоту шима можно увеличить во много раз.Nick писал(а):Видео видел, имхо для этого вполне хватит сервоцикла в 1000Гц, в крайнем случае частоту серво периода можно повысить
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
вот здесь говорится про некий фильтр в емс :
пока непонятно - это в дополнение к LA ??
зы
кажись это разработчик Kflop(?)
зы
кажись это разработчик Kflop(?)
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Да, он.nkp писал(а):кажись это разработчик Kflop(?)
Пишет (в скопированном фрагменте) о том, что предпросмотр очень важен.
Что если вам не важна точность (например, для черновой обработки), то можно сохранить траекторию грубо, крупными сегментами, и тогда более-менее можно работать,
А если важна точность, то придется сохранять траекторию мелкими кусочками, и в этом случае без дальнего предпросмотра просто невозможно нормально работать.
Пишет, что в LinuxCNC есть некий предпросмотр, который позволяет объединить мелкие сегменты в более крупные отрезки, но толку от этой фишки мало, если CAM система подготовила хорошую траекторию, и это объединение может только снизить точность.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Есть такое, называется "naive cam detector" http://linuxcnc.org/docs/html/gcode/gcode.html#sec:G64michael-yurov писал(а):Пишет, что в LinuxCNC есть некий предпросмотр, который позволяет объединить мелкие сегменты в более крупные отрезки
Чудес не бывает. Бывают фокусы.
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Почитал ту ветку форума.
Том говорит о том, что LinuxCNC выбрала путь перерасчета сервопетли на стороне компьютера и, судя по всему не собирается отклоняться от этой идеи.
По этой причине система практически непригодна для внешних контроллеров, поэтому практически нет шансов состыковать его KFlop и LinuexCNC.
Хотя, казалось бы, его контроллер может производить ПИД расчеты и сам, но если LinuxCNC отдаст эту часть работы он уже не будет LinuxCNC.
Том говорит о том, что LinuxCNC выбрала путь перерасчета сервопетли на стороне компьютера и, судя по всему не собирается отклоняться от этой идеи.
По этой причине система практически непригодна для внешних контроллеров, поэтому практически нет шансов состыковать его KFlop и LinuexCNC.
Хотя, казалось бы, его контроллер может производить ПИД расчеты и сам, но если LinuxCNC отдаст эту часть работы он уже не будет LinuxCNC.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Почему? Из linuxcnc можно взять любое значение любого пина, хочешь внешний ПИД, просто передаем на него команду на перемещение и все... Вопрос в том, как эту команду передавать... Но и это решаемый вопрос.michael-yurov писал(а):Хотя, казалось бы, его контроллер может производить ПИД расчеты и сам, но если LinuxCNC отдаст эту часть работы он уже не будет LinuxCNC.
-
- Мастер
- Сообщения: 953
- Зарегистрирован: 23 фев 2011, 01:50
- Репутация: 36
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Ты наверняка присматриваешься к LinuхCNC на предмет управления ракетой с самонаведением. Не предназначена она для этого. Она сделана для использования в хоббийных станках с шаговым приводом и управлением через LPT порт.michael-yurov писал(а):А че тут описывать - Видео в теме про фрезу смотрел? трохоидальную обработку видел? там станок делает больше десяти витков по траектории в секунду, что там можно успеть нарегулировать, если у тебя на виток менее 100 сервоциклов?
В нее при создании заложена безопасность использования неподготовленными любителями. Все доработки делаются на свой страх и риск и не поддерживаются публичной версией.
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Вообще-то EMC создавался для управления вот этой "хоббийной" машинкой http://web.archive.org/web/201005272044 ... /hexa.htmlImpartial писал(а):Она сделана для использования в хоббийных станках с шаговым приводом и управлением через LPT порт.
В нее при создании заложена безопасность использования неподготовленными любителями.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
таки да - с самого начала проект был нацелен на управление промышленными станками и в документах NIST (начиная с декабря 1993г)Impartial писал(а): Она сделана для использования в хоббийных станках
прямо об этом говорится...
а вот про хоббийное использование "родители" ЕМС как раз нигде не упоминали ))))
вот начальный прикид разработчиков (1993г):
- PKM
- Почётный участник
- Сообщения: 4263
- Зарегистрирован: 31 мар 2011, 18:11
- Репутация: 705
- Настоящее имя: Андрей
- Откуда: Украина
- Контактная информация:
Re: Что я еще не знал о LinuxCNC, что нам еще предстоит сдел
Жаль, что еще лет 5 ЕМС не поварился у профессионалов NIST. Наверное, деньги закончились