Страница 2 из 5
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 20:28
torvn77
UAVpilot, тема ушла не туда, по этому предлагаю вернуться к истоку.
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Я думаю что это должно ускорить прохождение УП из ккчи мелких отрезков и кривых без существенной потери качества обработки, если конечно эта потеря качества обработки будет вообще.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 20:45
nkp
torvn77,тебе трудно написать разрабам?
если твое предложение стоящее - на него обязательно обратят внимание...
если нет - ... ))
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:08
michael-yurov
torvn77 писал(а):Так как отрезки должны проходится за равное время, то если отрезок из-за ограничений допуска оказыаается слишком коротким то ЧПУ приходится снижать скорость его прохождения(подачу).
Это означает то, что кривая состаящая из таких недостаточно длинных отрезков будет проходиться медленнее, чем прямая той же длинны, так как прямая будет составлена из отрезков полной, оптимальной длинны или вообще состоять из одного отрезка(то есть проходится за один сервопериод)
С другой стороны у ЧПУ с меньшим временем прохождения отрезка число таких неоптимальных укороченных отрезков будет мнньше, так как спм оптимальный отрезок будет иметь мнньшие размеры, и ввиду этого снижение скорости необходимое для прохождения отрезков за равное время так же будет меньшим.
В совокупности это даст меньшее время прохождения УП
Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.
Молодец!
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:14
MX_Master
torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Здесь не помешало бы ведро запятых. Но из этого предложения я понял, что планировщик должен за сервопериод рассчитать уже не одну желаемую позицию оси, а несколько. Уже на этом этапе может возникнуть затык производительности. Потому что расчёты идут с плавающей точкой.
torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку. Если твой компутер и проц выдержат такую нагрузку, можем дальше продолжать разговор

Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:23
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
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:44
torvn77
MX_Master писал(а):
torvn77, попробуй для начала уменьшить сервоцикл с 1000 мкс, скажем, до 200 мкс. А вместо stepgen'а поставь какую-ньть заглушку.
Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:50
torvn77
sidor094 писал(а):Я писал ,что плохо знаю LinuxCNC ,но это не значит ,что не разбираюсь в чпу и приводах вообще.
В чём бы вы не разбирались, но незнание показали на уровне общей теории.
Вот пример
Так что-же получается,время прохождения отрезка постоянно меняется в чего-то там
Если бы вы разбирались в ЧПУ на уровне теории то под "временем прохождения отрезка" узнали бы период сервоцикла, величину постоянную и не меняющиюся.
Я же стал употреблять "период прохождения отрезка" так как увидел что вы не понимаете написанного, если я это называю сервоциклом, частотой сервоцикла и servoperiod.
(Всё это буквально одно и тоже но с разными контекстами словоупотребления).
Вот, в общем вам надо учить теорию, а мне ставить ОС на комп, чтобы не позориться опечатками при наборе сообщения на телефоне.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 21:57
sidor094
torvn77 писал(а):но незнание показали на уровне общей теории
А что это за теория такая? Кстати о теории, по госту на цифровые сервопривода сервоцикл 1 мс.То есть привод считывает и обрабатывает текущее значение скорости раз в 1 мс.Считается этого вполне достаточно.Быстрее просто мешает инерционность системы.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 22:03
sidor094
У меня есть автономная система чпу собственной разработки на микроконтроллере.Конечно не LInuxCnc, но мне пока хватает.Кроме того разработал привода на асинхроннике,шд5, сервошаговом.
Тоже вполне рабочие.
Это не реклама. Просто если говорить об "общей теории".
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 22:07
torvn77
michael-yurov писал(а):
Сам придумал проблему, и сам нашел вариант оптимизировать / улучшить.
Молодец!
К сожалению это работает только с LPT, с контролёром почему-то значительно уменьшить servoperiod не получается, меньше 750000 нс. можно получить пропуск реалтайма.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 22:55
Argon-11
MX_Master писал(а):torvn77 писал(а):
Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Здесь не помешало бы ведро запятых.
Тема про запятые мне близка. Можно поподробнее, где в данном случае они нужны?
Извините за офф, не удержалсо, ибо лишние запятые гораздо хуже бывают их отсутствия!
Я чота пока не вижу дырок, куда просятся пропущенные запятые. Может, уже калибровка съехала от чтения форумов...
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 02 июн 2019, 23:15
michael-yurov
torvn77 писал(а):К сожалению это работает только с LPT
Что, существенно сокращается время выполнения УП при прочих равных (при той же скорости подачи и траектории)?
Удалось обойти законы физики?
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 00:55
torvn77
Ну законы, особенно физики, сам наверно знаешь, обходятся за счёт других законов.
Про то насколько в цифрах не скажу, но на глаз получилось заметно.
В принципе, если у тебя есть станок на LPT то ты и сам можешь опробовать убрать ноль из сервопериода, но сначала для большего эфекта имхо тебе стоит агрессивно оптимизировать настройки планировщика, в частности, но не только, задав глубину анализа от двух с половиной до нескольких тысяч сервоциклов, ну и g64 с P и Q с минимальным значением(у меня было P0.03Q0.03), при увеличении которого время исполнения УП перестаёт значимо снижаться.
Это сами по себе мощные оптимизации, но даже на их фоне эфект от уменьшения servoperiod будет заметен на глаз.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 03:42
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 такта запоминаю позиции, а на каждый четвертый шлю пакет с заданием.
но это сделано было исключительно для совместимости с совсем старыми усилками, чтобы протокол не менять.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 05:04
MX_Master
torvn77 писал(а):
Делал одному дяде на старом компе конфиг на LPT с сервопериодом 100 000 нс.
Меньше делать не стал так как base_period был 25000 нс. и я боялся образования каких ни-будь резонансов.
Ну дык, вот оно ж решение (: Уже 10 точек траектории вместо одной. Как по ощущениям? Быстродействие и плавность вывода шагов увеличились?
Argon-11 писал(а):Я чота пока не вижу дырок, куда просятся пропущенные запятые. Может, уже калибровка съехала от чтения форумов...
- Видишь суслика?
- Нет.
- И я не вижу, а он есть.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 11:47
Сергей Саныч
sidor094 писал(а):Какую вообще информацию передает LinuxCNC контроллеру каждый сервоцикл 1000 мкс?
Для stepgen'а, а также простых внешних контроллеров, рассчитанным на интерфейсы с малым временем отклика (Mesa на PCI или LPT) - скорость (либо частоту шагов) по каждой оси. А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 15:30
sidor094
Огромное спасибо за информацию.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 15:35
sidor094
Сергей Саныч писал(а):А принимает от контроллера - фактическую позицию (или количество фактически сгенерированных импульсов step). Исходя из этого рассчитывается скорость для следующего сервоцикла.
Как работают контроллеры на интерфейсах с большим или неопределенным временем отклика (USB, Ethernet со стандартным драйвером) - не разбирался.
Тут как раз и основная проблема,Потому,что информация о позиции или количестве шагов к моменту получения её линуксом уже накопит значительную неопределенную задержку и возникает вопрос с накоплением ошибки и соответственно с синхронизацией.
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 03 июн 2019, 23:26
Serg
MX_Master писал(а):Ну почему же, Сергей (UAVpilot) тоже понимает (:
Нет, я как раз и не понимаю.
torvn77 писал(а):Как тебе мысль передавать в stepgen одним блоком для одной оси несколько значений координаты и соответствующего им вектора скорости и за один сервопериод и контролировать только последние координаты блока?
Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?
Re: Предложение по увеличению скорости работы LinuxCNC
Добавлено: 04 июн 2019, 00:05
torvn77
UAVpilot писал(а):
Зачем, если в пределах одного сервоцикла частота генерации не должна меняться?
Что то я не пойму твой вопрос, ты о какой частоте говоришь?
Частота сервоцикла у меня не меняется, а что до частоты генерации шагов то как без её изменения станок будет ускоряться или замедляться?
Что например делает параметр ускорения в stepgen?
Имхо управляет плавным изменением частоты step в рамках одного сервоцикла.
П.С. Я догадываюсь о чём твой вопрос, но отвечу после того как ты свой вопрос уточнишь.