Welcome! Log In Create A New Profile

Advanced

CNCCookbook’s G-Code Tutorial - Conditions and Looping

Posted by AndreaMattiaDenaro 
CNCCookbook’s G-Code Tutorial - Conditions and Looping
May 05, 2018 05:41AM
Ciao a tutti,

in base a questo link GcodeTutorial è possibile "programmare" il gcode ed anche "condizionarlo". Quello che vorrei chiedervi, prima di fare le mie solite 100 prove :

1) Vale anche per le nostre schede?
2) Se ci sono limitazioni nell'hardware che si usa nelle stampanti 3D, come o cosa si potrebbe fare per aggirare l'ostacolo?

THK in ADVANCE tongue sticking out smiley


La mia stampante : Wooden Prusa I3 Pro W
Il mio status : Principiante

Saluti Andrea
Re: CNCCookbook’s G-Code Tutorial - Conditions and Looping
May 05, 2018 07:46AM
Dubito che si possa fare, in genere "i conditionals" ed i "canned cycles" (i codici per le forature) sono implementati solo da interpreti tipo MACH3 o LinuxCNC, ad esempio GRBL (che al momento è il più completo interprete "a bordo" di schede a microprocessore a 8 bit) non supporta i "canned cycles" e nemmeno le variabili e gli if ecc.

Infatti quel tutorial è per MACH3 che poi comunica con la macchina usando delle schede esterne che comandano direttamente i motori, al limite tramite una porta parallela del computer.

Solo per poter usare le coordinate di lavoro su Marlin e forse anche su MK4duo devi attivarle da firmware, alcuni FW non supportano nemmeno le intepolazioni G02 e G03 o vanno attivate nel FW.

In genere nell'uso da PC la catena software prevede un CAD, un CAM e un sender come CAD si può usare ad esempio LibreCAD (2D) come CAM al momento a parte le soluzioni internet ci sarebbero PyCAM (il cui sviluppo è appena ripreso ma è free) oppure soluzioni a pagamento economiche per citare quella che uso io CAMBam, che gira anche sotto Linux. come Sender, puoi scegliere, ma ad esempio io uso bCNC che funziona sia sotto windows che sotto Linux (e quindi anche su un Raspberry Pi o simili).

I concetti sono diversi dalla stampa 3D ad esempio tutte le macchine a 3 assi non sono propriamente 3D ma definite a volte 2.5D in quanto l'asse Z può solo alzarsi ed abbassarsi e non può ad esempio fare i sottosquadra.

il vero CAM 3D ha bisogno di controllare almeno 4 assi XYZ e A o B o C (un asse rotativo che fa ruotare o la tavola di lavoro o la testa della fresa) in modo da poter fare qualche sottosquadra (per farli tutti senza artifici ti servono almeno 5 assi) il problema è che poi i CAM a 4 o 5 assi sono molto legati al tipo di macchina che hai e ovviamente molto costosi (nell'ordine di qualche migliaia di Euro almeno se non decine di migliaia).

In genere i CAM non usano i conditionals, perché fanno tutto al loro interno, cioè definiscono i "percorsi utensile" in base al disegno che gli dai in pasto.

I conditionals e le variabili erano usati nei controlli manuali quando si scriveva il codice "a mano" e poi si caricava il dischetto con il file nel controllore, o si programmava a manina sulla console con la tastiera.

Puoi comunque come al solito è questione di gusti, se vuoi un giretto sul forum di CAMBam ti può dare un'idea delle cosucce che ci puoi fare (costa circa 100 Euro), supporta anche la creazione di plugin (io ne ho scritti alcuni) ed è usato anche da gente che fa produzione, integra anche un piccolo CAD senza molte pretese, ma più che sufficiente per i lavori "normali".

Saluti

Carlo D.

Edited 1 time(s). Last edit at 05/05/2018 07:48AM by onekk.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.6 con ABL induttivo con LJ18A3 - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Re: CNCCookbook’s G-Code Tutorial - Conditions and Looping
May 05, 2018 09:26AM
Si, per il cam sto guardando a cambam. Per il cad non ho problemi, avrei invece bisogno di un sender "manipolabile"; qui la mia ignoranza affiora ed è un peccato perchè la programmazione potrei farla in real time.

Allego una foto che dà due spunti per capire la mia necessità:

1) sto facendo dei profili simil-alluminio ma in ABS/PLA (nero ABS, bianco PLA) che mi prendono anche 50 mb per 10 cm, il che non è un problema, ma non mi permette di avere il controllo "totale" tipo pausa-ripresa automatica con tutto quello che ci sta in mezzo (tra una pausa e l'altra un mandrino dovrebbe levigarmi il pezzo)

2) ho notato che cambiando la temperatura si ottengono layer opachi piuttosto che lucidi, per adesso li ho ottenuti intervenendo manualmente nel gcode, ma se avessi un sender ed essendo io un programmatore, non avrei problemi ad inserirmeli con un software

Riesco ad inviare col pc una stringa ad arduino e ricevere una conferma ad ogni invio, stile ping-pong, ma non sò cosa inviare alla scheda. Basterà inviare una riga di gcode alla volta?


La mia stampante : Wooden Prusa I3 Pro W
Il mio status : Principiante

Saluti Andrea
Attachments:
open | download - photo_2018-05-05_15-25-04.jpg (83.1 KB)
Re: CNCCookbook’s G-Code Tutorial - Conditions and Looping
May 05, 2018 12:02PM
Considerando che analizzare il GCode generato da uno slicer non è che sia la cosa più semplice di questo mondo, io uso Slic3r e c'è un opzione che fa seguire ad ogni linea quello che fa, con un parser magari in python, o anche con una console unix con "grep" o con uno stream editor tipo "sed" o al limite con "gawk" è possibile inserire ad esempio delle linee in più che seguono, o precedono alcune linee con determinati "tag", però hai voglia di farlo con un file di 2 o 3 MB, usando un editor serio tipo VIM puoi fare una ricerca e sostituisci abbastanza potente e abbinarla magari ad una sequenza di tasti, comunque parliamo del mondo unix/linux.

Un sender ci sarebbe, se vai sul sito github di GRBL c'è un semplice programma python che manda alcune linee di codice a Grbl, essendo python sotto windows hai delle implementazioni di python che girano decentemente, ancorché tutte le utility che ti ho elencato le trovi compilate anche per windows, però la console di windows fa un po' penare per l'uso a livello di script.

Però ad esempio su Slic3r ci sono già alcune opzioni che ti permettono di inserire alcuni Gcode personalizzati ad esempio al cambio di layer oppure al cambio di "utensile" magari senza tirare in ballo roba strana già all'interno di qualche slicer ci sono possibilità di personalizzare in un certo modo il codice generato.

CAMBam è decentemente potente, io uso ancora la versione 0.9.8 in quanto sotto Linux è quella che gira meglio e mi sono creato una serie di plugin "ad hoc" però per la stampa 3D è scarsamente utilizzabile, in quanto ha limitate capacità di slicing, cioè puoi "affettare" il modello ma ad esempio non calcola i riempimenti ecc e dovresti crearti a mano un plugin in C# che faccia il lavoro che ad esempio fa Slic3r, secondo me è tempo perso, nel campo CAD/CAM va bene così com'è, ad ognuno il suo mestiere, la comunità che gira attorno al forum di CAMBam è quanto di meglio ci sia in giro, dh42, lloydspy, EddyCurrent e onekk (me) in genere sono quelli che fanno i plugin ultimamente io un po' meno.

La comunità ti dicevo è molto attiva anche se al momento putroppo il forum sta avendo problemi di connessione.

Lavorare in C# non è rognosissimo, il problema è la documentazione delle API, ma vabbeh si riesce a fare diversa roba, anche se non è tutto piano e semplice, però parliamo di CAD e CAM, io ho fatto ad esempio un plugin per fare le scatole in legno con i lati ad incastro, che calcola tutti gli incastri e genera anche le operazioni di taglio pronte da modificare, devi sistemare i "fermi" per i pezzi in quanto l'algoritmo di calcono non è il massimo, ma ti elimina il 95% del lavoro rispetto al vecchio plugin che girava. (e gira sotto Linux).

Programmando si può fare tutto è solo questione di API, ho scritto anche un piccolo interprete 2D per generare il GCode per robe semplici in modo programmatico tutto in python riutilizzando alcune idee parzialmente sviluppate che c'erano in giro, ad esempio avevo necessità di fare un lavoro in 2.5 D per fare dei gocciolatoi per delle finestre in legno, ho scritto un paio di routine e gliele ho date in pasto, partendo dal pezzo grezzo l'utensile fa una serie di passate da un certo X in poi scalando di un certo Z alla passata successiva incrementa l'X in modo da creare una Scaletta in Z con una certa inclinazione calcolata semplicemente dando la quota X,Z di partenza e la quota X,Z finale. Con un CAM era uno strazio, anche perché dovevo fare pezzi di lunghezza differente in Y quindi a meno di non lavorare in aria per un bel pezzo nei pezzi più corti è stato solo il caso di dare degli Y differenti ad ogni giro del programma.

Se vuoi ci sentiamo in PM perché qui la roba CNC mi sa che è OT.

Saluti

Carlo D.


P3Steel - MKS GEN v1.2 e REPRAP_DISCOUNT_FULL_GRAPHIC_SMART_CONTROLLER + Gen 7 MOSFET (HotBed) + alimentatore step-down 12V -> 5V
Firmware MK4duo 4.3.6 con ABL induttivo con LJ18A3 - Slic3R (Originale) ed ESP3D per controllare la stampante da remoto.
HotEnd Cinese V6 clone con ugello da 0.4mm.

[My Building Log]
Sorry, only registered users may post in this forum.

Click here to login