Duet3D Logo Duet3D
    • Tags
    • Documentation
    • Order
    • Register
    • Login

    G0 uses last G1 feedrate!

    Scheduled Pinned Locked Moved
    Firmware wishlist
    4
    8
    2.1k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Catalin_ROundefined
      Catalin_RO
      last edited by

      Although G0 and G1 can be safely treated identically, as stated in the G-Code wiki, using the last G1 feedrate for G0 is not right. I have machined a piece of Al with feedrates from 600mm/min to 1700mm/min and during the slow machining (milling some holes), all G0's were painfully slow. The screw driven WorkBee is capable of 2500mm/min rapids, so 600mm/min was quite visible.

      1 Reply Last reply Reply Quote 0
      • deckingmanundefined
        deckingman
        last edited by

        No quite sure I understand the issue here but maybe I missed something. When you do any move you stipulate a position to move to and a speed at which that move should be made ( feed rate). AFAIK if the G(n) command doesn't have a feed rate, then it'll use whatever feed rate it was set to for the previous move. So I'd say it's an issue with the gcode file and not the firmware.

        Ian
        https://somei3deas.wordpress.com/
        https://www.youtube.com/@deckingman

        1 Reply Last reply Reply Quote 0
        • Catalin_ROundefined
          Catalin_RO
          last edited by

          G0 feedrate is for rapids, G1 feedrate is for machining. While for 3D printing the "machining" feedrate is pretty high, thus mostly impossible to distinguish from rapid feedrate, when milling the difference might be quite significant.

          The files that I have used for milling have no Fnnn in any of the G0 codes and I see very slow "rapids". The only alternative is to replace all "G0 " sequences with "G0 F2500 " in my case.

          This is the first controller that I have used and requires such an approach as far as I'm concerned!

          1 Reply Last reply Reply Quote 0
          • deckingmanundefined
            deckingman
            last edited by

            Sorry I'm still confused. You rightly said in your OP that G0 and G1 are treated the same by the firmware. So, I'm confused as to why you say that G0 are for rapids and G1 are for machining. For 3d printing, we generally use G1 F(nnn) so for print moves, the "nnn" value is low (say 60mm/sec), and for non-print moves it can be higher (say 300mm/sec). It's the slicer that generates the moves along with the speeds. Therefore the firmware simply uses the feedrate specified by the gcode file.

            Ian
            https://somei3deas.wordpress.com/
            https://www.youtube.com/@deckingman

            1 Reply Last reply Reply Quote 0
            • Catalin_ROundefined
              Catalin_RO
              last edited by

              When machining both G0 and G1 are extensively used. G0 is normally used "when not cutting" (as specified by NIST). The firmware currently uses G1 specified feedrate also when executing G0. This is unlike any other firmware I have ever used. Also, most CAM software has support for specifying G1 feedrates but the ones I'm have no support for specifying G0 feedrates. Normally G0 feedrate is machine specific, if not specified otherwise.

              Though something may be wrong only while executing a file, because when homing, G1 is slow and G0 is fast, and there is no feedrate specified in any G0's in there!

              Anyway, it feels overall wrong when compared to alternatives.

              1 Reply Last reply Reply Quote 0
              • dc42undefined
                dc42 administrators
                last edited by

                RepRapFirmware was written originally for 3D printing applications, so we are still learning about how CNC controllers are expected to behave. Are you saying that the F parameter should only apply to G1 moves, and G0 moves should always execute at the machine limits set in M203?

                Duet WiFi hardware designer and firmware engineer
                Please do not ask me for Duet support via PM or email, use the forum
                http://www.escher3d.com, https://miscsolutions.wordpress.com

                1 Reply Last reply Reply Quote 0
                • Catalin_ROundefined
                  Catalin_RO
                  last edited by

                  Almost! G1 should work as it works right now. G0 should use M203 limits unless Fnnnn is specified with the code.

                  Right now I have tweaked CamBam to always issues the feedrate for G1 and modified the issues code to "G0 F2500" for rapids. But this is OK only as long as I don't want/need to modify the M203 limits. It is pretty easy to forget about the post processor required changes in such a case! (I will provide the post processor when this issue is sorted out!)

                  1 Reply Last reply Reply Quote 0
                  • timcurtis67undefined
                    timcurtis67
                    last edited by

                    @dc42:

                    RepRapFirmware was written originally for 3D printing applications, so we are still learning about how CNC controllers are expected to behave. Are you saying that the F parameter should only apply to G1 moves, and G0 moves should always execute at the machine limits set in M203?

                    Yes typically G0 commands run at the CNC machine max feed rates. There is usually a switch that lets you choose to run at 100% (max) 50%, 25%, and the linear feed rate which is then controlled by the feed overide switch to drop the feed rate even slower.

                    I can see the issue when using the Duet for a CNC mill because almost all cam systems use G0 (rapid moves) when not actually machining to shorten run times. For example when drilling holes, you jump from say one hole to another you want the move as fast as possible.

                    Slicer software uses G1's set to yourt "travel" feed rate so the moves between printed parts is fast.

                    You just have to manually change the G0's to G1's.

                    1 Reply Last reply Reply Quote 0
                    • First post
                      Last post
                    Unless otherwise noted, all forum content is licensed under CC-BY-SA