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

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

Re: MyGUI

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

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

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 13:57

Все равно , при откорректированой 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
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 13:59

файл
Вложения
axis.zip
(28.28 Кб) Скачиваний: 341
vmarkiv
Мастер
 
Сообщения: 488
Зарегистрирован: 21 янв 2012, 00:23
Откуда: Ивано-Франковск
Репутация: 25

Re: MyGUI

Сообщение nkp » 09 дек 2012, 14:06

теперь запускаем любую (свою) конфигурацию
( EDM1 в топку)
пробовал в Sherline3Axis
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 14:23

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

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 14:29

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

Re: MyGUI

Сообщение nkp » 09 дек 2012, 15:14

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

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 15:23

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

Re: MyGUI

Сообщение nkp » 09 дек 2012, 15:24

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

Re: MyGUI

Сообщение nkp » 09 дек 2012, 15:26

vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой

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

Re: MyGUI

Сообщение vmarkiv » 09 дек 2012, 15:31

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

В постпроцессоре для SheetCam я использую только G1

nkp писал(а):
vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой

а мы постараемся все таки сделать! :) :

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

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

Сообщение Nick » 09 дек 2012, 23:45

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

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

Сообщение nkp » 09 дек 2012, 23:52

Nick писал(а):Или просто каждый раз при достижении конца строки выполняется предыдущая строка?

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

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

Сообщение Nick » 10 дек 2012, 00:32

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

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

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

Nick писал(а):Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?

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

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

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

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

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

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

Nick писал(а):Т.е. для дуг нам не хватает только координат центров?

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

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

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

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

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

Сообщение Nick » 10 дек 2012, 14:39

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

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

Сообщение nkp » 12 дек 2012, 00:05

пробы касательно #37:

еще раз алгоритм:
в функцию открытия ж-кода в 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
(тут нужно проверять практикой)
nkp
Мастер
 
Сообщения: 7697
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1401
Медальки:

Пред.След.

Вернуться в LinuxCNC

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

Зарегистрированные пользователи: Bert, Bing [Bot], CNC-Logic, gess05, Google [Bot], igorvpetrov, john1987887, Kachik, kts, lazymiller, LDmitriy, MaksSavchuk, MGG, mikehv, nevkon, niksooon, parket_3d, Prav, R2D2, R6MF49T2, Ramunga, shalek, shtanc, VAT, YaCy [Bot], Yandex [bot]

Reputation System ©'