LinuxCNC реверс Gкода

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.

Re: LinuxCNC реверс Gкода

Сообщение vmarkiv » 12 дек 2012, 19:23

Обещаю добраться до искрового станка и практически опробовать . В HALe как кнопка + ( Zoom + ) будет называться ? Я туда заведу сигнал КЗ .
vmarkiv
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: LinuxCNC реверс Gкода

Сообщение Nick » 12 дек 2012, 19:27

nkp писал(а):все это касается одной строки , размер перемещения в которой может быть небольшим

Т.е. работать будет только на одну строку назад? Потом опять поедет вперед, так?

ЗЫ :good: :good: :good:!!!
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 12 дек 2012, 22:20

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 подключаем сигнал КЗ)
EDM.rar
(4.41 Кб) Скачиваний: 320
Последний раз редактировалось nkp 13 дек 2012, 00:04, всего редактировалось 1 раз.
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Nick » 12 дек 2012, 23:40

А как сбоит?
ЗЫ у тебя в этом районе, проблема с отступами:
def back():
   s.poll()
        c.abort()[/quote]
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 12 дек 2012, 23:58

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

,и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Nick » 13 дек 2012, 00:44

nkp писал(а):это почти всегда при вставке кода на форум(у меня по крайней мере

Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.
nkp писал(а):и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...

А если через halui попробовать?
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 13 дек 2012, 00:48

Nick писал(а):Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.

наверно нет - приучил себя к табам
Nick писал(а):А если через halui попробовать?

в смысле изменять режим на авто ?
ps
хочешь сказать питон не успевает?
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Nick » 13 дек 2012, 09:12

nkp писал(а):наверно нет - приучил себя к табам

Именно в этом месте - да:
1таб s.poll()
пробелы c.abort()

пробелы и таб c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))

nkp писал(а):в смысле изменять режим на авто ?
ps
хочешь сказать питон не успевает?

да в авто. не думаю, что он не успевает, просто могут быть какие-нибудь ограничения. Кстати, можно сделать доп проверку if is_auto
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 13 дек 2012, 09:17

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

и на счет табов ты был прав :oops:
--------------
теперь нужно как то через ладдер что ли пины прикрутить
у нас же rerev должен активироваться только после КЗ...
upd 2:
сейчас вставлял выше код - и посмотрел что сам написал ;) :
получается - если в данный момент режим авто - то делаем :
Код: Выделить всёРазвернуть
c.auto(emc.AUTO_RUN , (s.motion_line-1))

если нет - то устанавливаем его :
Код: Выделить всёРазвернуть
c.mode(emc.MODE_AUTO)

и больше, типа , ничего не делаем...
и оно почему то работает :thinking:
ну это я в смысле,что в else правильней было бы написать:
Код: Выделить всёРазвернуть
   else:
      c.mode(emc.MODE_AUTO)
      c.auto(emc.AUTO_RUN , (s.motion_line-1))

????
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 13 дек 2012, 10:13

ошибка теперь такая:

может это из-за компа
в нем 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)

??
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Nick » 13 дек 2012, 10:22

Надо сделать ожидание режма auto. Для этого или сделать дпоплнительный event, или цикл (можно с максимальным временем ожидания) по условию s.task_mode != 2
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение nkp » 13 дек 2012, 10:42

Nick писал(а):Надо сделать ожидание режма auto

прописывал:
Код: Выделить всёРазвернуть
c.wait_complete()

стандартная команда дождаться исполнения
все равно глючит...
---------
тут ошибка связана с режимами построения траектории:
traj_mode(int)
set trajectory mode. Mode is one of MODE_FREE, MODE_COORD, or MODE_TELEOP.
(я так понял :thinking: )
это для меня темный лес
будем искать... (с) :)
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение vmarkiv » 14 дек 2012, 18:37

У меня ошибка с #50 также выскакивает и программа LINUXCNC подтормаживает . Я оставил конфигурацию с реверсом в токарном , ребята точат детали и вспоминают меня выражениями ...
vmarkiv
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: LinuxCNC реверс Gкода

Сообщение nkp » 14 дек 2012, 18:42

vmarkiv писал(а):оставил конфигурацию с реверсом в токарном

в принципе что то не то
если не нажимать кнопки zoom - то функции не вызываются и
все должно быть как обычно...
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Lexxa » 05 фев 2013, 17:45

вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?
Не важно фрезерный или токарный станок.
допустим фрезерный. в момент обработки мы понимаем, что надо бы заменить инструмент.
Включаем фид холд, нажимаем кнопку специально подготовленную, выключаем фид холд. После этого программа как бы приостанавливается и управление становится ручным.
вручную отводим инструмент от заотовки, ЧПУшка запоминает траекторию движения отвода. Меняем инструмент, привязываем если надо по Z, нажимаем вторую специальную кнопку,
далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
Комната залита кровью, я занимаюсь любовью!
Аватара пользователя
Lexxa
Мастер
 
Сообщения: 2575
Зарегистрирован: 16 дек 2011, 16:48
Откуда: ryazan
Репутация: 298
Медальки:
Настоящее имя: Алексей

Re: LinuxCNC реверс Gкода

Сообщение vmarkiv » 05 фев 2013, 17:52

В маче подобное сделано , но возврат в первоначальную точку идет по прямым , выскакивает окно -переместиться в х ххх у хуху z zzz нажимаеш ОК
vmarkiv
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: LinuxCNC реверс Gкода

Сообщение Nick » 06 фев 2013, 10:11

Lexxa писал(а):далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.

Исходная точка - начало кадра пойдет?
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение vmarkiv » 06 фев 2013, 10:52

Вообще-то исходная точка не начало кадра , а как получится , где инструмент поламается или дуга оборвется
vmarkiv
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: LinuxCNC реверс Gкода

Сообщение nkp » 06 фев 2013, 11:41

Lexxa писал(а):вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?

такую штуку на сегодня сделать практически невозможно
(хорошо бы было если я б ошибался ;) )
когда мы работаем по программе - емс а режиме авто
чтоб совершить любой маневр в это время - необходимо сменить режим на ручной или MDI
а при работающем интерпретаторе емс не дает сменить режим
если останавливаем интерпретатор - нет никакой гарантии в правильности работы при продолжении
а вообще - мало знаний и понимания работы емс вцелом - нодо разбираться ;)
запросы очень нужные - и не этот один
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: LinuxCNC реверс Gкода

Сообщение Nick » 06 фев 2013, 13:30

В середине кадра стартовать не всегда правильно, да и не всегда выйдет. Насколько я понимаю во многих случаях все это требуется при простой обработке с использованием базовых кодов G00-G03... и при этом пробеги там не большие.
Да и кстати, если фреза сломалась, то наверняка стартовать надо будет не с места остановки, а с места поломки фрезы...

Как вариант:
1. Запоминаем номер кадра.
2. Переходим в mdi
3. Запоминаем текущее положение: G28.1
4. Переходим в ручной режим.
5. Делаем свое грязное дело Едем куда надо, меняем инструмент.
6. Переходим в mdi
7. Едем на нужное место: G28
8. Продолжаем обработку с нужного кадра.

Если все это подходит, можно попробовать все это автоматизировать...
Аватара пользователя
Nick
Мастер
 
Сообщения: 22552
Зарегистрирован: 23 ноя 2009, 16:45
Откуда: Gatchina, Saint-Petersburg distr., Russia
Репутация: 1571
Заслуга: Developer
Медальки:

Пред.След.

Вернуться в LinuxCNC

Кто сейчас на конференции

Зарегистрированные пользователи: Bert, Bing [Bot], Demashkin, drey82, ex71, Flint, frezeryga, Gestap, Google [Bot], iMaks-RS, john1987887, lazymiller, Majestic-12 [Bot], Mamont, MGG, mikehv, N1X, parket_3d, pm_dev, putnik, robotostroitel, VAT, YaCy [Bot], Yandex [bot], ДНК

Reputation System ©'