Страница 1 из 3

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

Добавлено: 05 апр 2013, 14:21
Ворон226
Есть необходимость вычислять расстояние до конца контура.

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

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

Пока в мыслях только логика работы подпрограммы и недостаток знания стандартных сигналов и пинов CNC...

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

Добавлено: 07 апр 2013, 14:19
Ворон226
Вот такая идея пришла ко мне при поездке за продуктами для дома (чего только в эти моменты в голову не приходит?):

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

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

Как думаете - можно ли такое реализовать?

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

Добавлено: 07 апр 2013, 15:00
aftaev
Ворон226, можно узнать для чего это?
Спрашивал подобное для плазмы, но так и не решили как это сделать :)

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

Добавлено: 07 апр 2013, 15:11
Ворон226
Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.

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

Добавлено: 07 апр 2013, 15:14
aftaev
в плазме примерно тоже самое. Для плазморезок есть софт который разбивает траекторию и в конце вставляет команду на отключение ТНС. В свободном доступе такого софта не встречал, только продается вместе со станками :)

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

Добавлено: 07 апр 2013, 16:33
Serg
Ворон226 писал(а):Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.
Давно б уже какой-нибудь отсекатель соорудил на самом кончике дозатора...

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

Добавлено: 07 апр 2013, 17:46
Ворон226
Отсекатель в запасе. А плазму как отсекать? ;)

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

Добавлено: 07 апр 2013, 18:26
Serg
Не силён в плазмах, но думаю можно быстро "подпрыгнуть" на высоту, где разряд погаснет.

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

Добавлено: 07 апр 2013, 18:31
Ворон226
Я тоже в плазме лох - но, если решение одной задачи позволит реализовать две-три функции на разных станках, то разве не нужно этим заняться?
Вот и пытаюсь.

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

Добавлено: 08 апр 2013, 09:33
solo
А если как вариант контролировать ускорение перемещение тоесть на конце перемешения скорость должна падать при G61, или если поставить паузу G4Р() в конце контура. И если ускорение становится отрицательным то значит надо выключать подачу клея. А величиной ускорения менять растояние выключения.

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

Добавлено: 08 апр 2013, 14:54
Ворон226
Но ускорение становится отрицательным и при отработке крутого поворота или острого угла.

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

Добавлено: 08 апр 2013, 18:03
solo
Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.

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

Добавлено: 08 апр 2013, 19:57
DSP1
Ворон226 , а в чем G-code готовите ?

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

Добавлено: 08 апр 2013, 22:08
Ворон226
solo писал(а):Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
Дело в том, что система подачи контурного состава весьма инерционна. Потому нужно загодя (около 3-4 мм) до конца контура не только останавливать подачу, но даже подсасывать.

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

Добавлено: 08 апр 2013, 22:08
Ворон226
DSP1 писал(а):Ворон226 , а в чем G-code готовите ?
Gcodetools - plug-in Inkscape для экспорта в Gcode

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

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

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

Кстати, как у тебя в итоге управляется насос через пины analog-out?

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

Добавлено: 09 апр 2013, 06:54
Ворон226
Так я об этом и писал...

Качественней линия получается, если и вначале резко "поддать" давление и в конце резко "отсосать" (сбросить давление).
Пока играюсь с пятью регулировками: 4 скорости и одно расстояние до конца контура.
analog-out конечно использую. Прописываю в пре- и пост-процессорах Gcodetools

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

Добавлено: 09 апр 2013, 20:07
Nick
C началом все просто... там можно по времени давление держать... а вот с концом надо будет придумывать. Кстати, если менять analog-out linuxcnc на этой строчке не останавливается?

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

Добавлено: 18 май 2013, 20:41
Gozz
у меня ест придложение с использованием плк,
передаем в один регистр плк текущий кадр, во втророй следующий кадр, а в третий текущую позицию.
если следующий кадр содержет Z вверх, тогда вычитаем из текущего кадра текущую позицию и как только значение равно необходимому растоянию выключаем насос.
просто у нас насосами и осью Z плк упровляет, ось Z пневматическая.

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

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