Универсальный планировщик траектории

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Универсальный планировщик траектории

Сообщение MX_Master »

Цель проекта - накатать простой быстрый планировщик траектории, который не будет зависеть от типа процессора и операционной системы.

Требования:
  • Язык С.
  • Без зависимостей от других библиотек.
  • Общение с внешним миром - stdin/stdout.
  • Беспроблемная сборка из исходников под любую ОС и проц.
Задача:
  • Нарезка G кода на кусочки траектории указанной длины по времени, с учётом ускорений, скоростей и прочих параметров.
Назначение:
  • Использование в любых личных и публичных проектах управления движением. Использование в других системах ЧПУ.
Последний раз редактировалось MX_Master 14 окт 2022, 10:41, всего редактировалось 1 раз.
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение MX_Master »

На мой взгляд, первичная фаза обработки G кода, должна переваривать каждую строку в бинарную структуру одинаковой длины. Это позволит быстрее обрабатывать данные, быстрее ориентироваться и переходить к нужной строке. Структура бинарной строки, должна зависеть от поддерживаемых (G/M/..) кодов.

Вторая фаза - переварить сложный бинарный G код в более простой. Т.е. раскрыть все циклы и сложные G коды (G2/G3/..), превратив их в простые линейные кусочки.

Третья фаза - разбить простой бинарный G код на кусочки указанной длины по времени. С учётом формул и зависимостей (ускорения, макс. скорость и прочие параметры).
Duhas
Мастер
Сообщения: 1949
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 284
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение Duhas »

я бы тогда в целом мух от котлет отделял, g код просто форма представления команды. как постпроцессор генерирует g код из набора перемещений и т.д., так и перед планировщиком должен быть препроцессор по идее.
AAN
Мастер
Сообщения: 284
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 35
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение AAN »

Эта штука называется - интерполятор, самая сложная часть ЧПУ, особенно многокоординатного. Сомневаюсь, что нечто подобное можно сделать в рамках озвученного ТЗ. Если, конечно, речь о РВ.
Duhas
Мастер
Сообщения: 1949
Зарегистрирован: 10 окт 2015, 23:25
Репутация: 284
Настоящее имя: Андрей
Откуда: Красноярск
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение Duhas »

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

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение sidor094 »

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

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение sidor094 »

MX_Master писал(а): Нарезка G кода на кусочки траектории указанной длины по времени, с учётом ускорений, скоростей и прочих параметров
А зачем нарезать жкод у меня обрабатывается и выполняется целиком команда .Движение целиком в прерывании.Ускорение там-же.По окончании автоматически выгребает из буфера следующую команду ,или подготавливает следующую дугу окружности (при круговом движении).
Основная же программа если видит что буфер забрали ,подготавливает следующую команду
Аватара пользователя
MX_Master
Мастер
Сообщения: 7465
Зарегистрирован: 27 июн 2015, 19:45
Репутация: 3088
Настоящее имя: Михаил
Откуда: Алматы
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение MX_Master »

Исполнители команд могут быть разные. Это может быть и внешний контроллер, и программа, работающая по соседству. Или вовсе, вариант без исполнителя. К примеру, вариант без исполнителя полезен при визуальном отображении и сравнении реальной траектории и траектории чисто по G коду.

Кроме того, G код может быть загрублен или наоборот, слишком точным. Не каждый исполнитель сможет быстро отрабатывать микронные кусочки. Буфер при этом будет чрезмерно забит и передавать такой буфер внешнему исполнителю будет накладно. А вот кусочки траектории длиной, скажем, в миллисекунду, прекрасно переварит и микроконтроллер, и настольный ЦП.
alex_sar
Мастер
Сообщения: 1672
Зарегистрирован: 28 авг 2018, 17:13
Репутация: 278
Настоящее имя: Алексей
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение alex_sar »

Один вопрос. Зачем это?

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

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение MX_Master »

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

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение sidor094 »

MX_Master писал(а): В LinuxCNC планировщик умеет только в 3 оси, ну и прочие виды ускорений, кроме линейного, недоступны.
Вначале у меня было экспоненциальное ускорение.Из досмтоинств - самая простая и нетребовательная к ресурсам организация.Из недостатков- слишком большое начальное ускорение и слишком низкое в конце.Соответственно при одинаковых возможностях приводов занимает больше времени.Долгое время не мог реализовать линейное без дополнительных предпросмотров.Затем нашел способ.Достаточно простой,но ресурсозатратный(требует большого буфера в озу для каждой координаты).Таким же способом можно организовать любую форму ускорения в том числе и S образное,но в отличие от линейного (при расчете которого используютсяч только начальная и конечная ячейки) S образное требует перерасчета многих ячеек буфера в идеале всех на практике можно разбить на несколько кусков (линейное и изгибы).
AAN
Мастер
Сообщения: 284
Зарегистрирован: 14 апр 2015, 10:28
Репутация: 35
Настоящее имя: Антон
Откуда: Томск
Контактная информация:

Re: Универсальный планировщик траектории (Linux, Windows)

Сообщение AAN »

Если будете делать многокоординатный интерполятор, тут есть алгоритмы и формулы: https://www.cta.ru/cms/f/352156.pdf
Ответить

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