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

Обсуждение установки, настройки и использования LinuxCNC. Вопросы по Gкоду.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

ошибка отступа(питон очень ревностно следит за отступами):
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

Все равно , при откорректированой axis и
С версией
nkp писал(а):то модуль rev.py такой:
и версией вставки файла из сообщ 545 ошибки такие Print file information:

Can not find -sec LINUXCNC -var NML_FILE -num 1
Can not find -sec EMC -var NML_FILE -num 1
File "rev.py", line 2
import hal, time,linuxcnc
^
IndentationError: unexpected indent
core_stepper.hal:54: python exited without becoming ready
9886
PID TTY STAT TIME COMMAND
Stopping realtime threads
Unloading hal components
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

файл
Вложения
axis.zip
(28.28 КБ) 621 скачивание
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

теперь запускаем любую (свою) конфигурацию
( EDM1 в топку)
пробовал в Sherline3Axis
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

Играми с форматом rev.py удалось запустить приложение , СПАСИБО
Вложения
rev.zip
(855 байт) 544 скачивания
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

НО , на линейных перемещениях возвращается по траектории , а на круговых напрямик в начало кола
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

да это будет работать только так
(дуги делать линейными перемещениями)
-------------
дальше будем углубляться в емс - может что поуниверсальней наваяем ;)
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

В Mach3 также не смогли сделать правильный отьезд по кривой , на машинах плазменной резки я заставляю операторов создавать рисунки в NURBS , при преобразованиях получается линейно-кусочная аппроксимация и все работает на УРА . NPK , спасибо за работу
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: MyGUI

Сообщение nkp »

vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать! :) :
vmarkiv
Мастер
Сообщения: 516
Зарегистрирован: 21 янв 2012, 00:23
Репутация: 32
Откуда: Ивано-Франковск
Контактная информация:

Re: MyGUI

Сообщение vmarkiv »

nkp писал(а):вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется
В постпроцессоре для SheetCam я использую только G1
nkp писал(а):
vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать! :) :
И это правильно !!!
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Nkp, так в данном случае реверс Gкода делается или нет? Или просто каждый раз при достижении конца строки выполняется предыдущая строка?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

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

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

Сообщение Nick »

Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Nick писал(а):Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?
ну да ;)
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

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

Сообщение Nick »

Т.е. для дуг нам не хватает только координат центров?
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

Nick писал(а):Т.е. для дуг нам не хватает только координат центров?
в принципе - да
но решить это можно (наверно)только встроенным в скрипт постпроцессором
который будет выполнять налету несколько функций:
1.парсить код на предмет содержания строк(ведь не кождая строка есть содержательный для движения кадр)
2.прописывать закомментированные дополнительные строки для отхода (касаемо дуг)
3. дополнительные параметры(например скорость подачи,для EDM вкл-выкл напряжение на электроде ,и т.д.)
в общем нужно попробовать "поиграться" с включением-выключением set_block_delete.
Аватара пользователя
Lexxa
Мастер
Сообщения: 2703
Зарегистрирован: 16 дек 2011, 16:48
Репутация: 319
Настоящее имя: Алексей
Откуда: ryazan
Контактная информация:

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

Сообщение Lexxa »

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

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

Сообщение Nick »

В том то и дело, что штатными средствами это не просто.
В данном случае nkp использует маленький хак - просто выполняет программу покадрово, но не с текущего кадра, а с предыдущего. В итоге все изменение получается в несколько строк.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

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

Сообщение nkp »

пробы касательно #37:
https://www.youtube.com/watch?v=eTLs89YPtck
еще раз алгоритм:
в функцию открытия ж-кода в emc добавляем ПП
очень примерно такой ;) :
(для просмотра содержимого нажмите на ссылку)

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

#!/usr/bin/python
# -*- coding: utf-8 -*-
import  time
from subprocess import Popen, PIPE

a= Popen('halcmd getp minmax.0.max ', shell=True, stdout=PIPE).stdout.read()
x=int(a)-1
f = open(r'/home/nkp/emc2/nc_files/15.ngc')
lines = f.readlines()
f.close()
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("F60 G20 G61 G17\n")
f.close()
while x>0 :
        if lines[x].find('G2')!=-1  and lines[x-1].find('G1')==-1 : # если текущая строка содержит G2 а предыдущая не содержит G1
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
                r=lines[x]
           a=r.split('R')
           w=a[1]
           z=lines[x-1].replace('G2','G3')
           a=z.split('R')
           ww=a[0]
           f.write(ww+'R'+w)
           x=x-1
           f.close()

        elif lines[x].find('G3')!=-1  and lines[x-1].find('G1')==-1 :# если текущая строка содержит G3 а предыдущая не содержит G1
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
                r=lines[x]
           a=r.split('R')
           w=a[1]
           z=lines[x-1].replace('G3','G2')
           a=z.split('R')
           ww=a[0]
           f.write(ww+'R'+w)
           x=x-1
           f.close()
   elif lines[x].find('G2')!=-1  and lines[x-1].find('G1')!=-1  : # если текущая строка содержит G2 а предыдущая содержит G1
                f = open('/home/nkp/emc2/nc_files/12.ngc','a')
           a=lines[x].split('R')
           w=a[1]
           print w
           r=lines[x-1].replace('G1','G3')
           ww=r.replace ('\n', '')
           print ww
           f.write(ww+'R'+w)
           x=x-1
           f.close()
           
        elif lines[x].find('G3')!=-1 and lines[x-1].find('G1')!=-1 : # если текущая строка содержит G3 а предыдущая содержит G1
                f = open('/home/nkp/emc2/nc_files/12.ngc','a')       # открываем файл на добавление
           a=lines[x].split('R')   # разделяем строку lines[x] по символу 'R' в список
           w=a[1]                  # берем из разделения второй элемент [1] (нумерация с нуля)
           r=lines[x-1].replace('G1','G2') # меняем G1 на G2 в строке lines[x-1] 
           ww=r.replace ('\n', '')  # убираем  в конце перенос строки
           f.write(ww+'R'+w)   # пишем в файл 
           x=x-1
           f.close()
        elif lines[x].find('G1')!=-1  : # если текущая строка содержит G1 
                f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
           f.write(lines[x])
           x=x-1
           f.close()

        else :
                print x     # проверка отработки условиями всех строк
                x=x-1
                f.close()
                
f = open(r'/home/nkp/emc2/nc_files/12.ngc','a')
f.write("M2")
f.close()
он (в том числе) перед каждым кадром(строкой) с дугой вставляет закомментированный кадр(строку) с отходом
пример из видео:

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

 f50
/g3 x0 y0 r20
g2 x40 y0 r20
m2
а в скрипте добавляем в наши функции обр кнопок:

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

###############################################################################################rev
    def zoomin(event=None):
        c.set_block_delete(0)
	s.poll() 
        c.abort()
	c.wait_complete()
	c.auto(linuxcnc.AUTO_RUN , (s.motion_line-1))

    def zoomout(event=None):
        c.set_block_delete(1)
	s.poll() 
	c.abort()
	c.wait_complete()
	c.auto(linuxcnc.AUTO_RUN , (s.motion_line+1))
##################################################################################################end_rev
то есть при команде реверса мы снимаем комментарии со строк ж-кода
а при "прямом" ходе опять их комментируем
все это касается одной строки , размер перемещения в которой может быть небольшим
но мне кажеться в паре с адаптивной регулировкой подачи даже этого будет достаточно для EDM
(тут нужно проверять практикой)
Ответить

Вернуться в «LinuxCNC»