LinuxCNC реверс Gкода
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: LinuxCNC реверс Gкода
Обещаю добраться до искрового станка и практически опробовать . В HALe как кнопка + ( Zoom + ) будет называться ? Я туда заведу сигнал КЗ .
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
Т.е. работать будет только на одну строку назад? Потом опять поедет вперед, так?nkp писал(а):все это касается одной строки , размер перемещения в которой может быть небольшим
ЗЫ !!!
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
ну так просто саму кнопку не подключить...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
Код: Выделить всё
net revgcode rev.rev pyvcp.rev
net rerevgcode rev.rerev pyvcp.rerev
пробовал - сбоит по непонятным пока причинам (надо разбираться с компонентом)
но попробовать можно
(вместо кнопок pyvcp подключаем сигнал КЗ)
Последний раз редактировалось nkp 13 дек 2012, 00:04, всего редактировалось 1 раз.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
А как сбоит?
ЗЫ у тебя в этом районе, проблема с отступами:
def back():
s.poll()
c.abort()[/quote]
ЗЫ у тебя в этом районе, проблема с отступами:
def back():
s.poll()
c.abort()[/quote]
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
это почти всегда при вставке кода на форум(у меня по крайней мере )Nick писал(а):ЗЫ у тебя в этом районе, проблема с отступами:
def back():
s.poll()
c.abort()
дело в том ,что после c.abort() емс переходит в режим manualNick писал(а):А как сбоит?
когда пробовал без компонента (юзал кнопки zoom прямо в axis) - то
емс переходил в режим авто без проблем
а тут пробовал и принудительно :
,и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.nkp писал(а):это почти всегда при вставке кода на форум(у меня по крайней мере
А если через halui попробовать?nkp писал(а):и с ожиданием выполнения - все равно нестабильность
не всегда - но часто ошибка- мол не могу в ручном реж .....
то есть не переходит в авто почему то...
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
наверно нет - приучил себя к табамNick писал(а):Это просто у тебя в одном месте отступ сделан пробелами, а в другом - табами.
в смысле изменять режим на авто ?Nick писал(а):А если через halui попробовать?
ps
хочешь сказать питон не успевает?
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
Именно в этом месте - да:nkp писал(а):наверно нет - приучил себя к табам
1таб s.poll()
пробелы c.abort()
пробелы и таб c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))
да в авто. не думаю, что он не успевает, просто могут быть какие-нибудь ограничения. Кстати, можно сделать доп проверку if is_autonkp писал(а):в смысле изменять режим на авто ?
ps
хочешь сказать питон не успевает?
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
да - вот это стоит попробовать...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:
сейчас вставлял выше код - и посмотрел что сам написал :
получается - если в данный момент режим авто - то делаем :
Код: Выделить всё
c.auto(emc.AUTO_RUN , (s.motion_line-1))
Код: Выделить всё
c.mode(emc.MODE_AUTO)
и оно почему то работает
ну это я в смысле,что в else правильней было бы написать:
Код: Выделить всё
else:
c.mode(emc.MODE_AUTO)
c.auto(emc.AUTO_RUN , (s.motion_line-1))
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
ошибка теперь такая:
может это из-за компа
в нем latency не есть хороший (2 ядра+радион )
надо посмотреть - что за этой ошибкой стоит
-----------
а вообще что мы проверкой изменили
чем вот так:
отличается от:
??
в нем 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)
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
Надо сделать ожидание режма auto. Для этого или сделать дпоплнительный event, или цикл (можно с максимальным временем ожидания) по условию s.task_mode != 2
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
прописывал:Nick писал(а):Надо сделать ожидание режма auto
Код: Выделить всё
c.wait_complete()
все равно глючит...
---------
тут ошибка связана с режимами построения траектории:
traj_mode(int)
set trajectory mode. Mode is one of MODE_FREE, MODE_COORD, or MODE_TELEOP.
(я так понял )
это для меня темный лес
будем искать... (с)
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: LinuxCNC реверс Gкода
У меня ошибка с #50 также выскакивает и программа LINUXCNC подтормаживает . Я оставил конфигурацию с реверсом в токарном , ребята точат детали и вспоминают меня выражениями ...
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
в принципе что то не тоvmarkiv писал(а):оставил конфигурацию с реверсом в токарном
если не нажимать кнопки zoom - то функции не вызываются и
все должно быть как обычно...
- Lexxa
- Мастер
- Сообщения: 2703
- Зарегистрирован: 16 дек 2011, 16:48
- Репутация: 319
- Настоящее имя: Алексей
- Откуда: ryazan
- Контактная информация:
Re: LinuxCNC реверс Gкода
вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?
Не важно фрезерный или токарный станок.
допустим фрезерный. в момент обработки мы понимаем, что надо бы заменить инструмент.
Включаем фид холд, нажимаем кнопку специально подготовленную, выключаем фид холд. После этого программа как бы приостанавливается и управление становится ручным.
вручную отводим инструмент от заотовки, ЧПУшка запоминает траекторию движения отвода. Меняем инструмент, привязываем если надо по Z, нажимаем вторую специальную кнопку,
далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
Не важно фрезерный или токарный станок.
допустим фрезерный. в момент обработки мы понимаем, что надо бы заменить инструмент.
Включаем фид холд, нажимаем кнопку специально подготовленную, выключаем фид холд. После этого программа как бы приостанавливается и управление становится ручным.
вручную отводим инструмент от заотовки, ЧПУшка запоминает траекторию движения отвода. Меняем инструмент, привязываем если надо по Z, нажимаем вторую специальную кнопку,
далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: LinuxCNC реверс Gкода
В маче подобное сделано , но возврат в первоначальную точку идет по прямым , выскакивает окно -переместиться в х ххх у хуху z zzz нажимаеш ОК
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
Исходная точка - начало кадра пойдет?Lexxa писал(а):далее станок по траектории отвода взвращается в "исходную точку". Нажимаем первую специальную кнопку и продолжаем обработку по программе.
-
- Мастер
- Сообщения: 516
- Зарегистрирован: 21 янв 2012, 00:23
- Репутация: 32
- Откуда: Ивано-Франковск
- Контактная информация:
Re: LinuxCNC реверс Gкода
Вообще-то исходная точка не начало кадра , а как получится , где инструмент поламается или дуга оборвется
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: LinuxCNC реверс Gкода
такую штуку на сегодня сделать практически невозможноLexxa писал(а):вот можно ли на основе наработок по реверсу ж кода реализовать такую штуку?
(хорошо бы было если я б ошибался )
когда мы работаем по программе - емс а режиме авто
чтоб совершить любой маневр в это время - необходимо сменить режим на ручной или MDI
а при работающем интерпретаторе емс не дает сменить режим
если останавливаем интерпретатор - нет никакой гарантии в правильности работы при продолжении
а вообще - мало знаний и понимания работы емс вцелом - нодо разбираться
запросы очень нужные - и не этот один
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: LinuxCNC реверс Gкода
В середине кадра стартовать не всегда правильно, да и не всегда выйдет. Насколько я понимаю во многих случаях все это требуется при простой обработке с использованием базовых кодов G00-G03... и при этом пробеги там не большие.
Да и кстати, если фреза сломалась, то наверняка стартовать надо будет не с места остановки, а с места поломки фрезы...
Как вариант:
1. Запоминаем номер кадра.
2. Переходим в mdi
3. Запоминаем текущее положение: G28.1
4. Переходим в ручной режим.
5.Делаем свое грязное дело Едем куда надо, меняем инструмент.
6. Переходим в mdi
7. Едем на нужное место: G28
8. Продолжаем обработку с нужного кадра.
Если все это подходит, можно попробовать все это автоматизировать...
Да и кстати, если фреза сломалась, то наверняка стартовать надо будет не с места остановки, а с места поломки фрезы...
Как вариант:
1. Запоминаем номер кадра.
2. Переходим в mdi
3. Запоминаем текущее положение: G28.1
4. Переходим в ручной режим.
5.
6. Переходим в mdi
7. Едем на нужное место: G28
8. Продолжаем обработку с нужного кадра.
Если все это подходит, можно попробовать все это автоматизировать...