Programmazione parametrica spianatura

Sezione dedicata a Linuxcnc
Rispondi
Avatar utente
Maxardi99
Newbie
Newbie
Messaggi: 32
Iscritto il: lunedì 10 giugno 2019, 16:47
Località: Brescia

Programmazione parametrica spianatura

Messaggio da Maxardi99 » lunedì 10 giugno 2019, 17:11

Ciao a tutti,
Ho la necessità di compilare un programma parametrico su linuxcnc (rs274/ngc) per spianare dei pezzi di legno di varie dimensioni con una fresa a candela del 12. Ho fatto qualche tentativo ma non trovo informazioni sulla sintassi appropriata.
Il programma non dovrebbe tener conto dell'azze Z poichè lo posizinerei manualmente gia sullo spessore finale, facendo lo zero pezzo qualche cm prima del legno.
Grazie

torn24
God
God
Messaggi: 5042
Iscritto il: venerdì 1 febbraio 2008, 11:28
Località: Modena

Re: Programmazione parametrica spianatura

Messaggio da torn24 » martedì 11 giugno 2019, 9:07

La sintassi sono le regole del linguaggio e puoi trovare esempi sulle strutture di controllo in questo link.

http://linuxcnc.org/docs/html/gcode/o-code.html

Per il programma devi crearlo tu
CIAO A TUTTI !

Avatar utente
hellfire39
God
God
Messaggi: 3399
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Programmazione parametrica spianatura

Messaggio da hellfire39 » martedì 11 giugno 2019, 10:22

esistono anche dei siti che genarano automaticamente codice per alcuni task comuni, tipo spianare facce, scavare tasche, ecc.
Questo è un esempio:

http://www.intuwiz.com/facing.html#.XP9jso_OOUl

Ci sono due wizard con i quali puoi generare programmi di spianatura con passate orientate secondo l'asse x o y.
Devi specificare alcuni parametri geometrici, tipo l'origine e le dimensioni del pezzo da spianare.

Avatar utente
Fiveaxis
God
God
Messaggi: 5712
Iscritto il: sabato 15 gennaio 2011, 12:08
Località: Monza e Brianza

Re: Programmazione parametrica spianatura

Messaggio da Fiveaxis » martedì 11 giugno 2019, 12:47

Interessante il sito che ti genera dei file ISO Standard, ma crearsi delle macro a "bordo macchina" con la programmazione parametrica rende la cosa molto più semplice e veloce.
Anche perchè, non è detto che il PC che fa girare LinuxCNC (o altro software per altro CN) sia connesso al WEB, anzi...Sarebbe meglio non lo fosse! :wink:
La macchina conta...ma la differenza la fa il "manico"!

Avatar utente
hellfire39
God
God
Messaggi: 3399
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Programmazione parametrica spianatura

Messaggio da hellfire39 » martedì 11 giugno 2019, 13:51

Forte, la programmazione parametrica!

Per me che sono programmatore la cosa può essere divertente (anche se un bug può costarti caro... :shock: )
Probabilmente non tutti trovano facile quella sintassi.

billielliot
Senior
Senior
Messaggi: 1747
Iscritto il: martedì 16 ottobre 2007, 23:23
Località: Trezzo sull'Adda

Re: Programmazione parametrica spianatura

Messaggio da billielliot » martedì 11 giugno 2019, 14:08

Ciao hellfire,

se ti piace la parametrica, la guida dell'utente badade ti piacera'.

Ciao

Mauro
Amat victoria curam

Avatar utente
Fiveaxis
God
God
Messaggi: 5712
Iscritto il: sabato 15 gennaio 2011, 12:08
Località: Monza e Brianza

Re: Programmazione parametrica spianatura

Messaggio da Fiveaxis » martedì 11 giugno 2019, 14:10

Tra l'altro l'ISO Fanuc credo sia moooolto simile all'ISO LinuxCNC... :wink:
La macchina conta...ma la differenza la fa il "manico"!

Avatar utente
hellfire39
God
God
Messaggi: 3399
Iscritto il: domenica 16 dicembre 2012, 9:04
Località: AN

Re: Programmazione parametrica spianatura

Messaggio da hellfire39 » martedì 11 giugno 2019, 14:39

Bella guida, grazie

Avatar utente
Fiveaxis
God
God
Messaggi: 5712
Iscritto il: sabato 15 gennaio 2011, 12:08
Località: Monza e Brianza

Re: Programmazione parametrica spianatura

Messaggio da Fiveaxis » martedì 11 giugno 2019, 14:49

OT
hellfire39 ha scritto:
martedì 11 giugno 2019, 13:51
Probabilmente non tutti trovano facile quella sintassi.
Al contrario direi! Molti operatori "vecchia scuola" utilizzano con maestria la programmazione parametrica.
Prima del boom dei CAM (diciamo fine anni '90) era molto utile e versatile e, in alcune situazioni, lo è ancora. :D
FINE OT

Tornando a bomba sulla richiesta, il link che ha postato Torn24 elenca le varie possibilità che offre LinuxCNC, in relazione alla programmazione parametrica. La guida linkata da Billieliot invece si riferisce a Fanuc che, benchè simile a LinuxCNC, non è identico. :wink:
La macchina conta...ma la differenza la fa il "manico"!

Avatar utente
shineworld
Senior
Senior
Messaggi: 673
Iscritto il: venerdì 18 marzo 2016, 9:44
Località: Vicenza
Contatta:

Re: Programmazione parametrica spianatura

Messaggio da shineworld » martedì 11 giugno 2019, 15:26

Non ho LinuxCNC per provarlo ma questa parametrica, con qualche aggiustamento, dovrebbe andare bene anche su quella CNC:

Codice: Seleziona tutto

; Name          : rectangular-pocket
; Sub UID       : 0
; Version       : 1
; Description   : rectangual pocket
; Note          : Work only with G17 (XY) plane
;               : Increment depth will be divided equally by K #6
;               : Plunge feed is 1/4 of cut feed
;               : Return to start feed is double the cut feed
;               : Feed to surface is double the cut feed
;               : Call example: 
;               :   G65 P8030 X-30 Y-15 Z0 C6 F500 I60 J30 K4 D2
;
; Inputs:
;
;   G65     G65/M98     Opt   Description
;   ===     =======     ===   ===========
;   X       #24          X    start position X (top/left corner)
;   Y       #25          X    start position Y (top/left corner)
;   Z       #26          X    start position Z (top/left corner)
;   C       #3                tool diameter
;   F       #9                cut feed in [UM]PM OR [UM]PR - set G94/G95 before to call
;   I       #4                length of pocket for X
;   J       #5                length of pocket for Y
;   K       #6                number of rough cuts
;   D       #7                increment depth of poket
;   R       #18          X    rotation of pocket
O8030

; checks if inputs are defined
IF [#24 EQ #0] THEN #24=#5001   ; X to current program position if ommited
IF [#25 EQ #0] THEN #25=#5002   ; Y to current program position if ommited
IF [#26 EQ #0] THEN #26=#5003   ; Z to current program position if ommited
IF [#3  EQ #0] THEN M99         ; exit if C ommited
IF [#9  EQ #0] THEN M99         ; exit if F ommited
IF [#4  EQ #0] THEN M99         ; exit if I ommited
IF [#5  EQ #0] THEN M99         ; exit if J ommited
IF [#6  EQ #0] THEN M99         ; exit if K ommited
IF [#7  EQ #0] THEN M99         ; exit if D ommited
IF [#17 EQ #0] THEN #8=0	; rotation to 0 if ommited

; checks if selected XY plane
IF [#5102 NE 17] THEN M99

; if definted does required rotation
IF [#18 EQ 0] THEN G69
IF [#18 NE 0] THEN G68 X[#5001] Y[#5002] R#18

; evaluates entered values
#3=ABS[#3]        ; C is set positive only
#8=ABS[#8]        ; E is set positive only
#9=ABS[#9]        ; F is set positive only
#6=ABS[#6]        ; K is set positive only
#6=FUP[#6]        ; K is rounded up to whole

#6=ABS[#6]        ; force K to positive
#9=ABS[#9]        ; force F to positive
#3=ABS[#3]        ; force C to positive
#7=ABS[#7]        ; force D to positive
#7=-#7            ; force D to negative

#100=ABS[#3/2]    ; cutter radius
#101=[#3*.65]     ; 65 percent step over
#120=[#7/#6]      ; depth of cut calculation

; checks if cutter is too big
IF [[#3 GE ABS[#5]] OR [#3 GE ABS[#4]]] THEN M99

(**** CHECKING WHICH AXIS IS THE SHORTER ONE ***************)
IF[#4GE#5]THEN#102=FUP[[[#5/2]-#100]/#101](IF Y IS SHORT SIDE CALC CUTS IN Y)
(#102 IS NUMBER OF CUTS FOR SHORT Y SIDE)
IF[#4GE#5]THEN#131=0  (SET TO ZERO IF Y IS SHORTSIDE)
IF[#5GT#4]THEN#102=FUP[[[#4/2]-#100]/#101](IF X IS SHORT SIDE CALC CUTS IN X)(!!!)
(#102 IS NUMBER OF CUTS FOR SHORT X SIDE)
IF[#4LT#5]THEN#131=1   (SET TO 1 IF X IS SHORTSIDE)
(*********************************************************)

(*** PRESETS ***)
G90G0Z[#26+.1](CLEAR Z)
X[#24+#100]Y[#25+#100]  (RAPID TO START POINT + 1/2 CUTTER)
G01Z#26F[#9*2]  (FEED TO SURFACE Z)
#110=0(SET LOOP COUNTER)
#105=0 (STEPOVER INITIAL SETTING)
(*******************************************************)

(*** MAIN LOOP 1 ***)
#130=0                (LOOP COUNTER TO CALL CUTTING LOOP)
WHILE[#130LT#6]DO1    (DO UNTIL NUMBER OF CUTS IS DONE)
G90G01X[#24+#100]Y[#25+#100]F[#9*2] (GO TO START POSITION)
G91G01Z#120 F[#9/4]    (FEED DOWN PRE-CALCULATED AMOUNT)

(*** LAYER CUTTING LOOP 2 ***)
WHILE[#110LT#102]DO2(#102 IS CALCULATED # OF CUTS BASED ON SHORT SIDE)
#115=#5002 (GET CURRENT Y POSITION)
G91X[[#4-#3]-#105]F#9(CUT LENGTH - CUTTER - STEPOVER)
#118=#5001 (GET X FOR CENTER CUT AFTER LOOP)
Y[[#5-#3]-#105](CUT WIDTH - CUTTER - STEPOVER)
#116=#5002 (GET NEW Y POSITION)
X-[[#4-#3]-#105](CUT LENGTH - CUTTER - STEPOVER)
#119=#5001(GET NEW X AXIS)
Y-[[#5-#3]-#105](CUT WIDTH - CUTTER - STEPOVER)
#117=[#116-#115] (DIFFERENCE IN Y POSITIONS)
#121=[#118-#119] (DIFFERENCE IN X POSITIONS)
IF[#110EQ[#102-1]]GOTO10 (SKIP INWARD MOVE IF ON LAST CUT)
X#101Y#101(SCOOT INWARD FOR NEXT CUT)
N10 #110=[#110+1] (INDEX COUNTER BY ONE)
#105=[#101*2](NOW THROW STEPOVER INTO CALC TILL DONE)
IF[#110GE2]THEN#105=[#105*#110](ADD STEPOVER BASED ON LOOP COUNT)
END2

#105=0(RESET STEPOVER INITIAL SETTING FOR ANOTHER GO AROUND)
#110=0(RESET LAYER LOOP COUNT FOR ANOTHER GO AROUND)
IF[[#117GE#3]AND[#131EQ0]]THENG91G01Y[#117/2]  (IF ISLAND - CUT X MIDDLE)
IF[[#117GE#3]AND[#131EQ0]]THENG01G90X#118      (IF ISLAND - CUT X MIDDLE)
IF[[#121GE#3]AND[#131EQ1]]THENG91G01X[#121/2]  (IF ISLAND - CUT Y MIDDLE)
IF[[#121GE#3]AND[#131EQ1]]THENG01G90Y#116      (IF ISLAND - CUT Y MIDDLE)
G90G01X[#24+#100]Y[#25+#100]F[#9*2]          (BACK TO START POSITION)
#130=[#130+1]                                (MAIN LOOP 1 INDEX +1)
END1
G90G0Z[#26+1]

; if defined a rotation disable rotation
IF [#18 NE #0] THEN G69

M99
Come si vede dai parametri d'ingresso si può usare definendo il diametro untesile e la rotazione del pocket:
001.jpg
Non hai i permessi necessari per visualizzare i file e le foto allegati in questo messaggio. Per visualizzare tali file devi registrarti ed effettuare il Login

Rispondi

Torna a “Linuxcnc”