Предложение по увеличению скорости работы LinuxCNC
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
UAVpilot, тема ушла не туда, по этому предлагаю вернуться к истоку.
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Я думаю что это должно ускорить прохождение УП из ккчи мелких отрезков и кривых без существенной потери качества обработки, если конечно эта потеря качества обработки будет вообще.
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Я думаю что это должно ускорить прохождение УП из ккчи мелких отрезков и кривых без существенной потери качества обработки, если конечно эта потеря качества обработки будет вообще.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
torvn77,тебе трудно написать разрабам?
если твое предложение стоящее - на него обязательно обратят внимание...
если нет - ... ))
если твое предложение стоящее - на него обязательно обратят внимание...
если нет - ... ))
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.torvn77 писал(а):Так как отрезки должны проходится за равное время, то если отрезок из-за ограничений допуска оказыаается слишком коротким то ЧПУ приходится снижать скорость его прохождения(подачу).
Это означает то, что кривая состаящая из таких недостаточно длинных отрезков будет проходиться медленнее, чем прямая той же длинны, так как прямая будет составлена из отрезков полной, оптимальной длинны или вообще состоять из одного отрезка(то есть проходится за один сервопериод)
С другой стороны у ЧПУ с меньшим временем прохождения отрезка число таких неоптимальных укороченных отрезков будет мнньше, так как спм оптимальный отрезок будет иметь мнньшие размеры, и ввиду этого снижение скорости необходимое для прохождения отрезков за равное время так же будет меньшим.
В совокупности это даст меньшее время прохождения УП
Молодец!
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Здесь не помешало бы ведро запятых. Но из этого предложения я понял, что планировщик должен за сервопериод рассчитать уже не одну желаемую позицию оси, а несколько. Уже на этом этапе может возникнуть затык производительности. Потому что расчёты идут с плавающей точкой.torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку. Если твой компутер и проц выдержат такую нагрузку, можем дальше продолжать разговор
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Так что-же получается,время прохождения отрезка постоянно меняется в зависимости от требуемой точности,тогда не понятно, постоянно скачет скорость движения при изменении направления.А где же постоянная скорость обработки?При движении со скоростью 10м/мин и сервоцикле 1мс максимальная неточность при изменении траектории (на поворотах) будет максимум 0.16 мм а в реальности меньше.Тем более за 1 мс сложно сильно изменить скорость и,соответственно поднять точность.Я сомневаюсь ,что отставание даже хорошего привода будет меньше.Так что эти выбросы на траектории будут сглажены приводом как фильтром.torvn77 писал(а):Требование прохождения отрезков за равное время проявляется в редких случаях на длинных прямых участках длинной большей чем может пройти станок за время прохождения отрезка двигаясь с заданной скоростью.
Я писал ,что плохо знаю LinuxCNC ,но это не значит ,что не разбираюсь в чпу и приводах вообще.torvn77 писал(а): MX_Master прав, вам надо изучить вопрос, потому что не зная его, вы не понимаете и повод для обсуждения этой темы.
Прочитал про пины ,понял что это не просто 1 или 0,а может быть в частности координатой.Но все равно не понятно,что-же все таки конкретно передает Linux CNC контроллеру и обратно. Пин это слишком абстрактно.MX_Master писал(а): Предлагаю вам, sidor094, пройти в раздел документации и изучить вопрос. Ну а потом уже обсудим (:
Пины
Пины делятся на пины 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
Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.MX_Master писал(а): torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
В чём бы вы не разбирались, но незнание показали на уровне общей теории.sidor094 писал(а):Я писал ,что плохо знаю LinuxCNC ,но это не значит ,что не разбираюсь в чпу и приводах вообще.
Вот пример
Если бы вы разбирались в ЧПУ на уровне теории то под "временем прохождения отрезка" узнали бы период сервоцикла, величину постоянную и не меняющиюся.Так что-же получается,время прохождения отрезка постоянно меняется в чего-то там
Я же стал употреблять "период прохождения отрезка" так как увидел что вы не понимаете написанного, если я это называю сервоциклом, частотой сервоцикла и servoperiod.
(Всё это буквально одно и тоже но с разными контекстами словоупотребления).
Вот, в общем вам надо учить теорию, а мне ставить ОС на комп, чтобы не позориться опечатками при наборе сообщения на телефоне.
Последний раз редактировалось torvn77 03 июн 2019, 10:03, всего редактировалось 2 раза.
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
А что это за теория такая? Кстати о теории, по госту на цифровые сервопривода сервоцикл 1 мс.То есть привод считывает и обрабатывает текущее значение скорости раз в 1 мс.Считается этого вполне достаточно.Быстрее просто мешает инерционность системы.torvn77 писал(а):но незнание показали на уровне общей теории
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
У меня есть автономная система чпу собственной разработки на микроконтроллере.Конечно не LInuxCnc, но мне пока хватает.Кроме того разработал привода на асинхроннике,шд5, сервошаговом.
Тоже вполне рабочие.
Это не реклама. Просто если говорить об "общей теории".
Тоже вполне рабочие.
Это не реклама. Просто если говорить об "общей теории".
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
К сожалению это работает только с LPT, с контролёром почему-то значительно уменьшить servoperiod не получается, меньше 750000 нс. можно получить пропуск реалтайма.michael-yurov писал(а): Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.
Молодец!
- Argon-11
- Мастер
- Сообщения: 2067
- Зарегистрирован: 07 июн 2017, 17:48
- Репутация: 461
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Тема про запятые мне близка. Можно поподробнее, где в данном случае они нужны?MX_Master писал(а):torvn77 писал(а):
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Здесь не помешало бы ведро запятых.
Извините за офф, не удержалсо, ибо лишние запятые гораздо хуже бывают их отсутствия!
Я чота пока не вижу дырок, куда просятся пропущенные запятые. Может, уже калибровка съехала от чтения форумов...
- michael-yurov
- Почётный участник
- Сообщения: 11626
- Зарегистрирован: 26 июл 2012, 00:10
- Репутация: 4634
- Настоящее имя: Михаил Львович
- Откуда: Новоуральск
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Что, существенно сокращается время выполнения УП при прочих равных (при той же скорости подачи и траектории)?torvn77 писал(а):К сожалению это работает только с LPT
Удалось обойти законы физики?
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Ну законы, особенно физики, сам наверно знаешь, обходятся за счёт других законов.
Про то насколько в цифрах не скажу, но на глаз получилось заметно.
В принципе, если у тебя есть станок на LPT то ты и сам можешь опробовать убрать ноль из сервопериода, но сначала для большего эфекта имхо тебе стоит агрессивно оптимизировать настройки планировщика, в частности, но не только, задав глубину анализа от двух с половиной до нескольких тысяч сервоциклов, ну и g64 с P и Q с минимальным значением(у меня было P0.03Q0.03), при увеличении которого время исполнения УП перестаёт значимо снижаться.
Это сами по себе мощные оптимизации, но даже на их фоне эфект от уменьшения servoperiod будет заметен на глаз.
Про то насколько в цифрах не скажу, но на глаз получилось заметно.
В принципе, если у тебя есть станок на LPT то ты и сам можешь опробовать убрать ноль из сервопериода, но сначала для большего эфекта имхо тебе стоит агрессивно оптимизировать настройки планировщика, в частности, но не только, задав глубину анализа от двух с половиной до нескольких тысяч сервоциклов, ну и g64 с P и Q с минимальным значением(у меня было P0.03Q0.03), при увеличении которого время исполнения УП перестаёт значимо снижаться.
Это сами по себе мощные оптимизации, но даже на их фоне эфект от уменьшения servoperiod будет заметен на глаз.
Дилетанту сложные вещи кажутся очень простыми,а профессионалу простые очень сложными.
В результате дилетант работает,а профессионал чешет в затылке.
В результате дилетант работает,а профессионал чешет в затылке.
- merkwurdigliebe
- Мастер
- Сообщения: 608
- Зарегистрирован: 17 дек 2013, 22:14
- Репутация: 580
- Откуда: București
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
у меня c SSCNET III в linuxcnc серво период 222222нс. работает на целероне J3455 под preempt_rt ядром. никаких пропусков. base thread нет, естессно.torvn77 писал(а):К сожалению это работает только с LPT, с контролёром почему-то значительно уменьшить servoperiod не получается, меньше 750000 нс. можно получить пропуск реалтайма.
по поводу передавать серве несколько точек. на стареньких мицубисях MDS-B-SVJ2 примерно так и было сделано. время цикла на шине управления у них 3.55мс. но в каждом пакете кроме финальной позиции (32 бит) передается еще 4 шага (16 бит на каждый). т.е. фактически у сервы период получается 0.88мс. при работе с ними я в linuxcnc делаю серво период 0.88мс, 3 такта запоминаю позиции, а на каждый четвертый шлю пакет с заданием.
но это сделано было исключительно для совместимости с совсем старыми усилками, чтобы протокол не менять.
- MX_Master
- Мастер
- Сообщения: 7478
- Зарегистрирован: 27 июн 2015, 19:45
- Репутация: 3099
- Настоящее имя: Михаил
- Откуда: Алматы
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Ну дык, вот оно ж решение (: Уже 10 точек траектории вместо одной. Как по ощущениям? Быстродействие и плавность вывода шагов увеличились?torvn77 писал(а): Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
- Видишь суслика?Argon-11 писал(а):Я чота пока не вижу дырок, куда просятся пропущенные запятые. Может, уже калибровка съехала от чтения форумов...
- Нет.
- И я не вижу, а он есть.
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2857
- Откуда: Тюмень
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Для stepgen'а, а также простых внешних контроллеров, рассчитанным на интерфейсы с малым временем отклика (Mesa на PCI или LPT) - скорость (либо частоту шагов) по каждой оси. А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.sidor094 писал(а):Какую вообще информацию передает LinuxCNC контроллеру каждый сервоцикл 1000 мкс?
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Огромное спасибо за информацию.
-
- Мастер
- Сообщения: 826
- Зарегистрирован: 20 фев 2014, 09:13
- Репутация: 81
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Тут как раз и основная проблема,Потому,что информация о позиции или количестве шагов к моменту получения её линуксом уже накопит значительную неопределенную задержку и возникает вопрос с накоплением ошибки и соответственно с синхронизацией.Сергей Саныч писал(а):А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Нет, я как раз и не понимаю.MX_Master писал(а):Ну почему же, Сергей (UAVpilot) тоже понимает (:
Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: Предложение по увеличению скорости работы LinuxCNC
Что то я не пойму твой вопрос, ты о какой частоте говоришь?UAVpilot писал(а): Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?
Частота сервоцикла у меня не меняется, а что до частоты генерации шагов то как без её изменения станок будет ускоряться или замедляться?
Что например делает параметр ускорения в stepgen?
Имхо управляет плавным изменением частоты step в рамках одного сервоцикла.
П.С. Я догадываюсь о чём твой вопрос, но отвечу после того как ты свой вопрос уточнишь.