Страница 3 из 9
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 19:23
vmarkiv
Обещаю добраться до искрового станка и практически опробовать . В HALe как кнопка + ( Zoom + ) будет называться ? Я туда заведу сигнал КЗ .
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 19:27
Nick
nkp писал(а):все это касается одной строки , размер перемещения в которой может быть небольшим
Т.е. работать будет только на одну строку назад? Потом опять поедет вперед, так?
ЗЫ

!!!
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 22:20
nkp
vmarkiv писал(а):В HALe как кнопка + ( Zoom + ) будет называться ? Я туда заведу сигнал КЗ
ну так просто саму кнопку не подключить...
можно попробовать через компонент (так вначале и предполагалось) :
Код: Выделить всё
#!/usr/bin/python
import hal, time, linuxcnc
h = hal.component("rev")
h.newpin("rev", hal.HAL_BIT, hal.HAL_IN)
h.newpin("rerev", hal.HAL_BIT, hal.HAL_IN)
h.ready()
c = linuxcnc.command()
s = linuxcnc.stat()
def back():
s.poll()
c.abort()
c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))
def again_forward ():
s.poll()
c.abort()
c.auto(linuxcnc.AUTO_RUN , (s.motion_line+1))
try:
while 1:
if h["rev"]==1:
back()
h["rev"]=0
if h["rerev"]==1:
again_forward()
h["rerev"]=0
except KeyboardInterrupt:
raise SystemExit
в хал появятся 2 пина , рисуем 2 кнопки pyvcp и коммутируем к ним наши пины в postgui:
Код: Выделить всё
net revgcode rev.rev pyvcp.rev
net rerevgcode rev.rerev pyvcp.rerev
вот конфиг.
пробовал - сбоит по непонятным пока причинам (надо разбираться с компонентом)
но попробовать можно
(вместо кнопок pyvcp подключаем сигнал КЗ)
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 23:40
Nick
А как сбоит?
ЗЫ у тебя в этом районе, проблема с отступами:
def back():
s.poll()
c.abort()[/quote]
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 23:58
nkp
Nick писал(а):ЗЫ у тебя в этом районе, проблема с отступами:
def back():
s.poll()
c.abort()
это почти всегда при вставке кода на форум(у меня по крайней мере

)
Nick писал(а):А как сбоит?
дело в том ,что после c.abort() емс переходит в режим manual
когда пробовал без компонента (юзал кнопки zoom прямо в axis) - то
емс переходил в режим авто без проблем
а тут пробовал и принудительно :
(для просмотра содержимого нажмите на ссылку)Код: Выделить всё
#!/usr/bin/python
import hal, time, linuxcnc
h = hal.component("rev")
h.newpin("rev", hal.HAL_BIT, hal.HAL_IN)
h.newpin("rerev", hal.HAL_BIT, hal.HAL_IN)
h.ready()
c = linuxcnc.command()
s = linuxcnc.stat()
def back():
s.poll()
c.abort()
c.mode(linuxcnc.MODE_AUTO)
c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))
def again_forward ():
s.poll()
c.abort()
c.mode(linuxcnc.MODE_AUTO)
c.auto(linuxcnc.AUTO_RUN , (s.motion_line+1))
try:
while 1:
if h["rev"]==1:
back()
h["rev"]=0
if h["rerev"]==1:
again_forward()
h["rerev"]=0
except KeyboardInterrupt:
raise SystemExit
,и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 00:44
Nick
nkp писал(а):это почти всегда при вставке кода на форум(у меня по крайней мере
Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.
nkp писал(а):и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...
А если через halui попробовать?
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 00:48
nkp
Nick писал(а):Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.
наверно нет - приучил себя к табам
Nick писал(а):А если через halui попробовать?
в смысле изменять режим на авто ?
ps
хочешь сказать питон не успевает?
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 09:12
Nick
nkp писал(а):наверно нет - приучил себя к табам
Именно в этом месте - да:
1таб s.poll()
пробелы c.abort()
пробелы и таб c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))
nkp писал(а):в смысле изменять режим на авто ?
ps
хочешь сказать питон не успевает?
да в авто. не думаю, что он не успевает, просто могут быть какие-нибудь ограничения. Кстати, можно сделать доп проверку if is_auto
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 09:17
nkp
Nick писал(а):Кстати, можно сделать доп проверку if is_auto
да - вот это стоит попробовать...
upd:
добавил проверку по твоему совету - стало стабильней работать:
Код: Выделить всё
#!/usr/bin/python
import hal, time, emc
h = hal.component("rev")
h.newpin("rev", hal.HAL_BIT, hal.HAL_IN)
h.newpin("rerev", hal.HAL_BIT, hal.HAL_IN)
h.ready()
c = emc.command()
s = emc.stat()
def back():
s.poll()
c.abort()
if s.task_mode == 2:
c.auto(emc.AUTO_RUN , (s.motion_line-1))
else:
c.mode(emc.MODE_AUTO)
def again_forward ():
s.poll()
c.abort()
if s.task_mode == 2:
c.auto(emc.AUTO_RUN , (s.motion_line+1))
else:
c.mode(emc.MODE_AUTO)
try:
while 1:
if h["rev"]==1:
back()
h["rev"]=0
if h["rerev"]==1:
again_forward()
h["rerev"]=0
except KeyboardInterrupt:
raise SystemExit
и на счет табов ты был прав
--------------
теперь нужно как то через ладдер что ли пины прикрутить
у нас же rerev должен активироваться только после КЗ...
upd 2:
сейчас вставлял выше код - и посмотрел что сам написал

:
получается - если в данный момент режим авто - то делаем :
если нет - то устанавливаем его :
и больше, типа , ничего не делаем...
и оно почему то работает
ну это я в смысле,что в else правильней было бы написать:
Код: Выделить всё
else:
c.mode(emc.MODE_AUTO)
c.auto(emc.AUTO_RUN , (s.motion_line-1))
????
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 10:13
nkp
ошибка теперь такая:
может это из-за компа
в нем latency не есть хороший (2 ядра+радион )
надо посмотреть - что за этой ошибкой стоит
-----------
а вообще что мы проверкой изменили
чем вот так:
Код: Выделить всё
def back():
s.poll()
c.abort()
c.mode(emc.MODE_AUTO)
c.auto(emc.AUTO_RUN , (s.motion_line-1))
отличается от:
Код: Выделить всё
def back():
s.poll()
c.abort()
if s.task_mode == 2:
c.auto(emc.AUTO_RUN , (s.motion_line-1))
else:
c.mode(emc.MODE_AUTO)
??
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 10:22
Nick
Надо сделать ожидание режма auto. Для этого или сделать дпоплнительный event, или цикл (можно с максимальным временем ожидания) по условию s.task_mode != 2
Re: LinuxCNC реверс Gкода
Добавлено: 13 дек 2012, 10:42
nkp
Nick писал(а):Надо сделать ожидание режма auto
прописывал:
стандартная команда дождаться исполнения
все равно глючит...
---------
тут ошибка связана с режимами построения траектории:
traj_mode(int)
set trajectory mode. Mode is one of MODE_FREE, MODE_COORD, or MODE_TELEOP.
(я так понял

)
это для меня темный лес
будем искать... (с)

Re: LinuxCNC реверс Gкода
Добавлено: 14 дек 2012, 18:37
vmarkiv
У меня ошибка с #50 также выскакивает и программа LINUXCNC подтормаживает . Я оставил конфигурацию с реверсом в токарном , ребята точат детали и вспоминают меня выражениями ...
Re: LinuxCNC реверс Gкода
Добавлено: 14 дек 2012, 18:42
nkp
vmarkiv писал(а):оставил конфигурацию с реверсом в токарном
в принципе что то не то
если не нажимать кнопки zoom - то функции не вызываются и
все должно быть как обычно...
Re: LinuxCNC реверс Gкода
Добавлено: 05 фев 2013, 17:45
Lexxa
вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?
Не важно фрезерный или токарный станок.
допустим фрезерный. в момент обработки мы понимаем, что надо бы заменить инструмент.
Включаем фид холд, нажимаем кнопку специально подготовленную, выключаем фид холд. После этого программа как бы приостанавливается и управление становится ручным.
вручную отводим инструмент от заотовки, ЧПУшка запоминает траекторию движения отвода. Меняем инструмент, привязываем если надо по Z, нажимаем вторую специальную кнопку,
далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
Re: LinuxCNC реверс Gкода
Добавлено: 05 фев 2013, 17:52
vmarkiv
В маче подобное сделано , но возврат в первоначальную точку идет по прямым , выскакивает окно -переместиться в х ххх у хуху z zzz нажимаеш ОК
Re: LinuxCNC реверс Gкода
Добавлено: 06 фев 2013, 10:11
Nick
Lexxa писал(а):далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
Исходная точка - начало кадра пойдет?
Re: LinuxCNC реверс Gкода
Добавлено: 06 фев 2013, 10:52
vmarkiv
Вообще-то исходная точка не начало кадра , а как получится , где инструмент поламается или дуга оборвется
Re: LinuxCNC реверс Gкода
Добавлено: 06 фев 2013, 11:41
nkp
Lexxa писал(а):вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?
такую штуку на сегодня сделать практически невозможно
(хорошо бы было если я б ошибался

)
когда мы работаем по программе - емс а режиме авто
чтоб совершить любой маневр в это время - необходимо сменить режим на ручной или MDI
а при работающем интерпретаторе емс не дает сменить режим
если останавливаем интерпретатор - нет никакой гарантии в правильности работы при продолжении
а вообще - мало знаний и понимания работы емс вцелом - нодо разбираться
запросы очень нужные - и не этот один
Re: LinuxCNC реверс Gкода
Добавлено: 06 фев 2013, 13:30
Nick
В середине кадра стартовать не всегда правильно, да и не всегда выйдет. Насколько я понимаю во многих случаях все это требуется при простой обработке с использованием базовых кодов G00-G03... и при этом пробеги там не большие.
Да и кстати, если фреза сломалась, то наверняка стартовать надо будет не с места остановки, а с места поломки фрезы...
Как вариант:
1. Запоминаем номер кадра.
2. Переходим в mdi
3. Запоминаем текущее положение: G28.1
4. Переходим в ручной режим.
5. Делаем свое грязное дело Едем куда надо, меняем инструмент.
6. Переходим в mdi
7. Едем на нужное место: G28
8. Продолжаем обработку с нужного кадра.
Если все это подходит, можно попробовать все это автоматизировать...