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

    Tool changer incorrect tool Z position after change

    Scheduled Pinned Locked Moved Unsolved
    General Discussion
    2
    6
    386
    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.
    • Moonlightundefined
      Moonlight
      last edited by

      I'm having a really strange issue in rrf3 that is causing tool offsets in the z axis to revert to the last machine coordinate without physically moving the bed, such that when any other axis is updated, the bed moves to that position in the new tool coordinate system. This is extremely bad as it can easily result in tools ramming into a the bed or printed part because the machine doesn't seem to know where the z axis actually is.

      I've made this video showing it happen in DWC and I try to explain it in a little more detail. I don't have a clue what is causing this and it has had me stumped for a few days. I haven't seen anyone else with this problem, but I can't imagine this isn't an issue on an e3d toolchanger as well?

      https://youtu.be/tvf8z429y_o

      Thank you!

      Config.g:

      ; Configuration file for Duet 3 (firmware version 3)
      ; executed by the firmware on start-up
      ;
      ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 28 2020 21:43:52 GMT-0700 (Pacific Daylight Time)
      
      ; General preferences
      G90                                            ; send absolute coordinates...
      M83                                            ; ...but relative extruder moves
      M550 P"Duet 3"                                 ; set printer name
      M669 K1                                        ; select CoreXY mode
      
      ; Drives
      M569 P0.0 S1                                   ; physical drive 0.0 goes forwards
      M569 P0.1 S1                                   ; physical drive 0.1 goes forwards
      
      M569 P0.2 S1                                   ; physical drive 0.2 goes backwards
      M569 P0.3 S1                                   ; physical drive 0.3 goes backwards
      M569 P0.4 S1                                   ; physical drive 0.4 goes backwards
      
      M569 P20.0 S1                                   ; physical drive 1.0 goes forwards
      
      M584 X0.0 Y0.1 Z0.2:0.3:0.4 E20.0                       ; set drive mapping
      M350 X16 Y16 Z16 E16 I1                        ; configure microstepping with interpolation
      M92 X80.00 Y80.00 Z414.4 E420.00               ; set steps per mm
      M566 X900.00 Y900.00 Z400.00 E120.00            ; set maximum instantaneous speed changes (mm/min)
      M203 X6000.00 Y6000.00 Z3000.00 E1200.00        ; set maximum speeds (mm/min)
      M201 X500.00 Y500.00 Z500.00 E250.00            ; set accelerations (mm/s^2)
      M906 X800 Y800 Z800 E800 I30                   ; set motor currents (mA) and motor idle factor in per cent
      M84 S30                                        ; Set idle timeout
      
      M671 X297:297:8.5 Y-16.8:291.2:137.2 S100        ; Z leadscrews are at (382,3.2), (382,311.2) and (93.5,157.2)
      
      
      ; Axis Limits
      M208 X-85 Y-20 Z-50 S1                             ; set axis minima
      M208 X365 Y425 Z400 S0                         ; set axis maxima
      
      ; Endstops
      M574 X1 S1 P"^io0.in"                         ; configure active-high endstop for low end on X via pin !^io0.in
      M574 Y1 S1 P"^io1.in"                         ; configure active-high endstop for low end on Y via pin !^io1.in
      
      ; Z-Probe
      M950 S0 C"io7.out"                             ; create servo pin 0 for BLTouch
      M558 P9 C"^io7.in" H25 F600 T5000              ; set Z probe type to bltouch and the dive height + speeds
      G31 P500 X0 Y0 Z0                           ; set Z probe trigger value, offset and trigger height
      M557 X39:247 Y33:241 S50                     ; define mesh grid
      
      ; Heaters
      M308 S0 P"temp0" Y"thermistor" T100000 B4138   ; configure sensor 0 as thermistor on pin temp0
      M950 H0 C"out1" T0                             ; create bed heater output on out1 and map it to sensor 0
      M307 H0 B1 S1.00                               ; enable bang-bang mode for the bed heater and set PWM limit
      M140 H0                                        ; map heated bed to heater 0
      M143 H0 S120                                   ; set temperature limit for heater 0 to 120C
      M308 S1 P"20.temp0" Y"thermistor" T100000 B4138 ; configure sensor 1 as thermistor on pin 1.temp0
      M950 H1 C"20.out0" T1                           ; create nozzle heater output on 1.out0 and map it to sensor 1
      M307 H1 B0 S1.00 A975 C346 D5.5                 ; disable bang-bang mode for heater  and set PWM limit
      
      ; Fans
      M950 F0 C"20.out1" Q500                         ; create fan 0 on pin 1.out1 and set its frequency
      M106 P0 S0 H-1                                 ; set fan 0 value. Thermostatic control is turned off
      M950 F1 C"20.out2" Q500                         ; create fan 1 on pin 1.out2 and set its frequency
      M106 P1 S1 H1 T45                              ; set fan 1 value. Thermostatic control is turned on
      
      ; Tools
      M563 P0 S"Tool 0" D0 H1 F0                     ; define tool 0
      G10 P0 X0 Y0 Z0 					; Reset tool 0 axis offsets
      G10 P0 R0 S0 						; Reset initial tool 0 active and standby temperatures to 0C
      
      ;G10 P0 X12 Y99 Z-46                                ; set tool 0 axis offsets
      ;G10 P0 R0 S0                                   ; set initial tool 0 active and standby temperatures to 0C
      M563 P1 S"Fake Tool 1" F-1                     ; define tool 1
      G10 P1 X0 Y0 Z0                                ; set tool 1 axis offsets
      G10 P1 R0 S0                                   ; set initial tool 1 active and standby temperatures to 0C
      
      M950 S1 C"out9"                                ; create servo pin 1 for toolchanger
      
      G10 P0 X-11.10 Y-95.478 Z-22                               ; set tool 0 axis offsets12 Y99 Z-46
      
      T-1
      
      ; Custom settings are not defined
      
      ; Miscellaneous
      M501                                           ; load saved parameters from non-volatile memory
      

      tfree0.g:

      ; tfree0.g
      ; called when tool 0 is freed
      ;
      ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 28 2020 21:43:54 GMT-0700 (Pacific Daylight Time)
      
      G91          ; Relative
      G1 Z50       ; Drop Bed
      G1 Y25       ; Move Y out for safety
      G90          ; absolute
      
      G29 S2       ; mesh leveling off
      
      ; Reset Offset
      ;G10 P0 X0 Y0 Z0                                ; set tool 0 axis offsets
      
      G53 G1 X0 F9000  ; Line up X
      G53 G1 Y40        ; Line up Y
      
      G53 G1 Y-16 F3000    ; Push In
      M280 P1 S199    ; Release Servo
      G4 P1500         ; Wait 3 Seconds
      
      G53 G1 Y40 F3000    ; Pull out
      

      tpre0.g

      ; tpre0.g
      ; called before tool 0 is selected
      ;
      ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 28 2020 21:43:54 GMT-0700 (Pacific Daylight Time)
      
      
      ;T-1 P0 ; Deselect all tools
      
      
      G91          ; Relative
      ;G1 Z50       ; Drop Bed
      G1 Y25       ; Move Y out for safety
      G90          ; absolute
      
      
      ;G29 S2       ; mesh leveling off
      
      G53 G1 X0 F9000  ; Line up X
      G53 G1 Y40        ; Line up Y
      
      M280 P1 S199    ; Release Servo
      G4 P1500
      G53 G1 Y-16 F3000    ; Push In
      M280 P1 S0    ; Grab Servo
      G4 P1500          ; Wait 3 Seconds
      
      
      G53 G1 Y40 F3000    ; Pull out
      
      ; Set Offsets
      ;G10 P0 X12 Y99 Z-46                                ; set tool 0 axis offsets12 Y99 Z-46
      ;G10 P0 X-11.10 Y-95.478 Z-22.632                                ; set tool 0 axis offsets12 Y99 Z-46
      
      

      tpost0.g

      ; tpost0.g
      ; called after tool 0 has been selected
      ;
      ; generated by RepRapFirmware Configuration Tool v3.1.3 on Sun Jun 28 2020 21:43:54 GMT-0700 (Pacific Daylight Time)
      ; Wait for set temperatures to be reached
      M116 P0
      
      ;mesh levelling on
      ;G29 S1
      
      
      1 Reply Last reply Reply Quote 0
      • Phaedruxundefined
        Phaedrux Moderator
        last edited by

        Are you using the Duet 3 with a Pi or standalone?
        Are you up to date to 3.1.1?

        Z-Bot CoreXY Build | Thingiverse Profile

        Moonlightundefined 1 Reply Last reply Reply Quote 0
        • Moonlightundefined
          Moonlight @Phaedrux
          last edited by Moonlight

          @Phaedrux duet 3 sbc mode with a pi4. I happened to think about updating last night and I double checked the version was 3.1.1, but I went ahead and ran apt update apt upgrade, rebooted just to make triple sure. It was slightly confusing at first because my board revision is mb6hc 3.01, but dwc reports dsf is v3.1.1.

          So based on what I've described, this is not normal behavior correct? I am honestly not sure if this is actually normal and how it is always supposed to work.

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

            Post an M122 please.

            Z-Bot CoreXY Build | Thingiverse Profile

            Moonlightundefined 1 Reply Last reply Reply Quote 0
            • Moonlightundefined
              Moonlight @Phaedrux
              last edited by

              @Phaedrux Sorry for delay:

              M122
              === Diagnostics ===
              RepRapFirmware for Duet 3 MB6HC version 3.01-RC9 running on Duet 3 MB6HC v1.01 or later
              Board ID: 08DJM-956L2-G43S8-6J9D4-3SJ6J-TA06GUsed output buffers: 1 of 40 (10 max)
              === RTOS ===
              Static ram: 154572
              Dynamic ram: 162040 of which 84 recycled
              Exception stack ram used: 224
              Never used ram: 76296
              Tasks: NETWORK(ready,2084) HEAT(blocked,1276) CanReceiv(suspended,3548) CanSender(suspended,1484) CanClock(blocked,1432) TMC(blocked,216) MAIN(running,4856) IDLE(ready,80)
              Owned mutexes:
              === Platform ===
              Last reset 00:00:17 ago, cause: software
              Last software reset at 2020-07-31 19:30, reason: User, spinning module LinuxInterface, available RAM 76056 bytes (slot 2)
              Software reset code 0x0010 HFSR 0x00000000 CFSR 0x00000000 ICSR 0x0444a000 BFAR 0x00000000 SP 0xffffffff Task 0x4e49414d
              Error status: 0
              Free file entries: 10
              SD card 0 not detected, interface speed: 37.5MBytes/sec
              SD card longest block write time: 0.0ms, max retries 0
              MCU temperature: min 34.1, current 34.3, max 34.7
              Supply voltage: min 24.0, current 24.1, max 24.1, under voltage events: 0, over voltage events: 0, power good: yes
              12V rail voltage: min 12.1, current 12.2, max 12.2, under voltage events: 0
              Driver 0: standstill, reads 21111, writes 14 timeouts 0, SG min/max 0/0
              Driver 1: standstill, reads 21112, writes 14 timeouts 0, SG min/max 0/0
              Driver 2: standstill, reads 21112, writes 14 timeouts 0, SG min/max 0/0
              Driver 3: standstill, reads 21113, writes 14 timeouts 0, SG min/max 0/0
              Driver 4: standstill, reads 21113, writes 14 timeouts 0, SG min/max 0/0
              Driver 5: standstill, reads 21117, writes 11 timeouts 0, SG min/max 0/0
              Date/time: 2020-07-31 19:30:19
              Slowest loop: 4.01ms; fastest: 0.14ms
              === Move ===
              Hiccups: 0(0), FreeDm: 375, MinFreeDm: 375, MaxWait: 0ms
              Bed compensation in use: none, comp offset 0.000
              === MainDDARing ===
              Scheduled moves: 0, completed moves: 0, 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 = 0 -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 assembling a command 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
              Autopause is idle in state(s) 0
              Code queue is empty.
              === Network ===
              Slowest loop: 1.27ms; fastest: 0.01ms
              Responder states: HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) HTTP(0) FTP(0) Telnet(0) Telnet(0)
              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 51, longest wait 3ms for type 6012
                === Linux interface ===
                State: 0, failed transfers: 0
                Last transfer: 16ms ago
                RX/TX seq numbers: 320/322
                SPI underruns 0, overruns 0
                Number of disconnects: 1
                Buffer RX/TX: 0/0-0
                === Duet Control Server ===
                Duet Control Server v3.1.1
                Trigger:
                Finishing macro config.g, started by system

              Next stack level
              Code buffer space: 4096
              Configured SPI speed: 8000000 Hz
              Full transfers per second: 28.96

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

                @Moonlight said in Tool changer incorrect tool Z position after change:

                RepRapFirmware for Duet 3 MB6HC version 3.01-RC9 running on Duet 3 MB6HC v1.01 or later

                It would appear that you're not actually updated to 3.1.1

                Z-Bot CoreXY Build | Thingiverse Profile

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