Вычисление расстояния до конца контура

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Вычисление расстояния до конца контура

Сообщение Ворон226 »

Есть необходимость вычислять расстояние до конца контура.

В настоящее время есть стандартный пин - расстояние до конца сегмента - motion.distance-to-go.
Но встречаются сегменты в контуре, длина которых меньше, чем необходимое значение. В этом случае motion.distance-to-go напрямую не поможет...

Как организовать это вычисление?
Ясно, что отдельной подпрограммой. Но как определить в реальном времени длину КОНТУРА? А точнее, расстояние до конца контура?

Пока в мыслях только логика работы подпрограммы и недостаток знания стандартных сигналов и пинов CNC...
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Вот такая идея пришла ко мне при поездке за продуктами для дома (чего только в эти моменты в голову не приходит?):

Разбить задачу на несколько - часть выполнять ДО выполнения программы, часть - во время выполнения.
Например
Создаём программу в G-кодах.
Пишем небольшой редактор для программы в G-кодах, который делает следующее:
1. Находит начало контура
2. Вычисляет длину первого сегмента
3. Запоминает его и переходит к следующему сегменту контура
4. Вычисляет длину второго сегмента и прибавляет его к длине первого.
5. Запоминает сумму.
6. Так и высчитывает до конца контура
7. Получаем длину контура.
8. Прописываем перед просчитанным контуром команду, которая прописывает в
motion.analog-out-00 (float, out) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M67 или M68.
значение длины контура

Теперь пишем компонент, который будет считать в реальном времени сколько осталось до конца контура и сравнивает это значение со значением, установленным "ползунком". При совпадении - переключает нужный пин.

Как думаете - можно ли такое реализовать?
Хочешь быть счастливым? Будь им!
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение aftaev »

Ворон226, можно узнать для чего это?
Спрашивал подобное для плазмы, но так и не решили как это сделать :)
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.
Хочешь быть счастливым? Будь им!
aftaev
Зачётный участник
Зачётный участник
Сообщения: 34042
Зарегистрирован: 04 апр 2010, 19:22
Репутация: 6194
Откуда: Казахстан.
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение aftaev »

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

Re: Вычисление расстояния до конца контура

Сообщение Serg »

Ворон226 писал(а):Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.
Давно б уже какой-нибудь отсекатель соорудил на самом кончике дозатора...
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Отсекатель в запасе. А плазму как отсекать? ;)
Хочешь быть счастливым? Будь им!
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5183
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Serg »

Не силён в плазмах, но думаю можно быстро "подпрыгнуть" на высоту, где разряд погаснет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Я тоже в плазме лох - но, если решение одной задачи позволит реализовать две-три функции на разных станках, то разве не нужно этим заняться?
Вот и пытаюсь.
Хочешь быть счастливым? Будь им!
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение solo »

А если как вариант контролировать ускорение перемещение тоесть на конце перемешения скорость должна падать при G61, или если поставить паузу G4Р() в конце контура. И если ускорение становится отрицательным то значит надо выключать подачу клея. А величиной ускорения менять растояние выключения.
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Но ускорение становится отрицательным и при отработке крутого поворота или острого угла.
Хочешь быть счастливым? Будь им!
Аватара пользователя
solo
Мастер
Сообщения: 1374
Зарегистрирован: 20 окт 2011, 18:39
Репутация: 272
Настоящее имя: Юрий Соловьев
Откуда: Украина Харьков
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение solo »

Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
DSP1
Опытный
Сообщения: 172
Зарегистрирован: 15 янв 2012, 19:37
Репутация: 2
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение DSP1 »

Ворон226 , а в чем G-code готовите ?
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

solo писал(а):Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
Дело в том, что система подачи контурного состава весьма инерционна. Потому нужно загодя (около 3-4 мм) до конца контура не только останавливать подачу, но даже подсасывать.
Хочешь быть счастливым? Будь им!
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

DSP1 писал(а):Ворон226 , а в чем G-code готовите ?
Gcodetools - plug-in Inkscape для экспорта в Gcode
Хочешь быть счастливым? Будь им!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Nick »

В реальном времени такую штуку не просто считать. В принципе в LinuxCNC в глубине motion есть distance to go, он рассчитывается для look ahead... но вот достучаться до него будет не просто.
Надо подумать, может что-то с Gcodetools можно придумать...

А реверс движка насоса в самом конце не помогает? Какая инерционность будет с реверсом?
В принципе можно попробовать написать и пост процессор, который навставляет точек при приближении к концу контура...

Кстати, как у тебя в итоге управляется насос через пины analog-out?
Аватара пользователя
Ворон226
Мастер
Сообщения: 1923
Зарегистрирован: 01 окт 2012, 18:14
Репутация: 181
Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Ворон226 »

Так я об этом и писал...

Качественней линия получается, если и вначале резко "поддать" давление и в конце резко "отсосать" (сбросить давление).
Пока играюсь с пятью регулировками: 4 скорости и одно расстояние до конца контура.
analog-out конечно использую. Прописываю в пре- и пост-процессорах Gcodetools
Хочешь быть счастливым? Будь им!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Nick »

C началом все просто... там можно по времени давление держать... а вот с концом надо будет придумывать. Кстати, если менять analog-out linuxcnc на этой строчке не останавливается?
Gozz
Новичок
Сообщения: 14
Зарегистрирован: 24 окт 2012, 15:10
Репутация: 0
Контактная информация:

Re: Вычисление расстояния до конца контура

Сообщение Gozz »

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

Re: Вычисление расстояния до конца контура

Сообщение nkp »

отдельный плк - имхо избыточно,
это можно внутренними ресурсами разрулить...
но все таки - возложить на кам данные функции - наверно будет правильней...
зы
сейчас перешел в соседнюю тему с тем же вопросом - и действительно обсуждали уже))
кам не кам - а скрипт для постобработки кода с расчетом можно написать(почему бы не попробовать ;) )
какой там точный алгоритм - расчитываем дистанцию и предостановка в зависимости от скорости??
ззы
надо бы объеденить темы
Ответить

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