Страница 3 из 3
Re: Вычисление расстояния до конца контура
Добавлено: 09 июл 2013, 21:17
nkp
Nick писал(а):Не, есть текущее distance-to-go - оно не с начала сегмента.
но в начале сегмента пин показывает же полную длину...(ну почти)
выше по теме я использовал это для вычисление траектории - просто берем в каждом сементе только первое значение...
Re: Вычисление расстояния до конца контура
Добавлено: 09 июл 2013, 22:13
Ворон226
Я это тоже использовал в своем алгоритме: в начальный момент движения по сегменту distance-to-go = длине сегмента.
Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 09:08
Nick
Даже если так, зачем это нам нужно? Нам нужно расстояние до конца контура, а не до конца сегмента.
Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 13:51
Ворон226
Если предварительно считать длину сегмента и прописывать её, то можно оперативно сравнивать расстояние до конца СЕГМЕНТА с выставленной величиной для остановки насоса. (у меня в алгоритме подробно прописано). Длину контура LK сравниваем с величиной расстояния до конца контура для выключения насоса Sc, если LK > Sc, то вычитаем длину первого сегмента и опять сравниваем LK - LSi с Sc. Если LK - LSi > Sc , то вычитаем из длины контура длину первого сегмента и ждем следующего сегмента. Если LK - LSi < Sc , то отслеживаем LK - dist = Sc и выключаем насос.
Вроде такая логика. И все можно менять оперативно, кроме длины контура, конечно

Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 13:57
Nick
Ворон226 писал(а):Если предварительно считать длину сегмента и прописывать её, то можно оперативно сравнивать расстояние до конца СЕГМЕНТА с выставленной величиной для остановки насоса.
Так имхо гораздо удобнее следующий алгоритм:
1. начало контрура: имеем длинну.
2. включаем интегратор, который считает пройденное расстояние.
3. от длинны контура отнимаем значение интегратора и пихаем в wcomp - там по достижении нужного остатка пути отрубаем шпиндель.
3а. также можно по интегратору включать насос не сразу.
И не надо разбивать контур на сегменты, возиться с кучей хитрых вычислений на стыках.
Покатит такое?
Если да, то сейчас накидаю hal и пост процессор.
Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 14:13
nkp
Nick писал(а):Если да,
если длина контура известна до начала обработки - то чего еще можно желать...
твой алгоритм по моему полностью подходит...
а "кто" вычисляет длину контуров? кам?
Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 14:33
Nick
Re: Вычисление расстояния до конца контура
Добавлено: 10 июл 2013, 16:11
Ворон226
Nick писал(а):Покатит такое?
Если да, то сейчас накидаю hal и пост процессор.
Да уж - это будет проще, чем постоянно с сегментами возиться. Согласен.
nkp писал(а):а "кто" вычисляет длину контуров?
Так нет такой функции.

Придется вычислять заранее при написании программы в G-кодах. Это отдельный вопрос...
Re: Вычисление расстояния до конца контура
Добавлено: 11 июл 2013, 10:12
Nick
Ворон226 писал(а):Так нет такой функции.
Придется вычислять заранее при написании программы в G-кодах. Это отдельный вопрос...
Так в Gcodetools уже добавил же, перед каждым контуром пишется комментарий с длинной контура. Смотри последнюю ревизию
Re: Вычисление расстояния до конца контура
Добавлено: 11 июл 2013, 12:51
Ворон226
Nick писал(а):Так в Gcodetools уже добавил же, перед каждым контуром пишется комментарий с длинной контура. Смотри последнюю ревизию
Как так? Пропустил??? Вот тебе и на... СПасибо!!!
Я так понял, что качать тут:
http://cnc-club.ru/forum/download/file.php?id=1713 ???
Re: Вычисление расстояния до конца контура
Добавлено: 11 июл 2013, 13:04
Nick
не, качать dev версию отсюда (т.к. добавил только вчера

):
https://launchpad.net/gcodetools
можно через bazaar скачать bzr branch lp:gcodetools (и перед этим sudo apt-get install bzr )
или там по ссылке, нажимаем lp:gcodetools , там внизу тыркаем на самую последнюю ревизию и там скачать tarball.
После того как скачаешь, распаковываешь (если надо) и
выполняешь python create_inx.py, чтобы появились нужные inx, после этого копируешь все в стандартный директорий.
Re: Вычисление расстояния до конца контура
Добавлено: 11 июл 2013, 14:37
Ворон226
В субботу буду пытать... Спасибо!
Re: Вычисление расстояния до конца контура
Добавлено: 22 июл 2013, 15:17
Ворон226
Nick писал(а):Теперь надо сделать постпроцессор, который переделает эту строчку в нужную нам.
Я так понимаю, остановились на варианте
M67 -> analog-out -> analog.in -> и потом сравнение с integ.
Так?
ЗЫ надо назад в твою тему перебираться

Ну да... Для начала нужно сделать простой алгоритм. А потом уже добавить кучу настроек всяких (я тут уже целое исследование надумал - статистику набрать нужно. Но вот для опытов жалко эпоксидного контура - уж очень он дорогой...)
Re: Вычисление расстояния до конца контура
Добавлено: 22 июл 2013, 16:45
Nick
Ок, тогда делаем так:
В additional post processor добавляем:
Код: Выделить всё
regex(r"\(path len: ([\d\.\-]+)\)",r"M64 P0\nM68 E0 Q\1\nG4 P0.1\nM65 P0\n ");
Это поняет (path len: XXX.XXX) на
Потом надо все это подсоединить...
итак:
Код: Выделить всё
net len <= motion.analog-out-00
# считаем пройденное расстояние
net vel <= motion.current-vel
net vel => integ.0.in
# добавляем сброс интегратора по m64 PO
net reset <= motion.digital-out-00
net reset => integ.0.reset
# добавляем сравнение
# максимум
net len => sum2.0.in0
net max <= sum2.0.out
net max => wcomp.0.max
# вход
net path <= integ.0.out
net path => wcomp.0.in
# минимум
net min => wcomp.0.min
net min => sum2.0.in1
setp sum2.0.gain1 -1
# тут надо бы подключить min куда-нибудь... например к пину pyvcp, чтобы в нем можно было быстро настроить длину контура до/после.
# и включаем шпиндель /можно с чем нибудь этот сигнал потом скрестить/
net spindle-cut <= wcomp.0.out
Как-то так...
А ты тренируйся на чем-нибудь по дешевле, на
кошках сметане например

.
Re: Вычисление расстояния до конца контура
Добавлено: 22 июл 2013, 21:21
Ворон226
Nick писал(а):А ты тренируйся на чем-нибудь по дешевле, на кошках сметане например
Самое дешевое - жидкое мыло или гель

Литр за 40 рублей. И можно многократно использовать

Но вязкость другая... Может зубную пасту?
Буду разбирать твой вариант. Если честно, я просто не пользовал интегратор, но теперь разберусь, наверняка.