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

Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 13:01
vmarkiv
Как сделать режим "обучения" формирования управляющей программы в Linuxcnc ? . Я хочу подключить пропорциональный джойстик , назначить рукоятке перемещение +Х -Х ,+У - У , кнопкам - включение шпинделя , охлаждение , эмульсию , вручную перемещать джойстиком по нужному контуру , а Linuxcnc будет формировать управляющую программу в G -кодах с значениями координат , ПОДАЧ , включения исполнительных механизмов . В НЦ-31 режим обучения был ...

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 14:42
Impartial
G код из траектории в ЕМС вряд ли удастся получить.
Можно попробовать записать траекторию и управление с дискретностью сервоцикла а потом в каком нибудь постпроцессоре получить G код.

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 18:28
Nick
Да, только так, если будешь с джойстика управлять, то векторизовать траекторию будет шибко тяжело.
А координаты в сервоцикле писать в файл - это просто. Потом их в одну строчку можно будет в Gкод переписать. Правда будет около 1000 строк в секунду :freak:
Хотя, можно еще чуть чуть помозговав упростить эти 1000 строк в сек.
А можно запись делать и по реже.

Какой размер "программы" будет?

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 18:33
Impartial
Nick писал(а):А координаты в сервоцикле писать в файл - это просто. Потом их в одну строчку можно будет в Gкод переписать. Правда будет около 1000 строк в секунду
Потом из этих координат нарисавать что то типа чертежа, и потом уже этот чертеж в Г код преобразовать. Так должно получиться.

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 18:51
vmarkiv
Мне можно писать в файл с частотой 10 строк , но нужно и писать подачу ...

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 19:00
Nick
А в чем разница, что мы пишем координаты, что подачу?
А тебе скорости в определенных местах разные нужны, ну это тоже можно сделать, потом в скрипте просто дописать расчет подачи исходя из текущего перемещения. Если с частотой 10Гц писать - точность будет маленькая, или там пофигу?
на 10 Гц можно и user-space компонентик на питоне написать...

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 19:17
solo
Эсли не ошибаюсь то в станка ЧПУ обучение идет по контрольным точкам
Тоесть подводиш джойстиком в нужную точку нажимаеш на "кнопочкеу" даная координата XYZ заносится в програму дальше амалогично следуючая точка , так и составляется прога из линейных участков.
Я еще так програмировал робота "Универсал 5" только там програме записывалась штырьками на програматор а контрольные точки выставлялись реоставами на серводвигателяш.

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 19:20
vmarkiv
А может попробовать через Keygrabber for Mach3 ?

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 19:20
Nick
solo писал(а):Эсли не ошибаюсь то в станка ЧПУ обучение идет по контрольным точкам
Тоесть подводиш джойстиком в нужную точку нажимаеш на "кнопочкеу" даная координата XYZ заносится в програму дальше амалогично следуючая точка , так и составляется прога из линейных участков.
Я еще так програмировал робота "Универсал 5" только там програме записывалась штырьками на програматор а контрольные точки выставлялись реоставами на серводвигателяш.
Это вообще не сложно сделать.
vmarkiv писал(а):А может попробовать через Keygrabber for Mach3 ?
А что он делает?

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 19:37
vmarkiv
Keygrabber "слушает" джойстик и передает данные в Mach3

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 20:37
Nick
Проще через linuxcnc будет...

Надо просто написать компонентик. с тремя пинами x,y, и enable.
потом в главном цикле смотрим на координаты и пишем инфу в файл.

В общем, проще написать, чем объяснять:

Код: Выделить всё

#!/usr/bin/python
import hal, time, math
h = hal.component("recorder")
h.newpin("x", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("y", hal.HAL_FLOAT, hal.HAL_IN)
h.newpin("enable", hal.HAL_BIT, hal.HAL_IN)

h.ready()
f = open("reader.ngc","w")
try:
	while 1:
		if h['enable'] :
			if lx!=None and ly!=None :
				vel = math.sqrt((h['x']-lx)**2 + (h['y']-ly)**2)/time*60
				f.write("G1 X%f Y%f F%f\n"%(h['x'],h['y'],vel))
			else :
				f.write("G0 X%f Y%f F%f\n"%(h['x'],h['y'],vel))
			lx = h['x'] 	
			ly = h['y']
			
			time.sleep(0.1)
	
except KeyboardInterrupt:
	f.close()
	raise SystemExit

это все сохраняешь в reader.py, и в hal добавляешь
loadrt python reader.py -Wn reader

и потом коннектишь его пины enable, x и y. И вроде все...

Re: Режим "обучения" в Linuxcnc

Добавлено: 18 апр 2013, 20:43
vmarkiv
Спасибо , опробую ...