Вычисление расстояния до конца контура
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Вычисление расстояния до конца контура
Есть необходимость вычислять расстояние до конца контура.
В настоящее время есть стандартный пин - расстояние до конца сегмента - motion.distance-to-go.
Но встречаются сегменты в контуре, длина которых меньше, чем необходимое значение. В этом случае motion.distance-to-go напрямую не поможет...
Как организовать это вычисление?
Ясно, что отдельной подпрограммой. Но как определить в реальном времени длину КОНТУРА? А точнее, расстояние до конца контура?
Пока в мыслях только логика работы подпрограммы и недостаток знания стандартных сигналов и пинов CNC...
В настоящее время есть стандартный пин - расстояние до конца сегмента - motion.distance-to-go.
Но встречаются сегменты в контуре, длина которых меньше, чем необходимое значение. В этом случае motion.distance-to-go напрямую не поможет...
Как организовать это вычисление?
Ясно, что отдельной подпрограммой. Но как определить в реальном времени длину КОНТУРА? А точнее, расстояние до конца контура?
Пока в мыслях только логика работы подпрограммы и недостаток знания стандартных сигналов и пинов CNC...
Хочешь быть счастливым? Будь им!
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Вот такая идея пришла ко мне при поездке за продуктами для дома (чего только в эти моменты в голову не приходит?):
Разбить задачу на несколько - часть выполнять ДО выполнения программы, часть - во время выполнения.
Например
Создаём программу в G-кодах.
Пишем небольшой редактор для программы в G-кодах, который делает следующее:
1. Находит начало контура
2. Вычисляет длину первого сегмента
3. Запоминает его и переходит к следующему сегменту контура
4. Вычисляет длину второго сегмента и прибавляет его к длине первого.
5. Запоминает сумму.
6. Так и высчитывает до конца контура
7. Получаем длину контура.
8. Прописываем перед просчитанным контуром команду, которая прописывает в
motion.analog-out-00 (float, out) Эти пины (00, 01, 02, 03 и более, если настроены) контролируются M67 или M68.
значение длины контура
Теперь пишем компонент, который будет считать в реальном времени сколько осталось до конца контура и сравнивает это значение со значением, установленным "ползунком". При совпадении - переключает нужный пин.
Как думаете - можно ли такое реализовать?
Разбить задачу на несколько - часть выполнять ДО выполнения программы, часть - во время выполнения.
Например
Создаём программу в 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: Вычисление расстояния до конца контура
Ворон226, можно узнать для чего это?
Спрашивал подобное для плазмы, но так и не решили как это сделать
Спрашивал подобное для плазмы, но так и не решили как это сделать
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.
Хочешь быть счастливым? Будь им!
-
aftaev
- Зачётный участник

- Сообщения: 34042
- Зарегистрирован: 04 апр 2010, 19:22
- Репутация: 6194
- Откуда: Казахстан.
- Контактная информация:
Re: Вычисление расстояния до конца контура
в плазме примерно тоже самое. Для плазморезок есть софт который разбивает траекторию и в конце вставляет команду на отключение ТНС. В свободном доступе такого софта не встречал, только продается вместе со станками 
Дилетанту сложные вещи кажутся очень простыми, и только профессионал понимает насколько сложна самая простая вещь
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
Кто хочет - ищет возможности, кто не хочет - ищет оправдание.
Найди работу по душе и тебе не придется работать.
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вычисление расстояния до конца контура
Давно б уже какой-нибудь отсекатель соорудил на самом кончике дозатора...Ворон226 писал(а):Нужно для витражника. Очень важно снять избыточное давление за некоторое расстояние до конца контура. А функции такой нет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Отсекатель в запасе. А плазму как отсекать? 
Хочешь быть счастливым? Будь им!
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5183
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: Вычисление расстояния до конца контура
Не силён в плазмах, но думаю можно быстро "подпрыгнуть" на высоту, где разряд погаснет.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Я тоже в плазме лох - но, если решение одной задачи позволит реализовать две-три функции на разных станках, то разве не нужно этим заняться?
Вот и пытаюсь.
Вот и пытаюсь.
Хочешь быть счастливым? Будь им!
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Вычисление расстояния до конца контура
А если как вариант контролировать ускорение перемещение тоесть на конце перемешения скорость должна падать при G61, или если поставить паузу G4Р() в конце контура. И если ускорение становится отрицательным то значит надо выключать подачу клея. А величиной ускорения менять растояние выключения.
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Но ускорение становится отрицательным и при отработке крутого поворота или острого угла.
Хочешь быть счастливым? Будь им!
- solo
- Мастер
- Сообщения: 1374
- Зарегистрирован: 20 окт 2011, 18:39
- Репутация: 272
- Настоящее имя: Юрий Соловьев
- Откуда: Украина Харьков
- Контактная информация:
Re: Вычисление расстояния до конца контура
Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
Re: Вычисление расстояния до конца контура
Ворон226 , а в чем G-code готовите ?
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Дело в том, что система подачи контурного состава весьма инерционна. Потому нужно загодя (около 3-4 мм) до конца контура не только останавливать подачу, но даже подсасывать.solo писал(а):Ну а если как следующий вариант:
Прорисовка контура идет как правело с постоянной скоростью если в конце контура поставить остановка по G4 тоесть заствить останавливатьса в конце контура, и следить за скоростью движения (motion.current-vel но могу и ошибаться ) и как только скорость становется менне какогото " установленного прога" то надо выключать подачу клея. В данном случае при G64 с корость будет более менее стабильной а понижение ниже установленого порога в конце контура прорисовки будет отключать подачу клея за благовременно до полной остановки пермешения.
Хочешь быть счастливым? Будь им!
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Gcodetools - plug-in Inkscape для экспорта в GcodeDSP1 писал(а):Ворон226 , а в чем G-code готовите ?
Хочешь быть счастливым? Будь им!
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Вычисление расстояния до конца контура
В реальном времени такую штуку не просто считать. В принципе в LinuxCNC в глубине motion есть distance to go, он рассчитывается для look ahead... но вот достучаться до него будет не просто.
Надо подумать, может что-то с Gcodetools можно придумать...
А реверс движка насоса в самом конце не помогает? Какая инерционность будет с реверсом?
В принципе можно попробовать написать и пост процессор, который навставляет точек при приближении к концу контура...
Кстати, как у тебя в итоге управляется насос через пины analog-out?
Надо подумать, может что-то с Gcodetools можно придумать...
А реверс движка насоса в самом конце не помогает? Какая инерционность будет с реверсом?
В принципе можно попробовать написать и пост процессор, который навставляет точек при приближении к концу контура...
Кстати, как у тебя в итоге управляется насос через пины analog-out?
- Ворон226
- Мастер
- Сообщения: 1923
- Зарегистрирован: 01 окт 2012, 18:14
- Репутация: 181
- Откуда: Солнечногорск Московской обл. - Борки Конаковского р-на - Скоморохово Фировского р-на
- Контактная информация:
Re: Вычисление расстояния до конца контура
Так я об этом и писал...
Качественней линия получается, если и вначале резко "поддать" давление и в конце резко "отсосать" (сбросить давление).
Пока играюсь с пятью регулировками: 4 скорости и одно расстояние до конца контура.
analog-out конечно использую. Прописываю в пре- и пост-процессорах Gcodetools
Качественней линия получается, если и вначале резко "поддать" давление и в конце резко "отсосать" (сбросить давление).
Пока играюсь с пятью регулировками: 4 скорости и одно расстояние до конца контура.
analog-out конечно использую. Прописываю в пре- и пост-процессорах Gcodetools
Хочешь быть счастливым? Будь им!
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: Вычисление расстояния до конца контура
C началом все просто... там можно по времени давление держать... а вот с концом надо будет придумывать. Кстати, если менять analog-out linuxcnc на этой строчке не останавливается?
Re: Вычисление расстояния до конца контура
у меня ест придложение с использованием плк,
передаем в один регистр плк текущий кадр, во втророй следующий кадр, а в третий текущую позицию.
если следующий кадр содержет Z вверх, тогда вычитаем из текущего кадра текущую позицию и как только значение равно необходимому растоянию выключаем насос.
просто у нас насосами и осью Z плк упровляет, ось Z пневматическая.
передаем в один регистр плк текущий кадр, во втророй следующий кадр, а в третий текущую позицию.
если следующий кадр содержет Z вверх, тогда вычитаем из текущего кадра текущую позицию и как только значение равно необходимому растоянию выключаем насос.
просто у нас насосами и осью Z плк упровляет, ось Z пневматическая.
-
nkp
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: Вычисление расстояния до конца контура
отдельный плк - имхо избыточно,
это можно внутренними ресурсами разрулить...
но все таки - возложить на кам данные функции - наверно будет правильней...
зы
сейчас перешел в соседнюю тему с тем же вопросом - и действительно обсуждали уже))
кам не кам - а скрипт для постобработки кода с расчетом можно написать(почему бы не попробовать
)
какой там точный алгоритм - расчитываем дистанцию и предостановка в зависимости от скорости??
ззы
надо бы объеденить темы
это можно внутренними ресурсами разрулить...
но все таки - возложить на кам данные функции - наверно будет правильней...
зы
сейчас перешел в соседнюю тему с тем же вопросом - и действительно обсуждали уже))
кам не кам - а скрипт для постобработки кода с расчетом можно написать(почему бы не попробовать
какой там точный алгоритм - расчитываем дистанцию и предостановка в зависимости от скорости??
ззы
надо бы объеденить темы
