Duet3d CNC gcode
-
Hi,
Im start using d3 as cnc controller
Works just great
Im using some post-processor for fusion360 + some modification in it, but I think its no a road should be followed:- d3 has not enough cnc folowers (and would not have enough in a few years) compare to march3 or linuxcnc
- as a result of p1 - it would be quite a limited support for post processors - probably only the very basic features for major cam only
- if I try moving/port something from lcnc/m3 eviroment it would be quite hard, since I would be needed to emulate the difference in first place
That said, I think it worths considuring moving cnc gcode style toward lcnc / m3 or any other standard (tormach ?)
P.S. Im not even close to be named as a cnc newbe, im just walking around cnc ). I do IT system design for a living, and that exact part I force my teams to avoid in my projects )
-
@chernogorsky Have you seen this post? Ultimate Reprap Fusion Post Processor
-
@chimaeragh Yes,
Im using it, with few modification (have probably made merger request if it'll be interested)
that's where I find that we are probably heading the wrong wayexamples:
- I want using the probe (fusion360), ok - let say, that I'll be able to write/debug code for it myown (support - probably no)
- I want using linuxcnc addon for probes (they have like 50 scripts (tested/and updated) for probing,
but different gcode flavor, so in order to make it work I need to translate it line by line - I wanna try other CAM,
What Im saying is - duet3d cnc community is not that huge (at least now and in a few years) to create/support all that may be required and avaiable on a open-source-like enviroments
If (IHMO) d3 uses some of the more spreaded gcode flavor that can help spread the board itself
P.S. I myself probably be able to code it myself
P.P.S. or I'd realize that I spend more time coding (something needed me only) than cncing -
@chernogorsky is there anything specific that RRF doesn’t support for you?
Most CNC commands are supported in RRF, and we try to keep to the NIST standard. There is a list of Gcodes not implemented here, and the reasons/workarounds: https://docs.duet3d.com/User_manual/Reference/Gcodes_not_implemented
Alternatively, you can write your own gcodes if they are missing; in RepRapFirmware 2.03 and later, if you try to execute a G- or M-command that RRF does not implement, it will execute a system macro of that name if it exists. For example, if you send G40 then it will execute /sys/G40.g if it exists; and if you send M48 then it will execute /sys/M48.g if it exists.
If a Gcode exists but doesn’t work as you want, you can either recompile RRF without that command, and write your own macro for it, or submit a change request in the ‘firmware wishlist’ section of the forum.
Ian
-
@droftarts Im not talking about clear gcode
Im talking about gcode flavorExample:
I cant use code post processed / designed for linuxcnc
I have to use separate post processor (which work quite good for f360 btw)so if i want using something but f360, or use existed code for lcnc / mach3 i have to spend tremendos of time each time, so in long term it not worth it (except for me personally)
-
So I'll not be able to reuse code for other env, we have to create and SUPPORT owr own
-
@chernogorsky It's pretty rare that Gcode is transportable between machines; there's too many differences between them. Number of axes, feed rates, machine size, tools, etc; the list is endless. It's only if you have a homogenous product, like the Prusa machines in 3D printing, that you can get anywhere close to this. That you have to change 'flavour' or post processor for specific machines is not a surprise.
Like I said, if there's anything specific you feel is missing from RRF, please submit a change request in the 'firmware wishlist' section of the forum.
Ian
-
I was among the first users of Duet on a CNC machine over four years ago. Back than I had a genuine, first version, Workbee, with several years of using GRBL on another low cost CNC. While Duet was lacking features of GRBL that I was already used with, the old Pololu DRV8825 drivers were not up to the task and I decided not to spend to much on proper Leadshine drivers. So Duet looked perfect as a hardware platform.
With CamBam for the CAM part, configuring it to generate a GCode that was understood by Duet back then was OK (G2 and G3 were not even planned back then, not to mention the work coordinates!). I wrote on the forum about the issues that I have found, I complained about some of the missing features, and things slowly got better.
These days the Duet boards are a good choice, depending on the CNC you want to control.
3 years later problems started to creep in. Being an Electronics engineer, I started digging. It all came down to the on-board drivers. Randomly, only at powering on, they reported disconnected and/or shorted steppers. I checked all connections, I replaced connectors, I ended up replacing cables - no luck! And, worse, sometimes I was not able to use the CNC for a whole day. Once started, all went flawlessly! I was not the only one with the symptom, just search the forum for "phase disconnected". There was no clear solution to the problem!
My ten cents - even if properly cooled, using the on-board drivers at 2.4A (my steppers are rated for 3A) for hours at a time is affecting them over time. The higher power drivers on the Duet 3 board should be better. But there is another problem - the supply voltage! You can't get proper performance from the steppers on a larger CNC without using at least 36V as supply. Even the new Duet 3 boards are limited to 32V.
So I decided to put the Duet board to storage and moved to PlanetCNC MK3 with Leadshine drivers. The bill was slightly higher, but not hugely higher (less than double!). And it comes with a lot of CNC specific bells and whistles.
-
@catalin_ro Im using 6xd, so no direct drivers
direct one - I had many issues with d2, with d3 not so much, but I rarely push the limitsoverheating - not sure its an issue - used to run d3 in 45-50 outside
rest - donno,
I just foresee that due to limited numbers of users that env would not be able to grow naturally (not only create something required, but also support it for prolonging period of time)example: I can create (and I did) cnc pendant, will probably code it till some finished module
but in case I switch to another project it most likely would be abandonedsame for all "not critical / not mainstream" parts
With 3d its easier (its more general in terms), but still linear adv, ....
at the moment it not limit me a lot, but will see how its go
-
@chernogorsky I dont think the amount of followers on the cnc side is an issue. It's really not that complicated if you take the time to understand gcode. What I mean is anyone that has a cnc mill should be capable of looking at the program and understanding what the machine's about to do and be able to adjust as needed. Its intimidating at first but g code is quite simple. Most non industrial, single tool CNC's need very little in addition to the actual movement commands.
I use the Duet on 2 printers, a test rig, a (very) small cnc mill, my friends cnc mill and am in the process of using it on a lathe that's being retrofitted to cnc with clearpath servos. My motivation for using it on machines other than a 3d printer is familiarity and flexibility. I have basically the same system and support on everything. With the ability to use external drivers there are few limitations. I'm currently testing brushed dc servos with Gecko drives and it looks promising. Very smooth, high rpm and cheap if you find the right deals
-
@chernogorsky said in Duet3d CNC gcode:
@droftarts Im not talking about clear gcode
Im talking about gcode flavorExample:
I cant use code post processed / designed for linuxcnc
I have to use separate post processor (which work quite good for f360 btw)so if i want using something but f360, or use existed code for lcnc / mach3 i have to spend tremendos of time each time, so in long term it not worth it (except for me personally)
What specific elements of the linuxcnc gcode flavor are different for the F360 output etc?
Is this about a gcode not being supported, or the syntax being different?
-
@t3p3tony syntax, im talking about syntax
the idea is (same as it in programming)
you creating your own template system, you are using standard
you creating your own variant of the language, you are using same as a bigger project (so you can grab parts from there without modification) -
@chernogorsky ok, i understand what that is, but I don't understand the differences between (say) Linux CNC and F360 output that you mentioned.
Some examples would be helpful.
-
@chernogorsky
this is the commands to run my micro mill in the simplest form
begin-
M453 (CNC mode. Can be set from command line then doesnt need to be included it in programs)
T0 ; set tool .1mm ENGRAVER
G21 ; set units to millimeters
G90 ; use absolute coordinates
(add spindle on command or whatever else. Or not)some code using I and J-
(My PP (post processor) uses a 0 after G or M codes. RRF doesn't seem to mind. G1, G0, M3 is common these days);ENGRAVING
G00 Z0.5
G00 X1.836 Y29.742
G01 Z-0.23 F18.
G03 X1.804 I-0.034 J-1.019F80.
G01 X1.787
G01 Y29.896
G03 X1.836 Y29.742 I20.298 J6.458
G01 X1.884 Y29.757
G03 X1.907 Y29.688 I20.2 J6.597
G03 X1.884 Y29.689 I-0.078 J-0.967
G01 X1.857 Y29.691
G03 X1.804 Y29.692 I-0.055 J-0.969
G01 X1.777
G03 X1.737 Y29.691 I-0.002 J-0.97.........End Code (not required)-
G00 Z5.0
G28 XYM30 typically ends a cnc program but RRF uses the command to erase a file from the SD card. The program can just end as above. You can add additional commands to turn off spindle or disable motors if you want.
If I recall RRF can also use R instead of I,J,K which I assume you mean as "flavor". Most CNC controls need % as first and last character. RRF does not.
I think you can roll any begining or end "required" code in to a macro or copy and paste then just use Fusion or whatever for movement commands only. If you want to use cutter comp or offsets add as needed. Most modern PP use "cancel" commands and set WCS at the beginning and end but it can be greatly simplified like above and the machine will work fine. Its only as complicated as you make it