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

    Firmware Skips a few gcode instructions -- known issue?

    Scheduled Pinned Locked Moved Solved
    CNC
    3
    20
    891
    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.
    • N7JTIundefined
      N7JTI
      last edited by

      I've been doing some carving with my CNC and noticed a mistake in the carving. If I run my g-code file the first time, it carves correctly. Here is a photo of the gcode file being executed correctly.

      20201229_172426.jpg

      but when I switch out the stock and run the same file a 2nd time, it doesn't lift to cut the third line and leaves an unintended v-carve grove in the carving. Both carves are the same gcode file run in succession. So the problem can't be in the g-code, so it is in the firmware or the hardware. Here is a picture of the file being run incorrectly. Note the head doesn't lift between v-carving the 2nd and 3rd lines leaving an extra line in the stock that isn't in the g-code.

      20201229_172435.jpg

      Is this a known issue? Is there already a fix for this? I can reliably repro the issue using the gcode below.

      heart_trivit_engrave.gcode

      1. reset the machine
      2. Home the machine
      3. Set my work coordinates in WCS1
      4. jog the machine over to the center of my stock
      5. Set the z-height using my touch probe (and my z-probing macro)
      6. turn on my spindle and start the file.
      7. after the carve is complete, turn off the spindle. jog the head up and back so I can get to the stock.
      8. unclamp the stock, flip over. reclamp the stock, restart the spindle
      9. Run the gcode file a 2nd time by clicking it from the jobs menu.
      10. Watch the machine not lift before rapiding to the third line (~ line 60 of the gcode).
      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by

        Results of M122 and your config.g?

        Z-Bot CoreXY Build | Thingiverse Profile

        1 Reply Last reply Reply Quote 0
        • N7JTIundefined
          N7JTI
          last edited by N7JTI

          m122
          === Diagnostics ===
          RepRapFirmware for Duet 3 MB6HC version 3.1.1 running on Duet 3 MB6HC v1.01 or later (SBC mode)
          Board ID: 08DJM-956BA-NA3TN-6J1DL-3S86P-9TBUT
          Used output buffers: 1 of 40 (10 max)
          === RTOS ===
          Static ram: 154604
          Dynamic ram: 162024 of which 52 recycled
          Exception stack ram used: 512
          Never used ram: 76024
          Tasks: NETWORK(ready,1968) HEAT(blocked,1416) CanReceiv(suspended,3820) CanSender(suspended,1432) CanClock(blocked,1436) TMC(suspended,68) MAIN(running,5056) IDLE(ready,76)
          Owned mutexes:
          === Platform ===
          Last reset 02:10:47 ago, cause: software
          Last software reset at 2020-12-30 01:07, reason: User, spinning module LinuxInterface, available RAM 75800 bytes (slot 3)
          Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0444a000 BFAR 0x00000000 SP 0xffffffff Task MAIN
          Error status: 0
          MCU temperature: min 26.8, current 28.6, max 31.0
          Supply voltage: min 0.2, current 0.3, max 24.4, under voltage events: 0, over voltage events: 0, power good: no
          12V rail voltage: min 0.1, current 0.2, max 12.4, under voltage events: 2
          Driver 0: standstill, reads 11456, writes 39 timeouts 0, SG min/max 0/635
          Driver 1: standstill, reads 11448, writes 47 timeouts 0, SG min/max 0/674
          Driver 2: standstill, reads 11448, writes 47 timeouts 0, SG min/max 0/692
          Driver 3: standstill, reads 11448, writes 47 timeouts 0, SG min/max 0/619
          Driver 4: standstill, reads 11473, writes 22 timeouts 0, SG min/max 0/0
          Driver 5: standstill, reads 11473, writes 22 timeouts 0, SG min/max 0/0
          Date/time: 2020-12-30 03:18:30
          Slowest loop: 4.79ms; fastest: 0.13ms
          === Storage ===
          Free file entries: 10
          SD card 0 not detected, interface speed: 37.5MBytes/sec
          SD card longest read time 0.0ms, write time 0.0ms, max retries 0
          === Move ===
          Hiccups: 0(0), FreeDm: 375, MinFreeDm: 368, MaxWait: 99492ms
          Bed compensation in use: none, comp offset 0.000
          === MainDDARing ===
          Scheduled moves: 482, completed moves: 482, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
          === AuxDDARing ===
          Scheduled moves: 0, completed moves: 0, StepErrors: 0, LaErrors: 0, Underruns: 0, 0 CDDA state: -1
          === Heat ===
          Bed heaters = -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1, chamberHeaters = -1 -1 -1 -1
          === GCodes ===
          Segments left: 0
          Movement lock held by null
          HTTP* is ready with "M122" in state(s) 0
          Telnet is idle in state(s) 0
          File* is idle in state(s) 0
          USB is idle in state(s) 0
          Aux is idle in state(s) 0
          Trigger* is idle in state(s) 0
          Queue* is idle in state(s) 0
          LCD is idle in state(s) 0
          SBC is idle in state(s) 0
          Daemon* is idle in state(s) 0
          Aux2 is idle in state(s) 0
          Autopause is idle in state(s) 0
          Code queue is empty.
          === Network ===
          Slowest loop: 1.05ms; fastest: 0.01ms
          Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0), 0 sessions Telnet(0), 0 sessions
          HTTP sessions: 0 of 8

          • Ethernet -
            State: disabled
            Error counts: 0 0 0 0 0
            Socket states: 0 0 0 0 0 0 0 0
            === CAN ===
            Messages sent 4, longest wait 0ms for type 0
            === Linux interface ===
            State: 0, failed transfers: 0
            Last transfer: 13ms ago
            RX/TX seq numbers: 55924/55926
            SPI underruns 0, overruns 0
            Number of disconnects: 0
            Buffer RX/TX: 0/0-0
            === Duet Control Server ===
            Duet Control Server v3.1.1
            Code buffer space: 4096
            Configured SPI speed: 8000000 Hz
            Full transfers per second: 32.21
          1 Reply Last reply Reply Quote 0
          • N7JTIundefined
            N7JTI
            last edited by

            ; Configuration file for Duet WiFi (firmware version 3)
            ; executed by the firmware on start-up
            ;
            ; generated by RepRapFirmware Configuration Tool v3.1.8 on Mon Nov 23 2020 08:08:52 GMT-0800 (Pacific Standard Time)

            ; General preferences
            G90 ; send absolute coordinates...
            M83 ; ...but relative extruder moves
            M550 P"avid_cnc" ; set printer name
            M669 K0 ; select Cartesian Mode

            ; Drives
            M569 P0 S1 ; physical drive 0 goes forwards
            M569 P1 S0 ; physical drive 1 goes backwards
            M569 P2 S0 ; physical drive 2 goes backwards
            M569 P3 S0 ; physical drive 3 goes backwards
            M584 X0 Y1:2 Z3 ; set drive mapping
            M350 X16 Y16 Z16 I1 ; configure microstepping with interpolation
            M92 X251.9685 Y251.9685 Z251.9685 ; set steps per mm

            M566 X900.00 Y900.00 Z60.00 ; set maximum instantaneous speed changes (mm/min)
            M203 X2500.0 Y2500.00 Z1000.0 ; set maximum speeds (mm/min)
            M201 X500.00 Y500.00 Z250.00 ; set accelerations (mm/s^2)
            M906 X2000 Y2000 Z2000 I30 ; set motor currents (mA) and motor idle factor in per cent
            M84 S30 ; Set idle timeout

            ; Axis Limits
            M208 X0:789 Y0:997 Z0:243 ; set axis minima & maxima

            ; Endstops
            M574 X1 S1 P"!io3.in" ; configure low end on X
            M574 Y1 S1 P"!io5.in+!io6.in" ; configure dual self-squaring low end on y
            M574 Z2 S1 p"!io8.in" ; configure high end on z (z homes high)

            ; Stop if hit the endstops
            M950 J0 C"!io4.in" ; X far-end
            M950 J1 C"!io7.in" ; Y far-end
            M581 T0 P0:1 X Y Z S1 ; Stop when endstops are reached

            ; Z-Probe
            M558 K0 P5 C"^!io1.in" F120 T6000 ; Z probe speed and travel speed
            G31 Z25.4 ; set the z-probe trigger height to 1 inch

            ; Pendant
            M575 P1 B57600 S1 ; enable serial comms

            ; Heaters
            M140 H-1 ; disable heated bed (overrides default heater mapping)

            ; Fans
            M950 F0 C"!out4+^out4.tach" Q2500 ; create fan 0 on pin fan0 and set its frequency
            M106 P0 S0 H-1 ; set fan 0 value. Thermostatic control is turned off

            ; Dust Collection
            M950 P0 C"out2" ; Create GPIO pin on out2 for dust collection

            ; Tools
            M563 P0 D0 F0 ; define tool 0
            G10 P0 X0 Y0 Z0 ; set tool 0 axis offsets
            G10 P0 R0 S0 ; set initial tool 0 active and standby temperatures to 0C

            ; Set CNC mode
            M453 S0 C"out1" R1 ; turn on CNC mode and set out1 as spindle control

            ; Custom settings are not defined

            ; Miscellaneous
            T0 ; select first tool

            ; Allow movement on non-homed axes -- Remove this when endstops arrive
            M564 S0 H0

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

              I can't think of any reason why it would skip any commands. Please can you test whether the same issue occurs with firmware 3.2RC2.

              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
              • N7JTIundefined
                N7JTI
                last edited by N7JTI

                I need to go cut some more stock out of my sheet of MDF to try this again. But my son just noticed that even the first one isn't cut correctly. If you look carefully at about the 3:00 position you'll see another much less serious case where the head didn't fully lift before doing the movement.

                Could this be related to the mixing of the G0 and G1 commands? Could one of them be "interrupting" the earlier command?

                I'll have the results with the beta firmware in an hour or so.

                Here's an example of the gcode The lift doesn't complete before the head moves:

                G1 X100.404 Z-1.5
                G1 Y95.405 Z-0.001
                ; MOVEMENT_RAPID
                G0 Z5 F300
                G0 X84.976 Y75.025 F2500
                G0 Z3 F300
                ; MOVEMENT_LEAD_IN
                G1 Z-0.001 F1905
                ; MOVEMENT_CUTTING
                G1 X87.096 Z-1.5
                G1 Y72.905 Z-0.001

                1 Reply Last reply Reply Quote 0
                • N7JTIundefined
                  N7JTI
                  last edited by

                  Alright, I just completed two more rounds of that same gcode using the beta firmware.

                  1. Probing with my z-probe now appears to be unreliable. It either doesn't probe downward, or probes downward very little. This was very reliable before. I couldn't find any documentation related to changes in this area. Did I miss something?

                  2. After the upgrade I lost my CNC specific web control software. Could this have been the problem? Is there a version of the CNC specific web interface that is approved/safe for the beta firmware?

                  Those two issues noted: Both cuts completed without error. Here are the "after" photos:
                  ![1_1609353446134_20201230_103207.jpg](Uploading 100%) 0_1609353446133_20201230_103159.jpg](Uploading 100%)

                  Phaedruxundefined 1 Reply Last reply Reply Quote 0
                  • N7JTIundefined
                    N7JTI
                    last edited by

                    20201230_103159.jpg

                    20201230_103207.jpg

                    1 Reply Last reply Reply Quote 0
                    • Phaedruxundefined
                      Phaedrux Moderator @N7JTI
                      last edited by

                      @N7JTI said in Firmware Skips a few gcode instructions -- known issue?:

                      Is there a version of the CNC specific web interface that is approved/safe for the beta firmware?

                      Yes. https://forum.duet3d.com/topic/20416/preview-version-of-cnc-optimized-dwc/36

                      @N7JTI said in Firmware Skips a few gcode instructions -- known issue?:

                      Probing with my z-probe now appears to be unreliable. It either doesn't probe downward, or probes downward very little. This was very reliable before. I couldn't find any documentation related to changes in this area.

                      Would need some more details on your probe.

                      I do notice that your configuration for the probe is missing some parameters.

                      @N7JTI said in Firmware Skips a few gcode instructions -- known issue?:

                      ; Z-Probe
                      M558 K0 P5 C"^!io1.in" F120 T6000 ; Z probe speed and travel speed
                      G31 Z25.4 ; set the z-probe trigger height to 1 inch

                      G31 is missing P for trigger sensitivity and the X Y offset.

                      Z-Bot CoreXY Build | Thingiverse Profile

                      N7JTIundefined 3 Replies Last reply Reply Quote 0
                      • N7JTIundefined
                        N7JTI @Phaedrux
                        last edited by

                        @Phaedrux The z-probe is just a machined touch plate. Basically it acts like a switch, but really it is just measuring current passing through the tool itself into the touch plate. Well, to be brutally specific, the tool is "ground" and the current source is the touch plate. x-y offset should be zero, as the tool itself makes the contact and there is no offset. The z-offset is 1 inch.

                        I haven't been able to figure out how to get G30 to do anything like what I need. I've pasted the macro I use to set my z0 below. Should this be possible from a G30 command? How?

                        The behavior of this macro seemed to be different with the new firmware. I've had to update my "dive height" with an h-parameter in M558 so that it probes toward the workpiece more than just a handful of mm.

                        z_probe.g macro

                        ; Probe in Z and reset 0

                        G91 ; Set Relative Mode
                        G38.2 Z P0 ; probe in the z direction
                        G10 L20 P1 Z25.4 ; set the z-height of WCS 1 to 1 inch
                        G0 Z50 ; rise up around 25mm to remove the z-plate
                        G90 ; Set Absolute Mode

                        1 Reply Last reply Reply Quote 0
                        • N7JTIundefined
                          N7JTI @Phaedrux
                          last edited by

                          @Phaedrux My recent updates to try and get probing to actually probe down far enough to reliably set zero

                          ; Z-Probe
                          M558 K0 P5 H20 C"^!io1.in" F120 T6000 ; Z probe speed and travel speed
                          G31 X0 Y0 Z25.4 ; set the z-probe trigger height to 1 inch

                          1 Reply Last reply Reply Quote 0
                          • N7JTIundefined
                            N7JTI @Phaedrux
                            last edited by

                            @Phaedrux 20201230_112942.jpg

                            1 Reply Last reply Reply Quote 0
                            • Phaedruxundefined
                              Phaedrux Moderator
                              last edited by

                              Try adding P500 to G31 as well

                              Does G30 work now?

                              I'm not as familiar with g38 for CNC

                              https://duet3d.dozuki.com/Wiki/Gcode?revisionid=HEAD#Section_G38_2_to_G38_5_Straight_Probe

                              Z-Bot CoreXY Build | Thingiverse Profile

                              N7JTIundefined 1 Reply Last reply Reply Quote 0
                              • N7JTIundefined
                                N7JTI @Phaedrux
                                last edited by

                                @Phaedrux Well, that just cost me a bit and damaged my touch-pate.

                                I ran "g30" and the head dropped carefully down till it touched the plate... and then drove the v-bit straight down into the plate until the motors couldn't drive any further... badly scratching the touch plate and chipping the bit.

                                So, what I would like to have seen it do is STOP when it made contact with the touch plate.

                                So, how is G30 supposed to work?

                                1 Reply Last reply Reply Quote 0
                                • Phaedruxundefined
                                  Phaedrux Moderator
                                  last edited by

                                  Well g30 should stop when triggered provided the trigger pin is configured correctly, but I'm not a CNC user at all, so I'm not sue what else could be going on.

                                  If the macro you have using G38.2 works as you expect that should be fine.

                                  Only thing I can think of is to remove the K0 from M558 since you only have a single probe anyway.

                                  Z-Bot CoreXY Build | Thingiverse Profile

                                  N7JTIundefined 1 Reply Last reply Reply Quote 0
                                  • N7JTIundefined
                                    N7JTI @Phaedrux
                                    last edited by N7JTI

                                    @Phaedrux but the problem I seem to be having with BOTH of these is that the directions are very backwards. instead of lifting on a g30 contact it is diving. And instead of probing DOWN towards the touchplate with the G38 command it is probing UP.

                                    Does the beta firmware probing not pay attention to which direction is positive on my z-axis? This used to work.

                                    1 Reply Last reply Reply Quote 0
                                    • N7JTIundefined
                                      N7JTI
                                      last edited by

                                      Ok, I think I may have found it. The dive height I set negative becase it was probing the wrong direction... that seemed to have unintended consequences. So it is no longer diving after touching the plate.
                                      ...

                                      Phaedruxundefined 1 Reply Last reply Reply Quote 0
                                      • N7JTIundefined
                                        N7JTI
                                        last edited by

                                        Ok, so here's the problem I've got with G30. It probes the bed and sets the machine coordinates.

                                        That isn't helpful. I need the WCS coordinates to be updated to z0.

                                        1 Reply Last reply Reply Quote 0
                                        • Phaedruxundefined
                                          Phaedrux Moderator @N7JTI
                                          last edited by

                                          @N7JTI said in Firmware Skips a few gcode instructions -- known issue?:

                                          The dive height I set negative becase it was probing the wrong direction

                                          That would do it.

                                          @N7JTI said in Firmware Skips a few gcode instructions -- known issue?:

                                          That isn't helpful. I need the WCS coordinates to be updated to z0.

                                          Ok, so does G38.2 and the macro you have do what you're needing?

                                          Z-Bot CoreXY Build | Thingiverse Profile

                                          1 Reply Last reply Reply Quote 0
                                          • N7JTIundefined
                                            N7JTI
                                            last edited by

                                            Ok, the machine seems to be performing mostly correctly now. I'm still seeing my macro probing the wrong direction occasionally, but I haven't caught it doing that in the last half-our. So I'm going to mark this as "solved" since my problem of the head occasionally not lifting seems to be fixed by the updated firmware.

                                            If I can find a clear pattern for when the probing macro probes "towards the workpiece" in the wrong direction I'll open another question.

                                            Thanks again for the great support!

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