LinuxCNC S-разгон и торможение

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Nick »

aystarik писал(а):http://www.synthetos.com/wiki/index.php ... yG-Planner Ник, вот на это не смотрел? Ребята вроде как жерк на 6 осях на ордюне считают... И статейка даже есть какая-то...
Как-то странно у них получается
Jerk Equations

The jerk equations drive acceleration and deceleration planning. A good treatment can be found in Ed Red's course notes http://www.et.byu.edu/~ered/ME537/Notes/Ch5.pdf

There are two core calculations that drive everything else. This pair of functions returns the fourth thing knowing the other three.
_mp_get_target_length() is a convenient expression for determining the optimal_length (L) of a line given the inital velocity (Vi), target velocity (Vt) and maximum jerk (Jm). The length (position) equation is derived from:

a) L = (Vt-Vi) * T - (Ar*T^2)/2 ... which becomes b) with substitutions for Ar and T
b) L = (Vt-Vi) * 2*sqrt((Vt-Vi)/Jm) - (2*sqrt((Vt-Vi)/Jm) * (Vt-Vi))/2
c) L = (Vt-Vi)^(3/2) / sqrt(Jm) ...is an alternate form of b) (see Wolfram Alpha)
d) L = abs(Vt-Vi) * sqrt(abs(Vt-Vi)/Jm) ... is a second alternate form. Note: Vt is not always > Vi due to rounding, tolerances, and other factors.
where Ar = (Jm*T)/4 Ar is ramp acceleration
where T = 2*sqrt((Vt-Vi)/Jm) T is time
where Jm (maximum jerk) is the cartesian sum of the jerks for each axis in the move. The values in the unit vector are used to scale the resultant jerk for the move.
assumes Vt, Vi and L are positive or zero
Дистанция зависит не только от текущей скорости и требуемой, но и от текущего ускорения.
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6192
Откуда: Казахстан.
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение aftaev »

нам лижбы работало грамотно :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Starik
Опытный
Сообщения: 136
Зарегистрирован: 13 май 2012, 21:22
Репутация: 17
Откуда: Долгопрудный

Re: LinuxCNC S-разгон и торможение

Сообщение Starik »

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

Re: LinuxCNC S-разгон и торможение

Сообщение Nick »

Дак они в формулах его вроде вообще не используют... :thinking:
Аватара пользователя
Starik
Опытный
Сообщения: 136
Зарегистрирован: 13 май 2012, 21:22
Репутация: 17
Откуда: Долгопрудный

Re: LinuxCNC S-разгон и торможение

Сообщение Starik »

Nick писал(а):a) L = (Vt-Vi) * T - (Ar*T^2)/2 ... which becomes b) with substitutions for Ar and T
Nick писал(а):where Ar = (Jm*T)/4 Ar is ramp acceleration
лишняя переменная... :)
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Lexxa »

Ник, как дела в этой области?
:bender:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Lexxa »

Nick, просто подумал, треугольные ускорения получаются при [EMCMOT]TRAJ_PERIOD = const.

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

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

Re: LinuxCNC S-разгон и торможение

Сообщение Nick »

Lexxa писал(а):т.е. внутри периода приращение скорости постоянно.
Так оно и так вроде постоянно? График скорости получается такой _/''''''''\_ , при этом ускорение такое '''------_ , а нам надо ускорение _/''''''''\_


Nick, просто подумал, треугольные ускорения получаются при [EMCMOT]TRAJ_PERIOD = const.
А где про это почитать?
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Lexxa »

Нигде)
Я имел ввиду, что если на этапах разгона и торможения менять длину сервопериода,тодля внешних железках это будет равносильно изменению ускорения в момент ускорения оси.
Но начинается сложность с граничными условиями, когда a->0, т.е. t->бесконечности. Путь тупиковый.

Ник, почему нельзя ввести функцию для значения acc и не париться?
Ведь все вычисления мгновенные
Вот функция
trajInifile->Find(&axes, "AXES", "TRAJ");
в ней ищется значение MAX_ACCELERATION из INI файла:
trajInifile->Find(&acc, "MAX_ACCELERATION", "TRAJ");
Допустим надо разогнаться до скорости V со скорости Vo=0.
четыре участка -
1 - скорость меняется не линейно время t1 на участке скорости _/
2 - скорость меняется линейно время t2 на участке скорости /
3 - скорость меняется нелинейно время t3 на участке скорости ""\
4 - скорость не меняется.
в INI файл добавляем три параметра T1, T2, T3 соответствующие участкам 1, 2, 3.
Математически описываем acc функцию, возвращающую acc на разных временных периодах - T1, T2 и T3.
Так не получится?
Ведь значение этого ускорения используется в TRAJECTORY PLANER?
Или если так сделать, то он не сможет корректно рассчитать путь оси до точки останова?
:bender:
Impartial
Мастер
Сообщения: 953
Зарегистрирован: 23 фев 2011, 01:50
Репутация: 36
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Impartial »

Nick писал(а):А где про это почитать?
Чтобы все не читать стоит глянуть картинку на 20 странице. Будет понятно что откуда происходит.
Подобные характеристики скоростных траекторий важны в прямом приводе, допустим в позиционере камеры.
В станке, на мой взгляд, бесполезное увеличение сложности алгоритма планировщика.
Вложения
jmentz.pdf
(826.11 КБ) 540 скачиваний
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Nick »

Lexxa писал(а):Ник, почему нельзя ввести функцию для значения acc и не париться?
Потому, что ее должен знать планировщик. И исходя из нее рассчитывать траекторию. И еще по хорошему согласовывать траектории всех осей.
Планировщик считает дистанцию до остановки, чтобы понять когда надо начинать тормозить. При обычных условиях у нас есть скорость и ускорение v a. Дистанция до остановки S = v0*t + a*t^2/2. Время остановки t = v0/a.
К чему это приводит, когда просто добавляем jerk - максимальное изменение ускорения aka ускорение ускорения. То получаем дистанцию S = v0*t + a*t^2/2 + j*t^3/6, а время надо считать из уровнения v0 + a*t + j*t^2/2. Если подставить напрямую, то получается уравнение хрен знает какой степени. И приходится рассматривать 8 интервалов. В общем геморрой.
MGG
Мастер
Сообщения: 3673
Зарегистрирован: 08 фев 2016, 16:33
Репутация: 1010
Настоящее имя: Манн Геннадий Геннадьевич
Откуда: Москва
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MGG »

Господа, а у этой темы было какое то логическое продолжение?
http://www.cnc-club.ru/forum/viewtopic. ... 76#p304076 Поставки оборудования для ваших станков
https://www.instagram.com/dtw.moscow/
dtw.moscow@gmail.com
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MX_Master »

Тут такое дело. Если нужно править планировщик, то и все stepgen'ы надо допиливать. Ибо скорость они меняют тоже линейно.
MGG
Мастер
Сообщения: 3673
Зарегистрирован: 08 фев 2016, 16:33
Репутация: 1010
Настоящее имя: Манн Геннадий Геннадьевич
Откуда: Москва
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MGG »

MX_Master писал(а):Тут такое дело. Если нужно править планировщик, то и все stepgen'ы надо допиливать. Ибо скорость они меняют тоже линейно.
Какие то наработки гуглятся, но вот пробовал ли кто что. Степгены пофиг, лично мне, аналог
http://www.cnc-club.ru/forum/viewtopic. ... 76#p304076 Поставки оборудования для ваших станков
https://www.instagram.com/dtw.moscow/
dtw.moscow@gmail.com
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MX_Master »

Аналог пофиг, лично мне, EtherCAT (:
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение Lexxa »

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

Re: LinuxCNC S-разгон и торможение

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

MX_Master писал(а):все stepgen'ы надо допиливать. Ибо скорость они меняют тоже линейно.
Генераторы держат ту частоту, которую прикажут (в меру своих способностей). А приказы поступают один раз за сервопериод. Скачок частоты за 1 мсек достаточно мал, чтобы механика что-то заметила.
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MX_Master »

Хорошо, уговорили. Осталось дело за малым, накатать другой планировщик :hehehe:
Добровольцы есть? -Нет. Так и знал :)
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: LinuxCNC S-разгон и торможение

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

S-кривые - не самоцель. Тут во взрослых системах эвон что бывает :) Re: Обрабатывающий центр SV500 #569
Чудес не бывает. Бывают фокусы.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: LinuxCNC S-разгон и торможение

Сообщение MX_Master »

Взрослые системы подразумевают взрослые деньги, потраченные на разработку и тесты с учётом взрослых задач. А просто так спрашивать по форумам запилил ли кто-то S-кривые в LinuxCNC - бессмысленно.
Ответить

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