Предложение по увеличению скорости работы LinuxCNC

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

UAVpilot, тема ушла не туда, по этому предлагаю вернуться к истоку.

Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Я думаю что это должно ускорить прохождение УП из ккчи мелких отрезков и кривых без существенной потери качества обработки, если конечно эта потеря качества обработки будет вообще.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение nkp »

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

Re: Предложение по увеличению скорости работы LinuxCNC

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

torvn77 писал(а):Так как отрезки должны проходится за равное время, то если отрезок из-за ограничений допуска оказыаается слишком коротким то ЧПУ приходится снижать скорость его прохождения(подачу).

Это означает то, что кривая состаящая из таких недостаточно длинных отрезков будет проходиться медленнее, чем прямая той же длинны, так как прямая будет составлена из отрезков полной, оптимальной длинны или вообще состоять из одного отрезка(то есть проходится за один сервопериод)

С другой стороны у ЧПУ с меньшим временем прохождения отрезка число таких неоптимальных укороченных отрезков будет мнньше, так как спм оптимальный отрезок будет иметь мнньшие размеры, и ввиду этого снижение скорости необходимое для прохождения отрезков за равное время так же будет меньшим.

В совокупности это даст меньшее время прохождения УП
Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.
Молодец!
Аватара пользователя
MX_Master
Мастер
Сообщения: 7478
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3099
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение MX_Master »

torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Здесь не помешало бы ведро запятых. Но из этого предложения я понял, что планировщик должен за сервопериод рассчитать уже не одну желаемую позицию оси, а несколько. Уже на этом этапе может возникнуть затык производительности. Потому что расчёты идут с плавающей точкой.

torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку. Если твой компутер и проц выдержат такую нагрузку, можем дальше продолжать разговор :)
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение sidor094 »

torvn77 писал(а):Требование прохождения отрезков за равное время проявляется в редких случаях на длинных прямых участках длинной большей чем может пройти станок за время прохождения отрезка двигаясь с заданной скоростью.
Так что-же получается,время прохождения отрезка постоянно меняется в зависимости от требуемой точности,тогда не понятно, постоянно скачет скорость движения при изменении направления.А где же постоянная скорость обработки?При движении со скоростью 10м/мин и сервоцикле 1мс максимальная неточность при изменении траектории (на поворотах) будет максимум 0.16 мм а в реальности меньше.Тем более за 1 мс сложно сильно изменить скорость и,соответственно поднять точность.Я сомневаюсь ,что отставание даже хорошего привода будет меньше.Так что эти выбросы на траектории будут сглажены приводом как фильтром.
torvn77 писал(а): MX_Master прав, вам надо изучить вопрос, потому что не зная его, вы не понимаете и повод для обсуждения этой темы.
Я писал ,что плохо знаю LinuxCNC ,но это не значит ,что не разбираюсь в чпу и приводах вообще.
MX_Master писал(а): Предлагаю вам, sidor094, пройти в раздел документации и изучить вопрос. Ну а потом уже обсудим (:
Прочитал про пины ,понял что это не просто 1 или 0,а может быть в частности координатой.Но все равно не понятно,что-же все таки конкретно передает Linux CNC контроллеру и обратно. Пин это слишком абстрактно.
Пины
Пины делятся на пины in (в которые можно писать) и out (из которых можно читать). Также пины бывают разных типов данных:

BIT - или 1 или 0
FLOAT - число с плавующей запятой.
S32 - целое число от -2147483648 до 2147483647
U32 - положительное (беззнаковое) целое число от 0 до 4294967295
Последний раз редактировалось sidor094 02 июн 2019, 21:46, всего редактировалось 1 раз.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

MX_Master писал(а): torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку.
Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

sidor094 писал(а):Я писал ,что плохо знаю LinuxCNC ,но это не значит ,что не разбираюсь в чпу и приводах вообще.
В чём бы вы не разбирались, но незнание показали на уровне общей теории.
Вот пример
Так что-же получается,время прохождения отрезка постоянно меняется в чего-то там
Если бы вы разбирались в ЧПУ на уровне теории то под "временем прохождения отрезка" узнали бы период сервоцикла, величину постоянную и не меняющиюся.
Я же стал употреблять "период прохождения отрезка" так как увидел что вы не понимаете написанного, если я это называю сервоциклом, частотой сервоцикла и servoperiod.
(Всё это буквально одно и тоже но с разными контекстами словоупотребления).
Вот, в общем вам надо учить теорию, а мне ставить ОС на комп, чтобы не позориться опечатками при наборе сообщения на телефоне.
Последний раз редактировалось torvn77 03 июн 2019, 10:03, всего редактировалось 2 раза.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение sidor094 »

torvn77 писал(а):но незнание показали на уровне общей теории
А что это за теория такая? Кстати о теории, по госту на цифровые сервопривода сервоцикл 1 мс.То есть привод считывает и обрабатывает текущее значение скорости раз в 1 мс.Считается этого вполне достаточно.Быстрее просто мешает инерционность системы.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение sidor094 »

У меня есть автономная система чпу собственной разработки на микроконтроллере.Конечно не LInuxCnc, но мне пока хватает.Кроме того разработал привода на асинхроннике,шд5, сервошаговом.
Тоже вполне рабочие.
Это не реклама. Просто если говорить об "общей теории".
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

michael-yurov писал(а): Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.
Молодец!
К сожалению это работает только с LPT, с контролёром почему-то значительно уменьшить servoperiod не получается, меньше 750000 нс. можно получить пропуск реалтайма.
Аватара пользователя
Argon-11
Мастер
Сообщения: 2067
Зарегистрирован: 07 июн 2017, 17:48
Репутация: 461
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение Argon-11 »

MX_Master писал(а):torvn77 писал(а):
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?

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

Re: Предложение по увеличению скорости работы LinuxCNC

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

torvn77 писал(а):К сожалению это работает только с LPT
Что, существенно сокращается время выполнения УП при прочих равных (при той же скорости подачи и траектории)?
Удалось обойти законы физики?
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

Ну законы, особенно физики, сам наверно знаешь, обходятся за счёт других законов.

Про то насколько в цифрах не скажу, но на глаз получилось заметно.

В принципе, если у тебя есть станок на LPT то ты и сам можешь опробовать убрать ноль из сервопериода, но сначала для большего эфекта имхо тебе стоит агрессивно оптимизировать настройки планировщика, в частности, но не только, задав глубину анализа от двух с половиной до нескольких тысяч сервоциклов, ну и g64 с P и Q с минимальным значением(у меня было P0.03Q0.03), при увеличении которого время исполнения УП перестаёт значимо снижаться.

Это сами по себе мощные оптимизации, но даже на их фоне эфект от уменьшения servoperiod будет заметен на глаз.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
Аватара пользователя
merkwurdigliebe
Мастер
Сообщения: 608
Зарегистрирован: 17 дек 2013, 22:14
Репутация: 580
Откуда: București
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение merkwurdigliebe »

torvn77 писал(а):К сожалению это работает только с LPT, с контролёром почему-то значительно уменьшить servoperiod не получается, меньше 750000 нс. можно получить пропуск реалтайма.
у меня c SSCNET III в linuxcnc серво период 222222нс. работает на целероне J3455 под preempt_rt ядром. никаких пропусков. base thread нет, естессно.

по поводу передавать серве несколько точек. на стареньких мицубисях MDS-B-SVJ2 примерно так и было сделано. время цикла на шине управления у них 3.55мс. но в каждом пакете кроме финальной позиции (32 бит) передается еще 4 шага (16 бит на каждый). т.е. фактически у сервы период получается 0.88мс. при работе с ними я в linuxcnc делаю серво период 0.88мс, 3 такта запоминаю позиции, а на каждый четвертый шлю пакет с заданием.

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

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение MX_Master »

torvn77 писал(а): Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
Ну дык, вот оно ж решение (: Уже 10 точек траектории вместо одной. Как по ощущениям? Быстродействие и плавность вывода шагов увеличились?
Argon-11 писал(а):Я чота пока не вижу дырок, куда просятся пропущенные запятые. Может, уже калибровка съехала от чтения форумов...
- Видишь суслика?
- Нет.
- И я не вижу, а он есть.
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2857
Откуда: Тюмень
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

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

sidor094 писал(а):Какую вообще информацию передает LinuxCNC контроллеру каждый сервоцикл 1000 мкс?
Для stepgen'а, а также простых внешних контроллеров, рассчитанным на интерфейсы с малым временем отклика (Mesa на PCI или LPT) - скорость (либо частоту шагов) по каждой оси. А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
Чудес не бывает. Бывают фокусы.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение sidor094 »

Огромное спасибо за информацию.
sidor094
Мастер
Сообщения: 826
Зарегистрирован: 20 фев 2014, 09:13
Репутация: 81
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение sidor094 »

Сергей Саныч писал(а):А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
Тут как раз и основная проблема,Потому,что информация о позиции или количестве шагов к моменту получения её линуксом уже накопит значительную неопределенную задержку и возникает вопрос с накоплением ошибки и соответственно с синхронизацией.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение Serg »

MX_Master писал(а):Ну почему же, Сергей (UAVpilot) тоже понимает (:
Нет, я как раз и не понимаю.
torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: Предложение по увеличению скорости работы LinuxCNC

Сообщение torvn77 »

UAVpilot писал(а): Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?
Что то я не пойму твой вопрос, ты о какой частоте говоришь?
Частота сервоцикла у меня не меняется, а что до частоты генерации шагов то как без её изменения станок будет ускоряться или замедляться?
Что например делает параметр ускорения в stepgen?
Имхо управляет плавным изменением частоты step в рамках одного сервоцикла.

П.С. Я догадываюсь о чём твой вопрос, но отвечу после того как ты свой вопрос уточнишь.
Ответить

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