El workflow del CNC consta de tres passos:
- Disseny del model o peça. Es fa amb software de CAD, com per exemple LibreCAD, i el format de sortida estàndar és dxf
- Generar el G-Code (del que va aquest article). Necessites un programa que sàpiga llegir el format dxf (on estan definides línies, arcs, polilínies, splines, etc.) i generi el codi (G-code) que entenen les fresadores CNC.
- El software que sap interpretar el G-Code i sap enviar les comandes a la màquina CNC a través del port paral·lel. Per exemple, LinuxCNC o EMC.
De tota aquesta tool chain el procés més complicat és el segon. Concretament l’optimització dels camins que farà la màquina CNC té molta importància en el resultat final.
Anem a veure-ho amb un exemple senzill i entenedor. Estem utilitzant el dxf2gcode, i realment va molt bé. Està escrit en Python. Té una interfície gràfica, però el millor és que també es pot executar en mode consola. Davant d’un problema que he tingut i que ja està resolt, vaig buscar una alternativa. M’he trobat amb el projecte dxf2G (els noms no són molt originals, ja veieu), que està escrit en llenguatge C, són 3000 línies de codi, i s’executa en línia de comandes.
El segon és un projecte senzill que funciona molt bé per petits projectes, i que és interessant estudiar el codi. Mirant què fa i com ho fa, es troba a faltar que no separa les capes del dxf (normalment es treballa amb capes perquè associem les capes a un canvi d’eina, per treballar amb diferents diàmetres de broca), i sobretot l’optimització de camins, que seria la part difícil d’implementar (es fan tesis doctorals sobre aquesta matèria).
Ho veiem amb un exemple de dibuixar una línia amb profunditat de 3mm, fent dues passades de 1,5mm. La manera correcta, com ho fa el dxf2gcode és fer una passada a 1,5mm, foradar fins a 3mm, i desfer el camí fins a tornar a l’inici de la recta. El tros de G-Code que genera el dxf2gcode és:
(*** LAYER: 0 ***)
T1 M6
S6000
(* SHAPE Nr: 0 *)
G0 X 0.000 Y 0.000
M3 M8
G0 Z 3.000
F150
G1 Z -1.500
F400
G1 X 60.000 Y 0.000
F150
G1 Z -3.000
F400
G1 X 0.000 Y 0.000
F150
G1 Z 3.000
G0 Z 15.000
M9 M5
En canvi, el dxf2G fa la implementació fàcil i costosa en temps: anem a l’origen de la recta; foradem a -1,5; fem la passada de la recta; pujem fins a 6mm per no tocar la peça; tornem a l’origen de la recta; foradem fins a -3mm; tornem a repassar la recta fresant a -3mm.
G0 X0.000000 Y0.000000
G0 Z3.000000
G1 Z0
G1 Z-1.500000
G1 X60.000000 Y0.000000
G0 Z6.000000
G0 X0.000000 Y0.000000
G0 Z3.000000
G1 Z-3.000000
G1 X60.000000 Y0.000000
G0 Z6.000000
Total, el segon codi pot trigar el doble de temps que el primer. I és que implementar algorismes d’optimització de camins (toolpath optimization en anglès) no és cosa fàcil.