Strona 1 z 2
DXF2Gcode dla plasmy
: 09 sie 2012, 16:36
autor: marekms
Witam
Jak przystosować dxf2gcode do generowania kodu dla przecinarki?
Chodzi mi o to żeby po ustawieniu palnika na pozycji uruchomić palnik i po zakończeniu danego konturu wyłączyć palnik.
Pozdrawiam
Marek
Re: DXF2Gcode dla plasmy
: 09 sie 2012, 17:28
autor: ter_haar
marekms pisze:Witam
Jak przystosować dxf2gcode do generowania kodu dla przecinarki?
Chodzi mi o to żeby po ustawieniu palnika na pozycji uruchomić palnik i po zakończeniu danego konturu wyłączyć palnik.
w pliku postprocessor\dxf2gcode_b02_postprocessor.cfg
sa linie:
lin_mov_depth = G1 Z%ZE%nl
rap_pos_depth = G0 Z%ZE %nl
Można by je pewnie przerobić w stylu:
lin_mov_depth = M3 S100; G1 Z%ZE%nl
tyle ze nie wiesz kontur sie konczy, a kiedy zaczyna. Trzeba by wiec sprobowac dac tam if'a ktory sprawdzi na jaka wysokosc z ma zjechac palnik i albo go wlaczy, albo wylaczy.
Trochę to naokoło, ale chyba powinno zadziałać.
: 09 sie 2012, 18:39
autor: jarenio
ter_haar, błąd
marekms, musisz przerobić pliki .py dodać funkcje odpowiadającą za start i stop palnika i wstawić ją w odpowiednim miejscu, na grupie dyskusyjnej programu jest opisane jak to zrobić

re
: 09 sie 2012, 19:57
autor: marekms
Tylko że zmieniając ten plik mamy włączenie palnika, a nie mamy wyłączenia, więc to żadne ułatwienie. Niestety nie umiem znaleźć tej części programu która rozpoznaje początek konturu i opuszcza narzędzie a podnosi narzędzie na końcu konturu. I wtedy po opuszczeniu palnik włącza a przed podnoszeniem wyłącza cięcie.
Marek
[ Dodano: 2012-08-09, 20:10 ]
jarenio pisze:ter_haar, błąd
marekms, musisz przerobić pliki .py dodać funkcje odpowiadającą za start i stop palnika i wstawić ją w odpowiednim miejscu, na grupie dyskusyjnej programu jest opisane jak to zrobić

Moze kolega zdradzić adres tej grupy (forum). Ja znalazłem tylko niedziałający link do skryptu napisanego przez VANMILLER.
Marek
: 10 sie 2012, 00:14
autor: tuxcnc
Prosta zamiana fragmentu pliku dxf2gcode_b02_config.py z
Kod: Zaznacz cały
def lin_pol_z(self,z_pos):
if not(self.abs_export):
self.ze=z_pos-self.lz
self.lz=z_pos
else:
self.ze=z_pos
self.string+=self.make_print_str(self.lin_mov_depth_str)
na
Kod: Zaznacz cały
def lin_pol_z(self,z_pos):
if not(self.abs_export):
self.ze=z_pos-self.lz
self.lz=z_pos
else:
self.ze=z_pos
if (z_pos < 0) : self.string+=self.make_print_str("(plasma_on)\n")
else : self.string+=self.make_print_str("(plasma_off)\n")
skutkuje wygenerowaniem następującego przykładowego kodu
Kod: Zaznacz cały
(Generated with: dxf2gcode_b02, Version: TKINTER Beta 02, Date: 2010-05-04)
(Time: Fri Aug 10 00:09:11 2012)
(Created from file: /root/Projekty/VF-0050_3.dxf)
G21 (Unit in mm)
G90 (Absolute distance mode)
G64 P0.1000 (Fast path mode)
G17 (Select XY plane)
G40 (Cancel diameter comp.)
G49 (Cancel length comp.)
T1M6 (Tool change to T1)
M8 (Coolant flood on)
S5000M03 (Spindle 5000rpm cw)
G04 P3 (Pause 3 sec)
G0 Z 5.000
G0 X 11.085 Y 11.085
G0 Z 1.000
F200
(plasma_on)
F200
G2 X 48.915 Y 48.915 I 18.915 J 18.915
G2 X 11.085 Y 11.085 I -18.915 J -18.915
(plasma_off)
G0 Z 5.000
G0 X 12.499 Y 12.499
G0 Z 1.000
F200
(plasma_on)
F200
G2 X 47.501 Y 47.501 I 17.501 J 17.501
G2 X 12.499 Y 12.499 I -17.501 J -17.501
(plasma_off)
G0 Z 5.000
G0 X 16.565 Y 16.565
G0 Z 1.000
F200
(plasma_on)
F200
G2 X 43.435 Y 43.435 I 13.435 J 13.435
G2 X 16.565 Y 16.565 I -13.435 J -13.435
(plasma_off)
G0 Z 5.000
G0 X 0.000 Y 0.000
M9 (Coolant off)
M5 (Spindle off)
G00 Z30 (Spindle up)
M2 (Prgram end)
Jak się nietrudno domyślić ruch roboczy G1Z<wartość> został zastąpiony odpowiednim wpisem (plasma_on) albo (plasma_off) zależnie od znaku przed wartością ruchu w osi Z.
W innych plikach nie grzebałem.
.
: 10 sie 2012, 08:49
autor: jarenio
https://groups.google.com/forum/?hl=pl& ... %5B1-25%5D
Kod: Zaznacz cały
1st file to change: dxf2gcode_b02_shape.py
there you've got the function (Line 229): def
Write_GCode(self,config,postpro):
In line 268 you do start with the cutting and set the Feed rate for Cutting
in the plane (X-Y normaly):
postpro.chg_feed_rate(config.F_G1_Plane.get())
I would add a new function there like
postpro.start_laser()
and in line 338 the cutting in the plane is finishes:
#Fertig und Zur�ckziehen des Werkzeugs
postpro.lin_pol_z(config.axis3_safe_margin.get())
I would add another new function there like
postpro.stop_laser()
Cause the Postproccessor dont know this function you need to add them
somewhere there in the file
2nd file to change: dxf2gcode_b02_config.py
i would just add it somewhere like in line 459 after the function:
def chg_feed_rate(self,feed):
self.feed=feed
self.string+=self.make_print_str(self.feed_ch_str)
This is the new you need to add, but i dont know if M3 and M5 is right, you
should know better ???:
def start_laser(self):
self.string+=('M3\n')
def stop_laser(self):
self.string+=('M5\n')
re
: 14 sie 2012, 13:50
autor: marekms
Witam
Niestety po wprowadzeniu zmian proponowanych przez tuxcnc mam komunikat:
A po modyfikacjach wg Jarenio:
Nie umiem sobie z poradzić.
Marek
: 14 sie 2012, 16:28
autor: jarenio
znaczy coś pomieszałeś, bo mój sposób działa na 100%, wiem bo sprawdzałem

: 14 sie 2012, 16:46
autor: tuxcnc
Tak ogólnie, to jest błąd formatowania kodu.
Zapewne przepisując gdzieś pomieszałeś tabulację ze spacjami.
.
re
: 14 sie 2012, 19:56
autor: marekms
Witam
Wszystko przez moje lenistwo, użyłem kopiuj-wklej zamiast wpisać procedurę ręcznie.
Dziękuję koledze Tuxcnc i Jarenio za pomoc.
Marek
PS Zamieszczam plik dxf2gode_b02_config.py z powyższymi zmianami i dołożoną procedurą pozycjonowania wysokości palnika nad materiałem przed każdym zapłonem. (Procedura z forum linuxcnc.org). Może komuś pomogę?
