Страница 2 из 9
Re: MyGUI
Добавлено: 09 дек 2012, 13:42
nkp
ошибка отступа(питон очень ревностно следит за отступами):
Re: MyGUI
Добавлено: 09 дек 2012, 13:57
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
Re: MyGUI
Добавлено: 09 дек 2012, 13:59
vmarkiv
файл
Re: MyGUI
Добавлено: 09 дек 2012, 14:06
nkp
теперь запускаем любую (свою) конфигурацию
( EDM1 в топку)
пробовал в Sherline3Axis
Re: MyGUI
Добавлено: 09 дек 2012, 14:23
vmarkiv
Играми с форматом rev.py удалось запустить приложение , СПАСИБО
Re: MyGUI
Добавлено: 09 дек 2012, 14:29
vmarkiv
НО , на линейных перемещениях возвращается по траектории , а на круговых напрямик в начало кола
Re: MyGUI
Добавлено: 09 дек 2012, 15:14
nkp
да это будет работать только так
(дуги делать линейными перемещениями)
-------------
дальше будем углубляться в емс - может что поуниверсальней наваяем
Re: MyGUI
Добавлено: 09 дек 2012, 15:23
vmarkiv
В Mach3 также не смогли сделать правильный отьезд по кривой , на машинах плазменной резки я заставляю операторов создавать рисунки в NURBS , при преобразованиях получается линейно-кусочная аппроксимация и все работает на УРА . NPK , спасибо за работу
Re: MyGUI
Добавлено: 09 дек 2012, 15:24
nkp
вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется
Re: MyGUI
Добавлено: 09 дек 2012, 15:26
nkp
vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать!
:
Re: MyGUI
Добавлено: 09 дек 2012, 15:31
vmarkiv
nkp писал(а):вообще,по поводу отхода в связке емс- EDM вариантов в голове много
самый оптимальный для себя вижу в написании постпроцессора для емс
и тогда все вопросы снимутся
постпроцессор на лету будет обрабатывать ж-код , так что лишних телодвижений делать не придется
В постпроцессоре для SheetCam я использую только G1
nkp писал(а):vmarkiv писал(а):В Mach3 также не смогли сделать правильный отьезд по кривой
а мы постараемся все таки сделать!
:
И это правильно !!!
Re: LinuxCNC реверс Gкода
Добавлено: 09 дек 2012, 23:45
Nick
Nkp, так в данном случае реверс Gкода делается или нет? Или просто каждый раз при достижении конца строки выполняется предыдущая строка?
Re: LinuxCNC реверс Gкода
Добавлено: 09 дек 2012, 23:52
nkp
Nick писал(а):Или просто каждый раз при достижении конца строки выполняется предыдущая строка?
да - нажимаем первую кнопку - стоп ,выполнить предыдущую строку
нажимаем вторую кнопку - стоп ,выполнить следующую строку
(может тема не точно названа ??
переименуем...)
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 00:32
Nick
Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 00:53
nkp
Nick писал(а):Т.е. просто выполняем пошагово предыдущие строки и это для линейной интерполяции равносильно реверсу?
ну да
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 10:34
Nick
Т.е. для дуг нам не хватает только координат центров?
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 10:58
nkp
Nick писал(а):Т.е. для дуг нам не хватает только координат центров?
в принципе - да
но решить это можно (наверно)только встроенным в скрипт постпроцессором
который будет выполнять налету несколько функций:
1.парсить код на предмет содержания строк(ведь не кождая строка есть содержательный для движения кадр)
2.прописывать закомментированные дополнительные строки для отхода (касаемо дуг)
3. дополнительные параметры(например скорость подачи,для EDM вкл-выкл напряжение на электроде ,и т.д.)
в общем нужно попробовать "поиграться" с включением-выключением set_block_delete.
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 13:29
Lexxa
Может просто писать координаты в буфер, а потом их отработать
Re: LinuxCNC реверс Gкода
Добавлено: 10 дек 2012, 14:39
Nick
В том то и дело, что штатными средствами это не просто.
В данном случае nkp использует маленький хак - просто выполняет программу покадрово, но не с текущего кадра, а с предыдущего. В итоге все изменение получается в несколько строк.
Re: LinuxCNC реверс Gкода
Добавлено: 12 дек 2012, 00:05
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()
он (в том числе) перед каждым кадром(строкой) с дугой вставляет закомментированный кадр(строку) с отходом
пример из видео:
а в скрипте добавляем в наши функции обр кнопок:
Код: Выделить всё
###############################################################################################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
(тут нужно проверять практикой)