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

    3.6.0-b2: z-Position wrong after pause

    Scheduled Pinned Locked Moved
    Beta Firmware
    2
    3
    180
    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.
    • wschadowundefined
      wschadow
      last edited by

      I noticed a strange thing. After a pause the extruders are not returning to the correct z-height. With T0 there seems to be a deviation of 0-0.2mm. With T1 the extruder is moving down after a each pause. Sometimes it then gets back to a gigher position.

      Here is the logged user position when pausing and resuming

      Time 2024-11-19T18:11:14 Job 0:/gcodes/CFFFP_TestPrint-both.gcode
      
      Pause: x= 122.426 y= 97.718 u= 286.800 z= 0.200
      Resume: x= 122.426 y= 97.718 u= 286.800 z= 0.200
      Pause: x= 126.492 y= 118.153 u= 286.800 z= 0.560
      Resume: x= 126.492 y= 118.153 u= 286.800 z= 0.560
      Pause: x= 122.804 y= 98.097 u= 122.804 z= 1.160
      Resume: x= 122.804 y= 98.097 u= 122.804 z= 1.160
      Pause: x= 123.204 y= 117.709 u= 123.204 z= 1.160
      Resume: x= 123.204 y= 117.709 u= 123.204 z= 1.160
      Pause: x= 135.949 y= 117.709 u= 135.949 z= 1.160
      Resume: x= 135.949 y= 117.709 u= 135.949 z= 1.160
      Pause: x= 123.203 y= 99.036 u= 123.203 z= 0.882
      Resume: x= 123.203 y= 99.036 u= 123.203 z= 0.882
      Pause: x= 126.975 y= 98.497 u= 126.975 z= 0.586
      Resume: x= 126.975 y= 98.497 u= 126.975 z= 0.586
      Pause: x= 131.101 y= 98.496 u= 131.101 z= 1.280
      
      

      During a print move.axes[2].machinePosition (which is z in my case) is permanently jumping, whereas the move.axes[2].userPosition stays constant during a print. Unlike in 3.4.6 the user[2]Position is not equal to the machine[2]Position. For the other axis both values are the same, ignoring round-offs.

      For the purpose of this post I changed my pause.g to

      set global.pausex=move.axes[0].userPosition
      set global.pausey=move.axes[1].userPosition
      set global.pausez=move.axes[2].userPosition
      set global.pauseu=move.axes[3].userPosition
      
      echo >>"0:/sys/0-printlog" "Pause: x= " ^{global.pausex}^ " y= "  ^{global.pausey}^ " u= " ^{global.pauseu}^ " z= "  ^{global.pausez}
      G1 X200
      M99
      

      So just moves the x-axis out off the way of a test print.
      And resume.g to

      M98 P"00-Functions/CurrentSenseNormal"                                 ; ensure the drivers current and sensitivity is set for normal routines
      M17
      G4 P100
      ;
      ;************************************
      echo >>"0:/sys/0-printlog" "Resume: x= " ^{global.pausex}^ " y= "  ^{global.pausey}^ " u= " ^{global.pauseu}^ " z= "  ^{global.pausez}
      
      G1 R1     
      
      dc42undefined 1 Reply Last reply Reply Quote 0
      • Phaedruxundefined Phaedrux moved this topic from Firmware installation
      • dc42undefined
        dc42 administrators @wschadow
        last edited by dc42

        @wschadow with regard to the machine position jumping around during a print, I have reproduced that. What's happening is that in 3.6 the reported machine position is the position after bed compensation has been applied, whereas in 3.5 it's the position before bed compensation is applied. So the reported Z machine position jumps around if you are using bed compensation.

        I was expecting your other report (user Z position not being restored after pause/resume) to be related; however on my test machine the user Z position remains constant:

        Pause: x= 27.9 y= -64.0 z= 2.00
        Resume: x= 27.9 y= -64.0 z= 2.00
        Pause: x= 47.2 y= 51.4 z= 2.00
        Resume: x= 47.2 y= 51.4 z= 2.00
        Pause: x= -60.6 y= 34.7 z= 2.00
        Resume: x= -60.6 y= 34.7 z= 2.00
        Pause: x= -24.9 y= -65.2 z= 2.00
        Resume: x= -24.9 y= -65.2 z= 2.00
        

        Perhaps it is configuration-dependent. Please provide your config.g file.

        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

        wschadowundefined 1 Reply Last reply Reply Quote 0
        • wschadowundefined
          wschadow @dc42
          last edited by droftarts

          @dc42

          ; =========================================================================================================
          ;
          ; Configuration file for CaribouIDEX with LGX and Duet 3 Mini 5+ (firmware version 3.4 and higher)
          ;
          ; for 0.9° motors on xy, and 0.9° or 1.8° motor on e
          ;
          ; for CaribouIDEX220 Duet3Mini5+ LGX Mosquito 0.9° - E3d or SE Thermistor - SuperPINDA
          ;
          ; CariboDuetConfiguration Release : "0.1.0"
          ;                           Build :   177
          ;
          ; Copyright Caribou Research & Development 2023. Licensed under GPL3.
          ; Source code and release notes are available on github: https://github.com/Caribou3d/CaribouIDEX-Configuration-and-Macros
          ;
          ; =========================================================================================================
          ;
          ; global variables 
          ; 
          global IdleCounter = 0                                                 ; counts idle time
          global ExtruderTempActive_Old0 = 0                                     ; stores extruder 0 temperature for idle check
          global ExtruderTempActive_Old1 = 0                                     ; stores extruder 1 temperature for idle check
          global BedTempActive_Old = 0                                           ; stores bed temperature for idle check
          global OldStateStatus = 0                                              ; stores the status of the printer, processing = 1
          global ToolSelected = -1                                               ; stores the selected tool
          global HeatStatus1 = -1                                                ; stores the status of heater 1
          global HeatStatus2 = -1                                                ; stores the status of heater 2
          global HeatStatus3 = -1                                                ; stores the status of tool2
          global HeaterActive1 = 0                                               ; stores the active temperature of heater 1
          global HeaterStandby1 = 0                                              ; stores the standby temperature of heater 1
          global HeaterActive2 = 0                                               ; stores the active temperature of heater 2
          global HeaterStandby2 = 0                                              ; stores the standby temperature of heater 2
          global HeaterActive3 = 0                                               ; stores the active temperature of tool 2
          global HeaterStandby3 = 0                                              ; stores the standby temperature of tool 2
          global HeatStatusTr1 = -1                                              ; stores the status of heater 1
          global HeatStatusTr2 = -1                                              ; stores the status of heater 2
          global HeatStatusTr3 = -1                                              ; stores the status of tool2
          global HeaterActiveTr1 = 0                                             ; stores the active temperature of heater 1
          global HeaterStandbyTr1 = 0                                            ; stores the standby temperature of heater 1
          global HeaterActiveTr2 = 0                                             ; stores the active temperature of heater 2
          global HeaterStandbyTr2 = 0                                            ; stores the standby temperature of heater 2
          global HeaterActiveTr3 = 0                                             ; stores the active temperature of tool 2
          global HeaterStandbyTr3 = 0                                            ; stores the standby temperature of tool 2
          global ToolToActOn = -1                                                ; stores tool for load / unload / change / filament
          global zlifted = 0                                                     ; stores status of the z axis
          global success = 0                                                     ; stores status of load / unload / change
          global purge = 0                                                       ; stores status to purge when autoloading
          global AskToChange = 1                                                 ; ask if filament should be changed?
          global zLiftDistance = 0                                               ; stores distance for lifting z axis
          global waitForExtruderTemperature0 = false                             ; beeps when pre-heat temperature is reached
          global waitForExtruderTemperature1 = false                             ; beeps when pre-heat temperature is reached
          global waitForExtruderTemperature2 = false                             ; beeps when pre-heat temperature is reached
          global waitForBedTemperature = false                                   ; beeps when pre-heat temperature is reached
          global x_accel = 0                                                     ; stores x accelerations (mm/s^2)
          global x_jerk = 0                                                      ; stores x maximum instantaneous speed changes (mm/min)
          global y_accel = 0                                                     ; stores y accelerations (mm/s^2)
          global y_jerk = 0                                                      ; maximum y instantaneous speed changes (mm/min)
          global filamentErrorIgnore0 = 0                                        ; enable / disable execution of filament-error.g
          global filamentTriggerIgnore0 = 0                                      ; enable / disable execution of trigger2.g
          global filamentErrorIgnore1 = 0                                        ; enable / disable execution of filament-error.g
          global filamentTriggerIgnore1 = 0                                      ; enable / disable execution of trigger2.g
          global SkipCalibration=0                                               ; enable / disable claibration at the beginning of a print
          global pausex=0
          global pausey=0
          global pauseu=0
          global pausez=0
          ;
          ; general settings
          ;
          M111 S0                                                                ; debugging off
          G21                                                                    ; work in millimetres
          ;
          ; =========================================================================================================
          ; network settings
          ; =========================================================================================================
          ;
          M550 P"AM-Xfuse2"                                         ; set printer name
          ;
          M552 S1                                                                ; enable network
          M586 P0 S1                                                             ; enable HTTP
          M586 P1 S1                                                             ; enable FTP
          M586 P2 S0                                                             ; disable Telnet
          M575 P1 S1 B57600                                                      ; enable support for PanelDue
          ;
          ; =========================================================================================================
          ; drives
          ; =========================================================================================================
          ;
          M569 P0.1 S1 D3 V1000                                                  ; physical drive 0.0 goes backwards - x-axis
          M569 P0.2 S0 D3 V1000                                                  ; physical drive 0.0 goes forwards  - u-axis
          M569 P0.3 S0 D3 V1000                                                  ; physical drive 0.1 goes backwards - y-axis
          M569 P0.0 S0 D3 V10                                                    ; physical drive 0.2 goes backwards - z-left
          M569 P0.4 S0 D3 V10                                                    ; physical drive 0.3 goes backwards - z-right
          M569 P20.0 S0 D3 V1000                                                 ; physical drive 0.3 goes forwards  - extruder
          M569 P21.0 S0 D3 V1000                                                 ; physical drive 0.4 goes forwards  - extruder
          ;
          ; motor Configuration
          ;
          M584 U0.1 X0.2 Y0.3 Z0.0:0.4 E20.0:21.0                                ; set drive mapping
          M671 X-125.1:369.9 Y0:0 S1.00                                          ; leadscrews at left (connected to z) and right (connected to E1) of X axis
          ;
          ; set Microsteps and steps / mm
          ;
          M350 X16 U16 Y16 Z16 E16 I1                                            ; configure microstepping with interpolation
          ;M92 X200.00 U200.00 Y200.00 Z800.00 E704.00                           ; set steps per mm
          ;M92 X200.00 U200.00 Y200.00 Z800.00 E706.00:706.00                     ; set steps per mm
          M92 X200.00 U200.00 Y200.00 Z800.00 E567.00:567.00                     ; set steps per mm
          ;
          ; set motor currents
          ;
          ;M906 X1400 U1400 Y1400 Z1200 E650 I40                                 ; set motor currents (mA) and motor idle factor in percent
          M906 X1250 U1250 Y1400 Z1300 E650 I100                                ; set motor currents (mA) and motor idle factor in percent
          
          ;
          M84 S60                                                                ; set idle timeout
          ;
          ; set speeds
          ;
          M201 X3000 U3000 Y3000 Z500 E500                                       ; set accelerations (mm/s^2)
          M203 X12000 U12000 Y12000 Z1000 E3600                                  ; set maximum speeds (mm/min)
          M204 P2000 T2000                                                       ; set print and travel accelerations (mm(s^2)
          M566 X600 U600 Y600 Z48 E300                                           ; set maximum instantaneous speed changes (mm/min)
          ;
          set global.x_accel = move.axes[0].acceleration                         ; save accelerations (mm/s^2)
          set global.x_jerk = move.axes[0].jerk                                  ; save maximum instantaneous speed changes (mm/min)
          ;
          set global.y_accel = move.axes[1].acceleration                         ; save accelerations (mm/s^2)
          set global.y_jerk = move.axes[1].jerk                                  ; save maximum instantaneous speed changes (mm/min)
          ;
          M564 H0                                                                ; allow unhomed movement
          ;
          ; =========================================================================================================
          ; axis limits
          ; =========================================================================================================
          ;
          M208 X-72.8 U-37 Y-24.0 Z0 S1                                           ; set axis minima
          M208 X251.0 U286.8 Y210.0 Z217.50 S0                                    ; set axis maxima
          ;
          ; =========================================================================================================
          ; endstops
          ; =========================================================================================================
          ;
          M574 X1 S1 P"io2.in"                                                   ; configure active high endstop switch for low end on x
          M574 U2 S1 P"io3.in"                                                   ; configure active high endstop switch for low end on u
          M574 Y1 S3                                                             ; configure sensorless endstop for low end on y
          ;
          ; =========================================================================================================
          ;
          ; SuperPINDA 
          ;
          M558 P8 C"^20.io2.in" H1.5 F600 T8000 A3 S0.03                         ; set z probe to SuperPINDA
          M557 X30:240 Y0:200 S30:40                                              ; define mesh grid
          ;
          ; =========================================================================================================
          ;
          ; stallguard sensitivy
          ;
          M915 X S2 F0 H400 R0                                                   ; set x axis sensitivity
          M915 Y S1 F0 H200 R0                                                   ; set y axis sensitivity
          M915 Z S1 F0 H200 R0                                                   ; set z axis sensitivity
          M915 U S2 F0 H400 R0                                                   ; set x axis sensitivity
          ;
          ; =========================================================================================================
          ; heaters & fans
          ; =========================================================================================================
          ;
          ; heated bed
          ; =========================================================================================================
          ;
          M308 S0 P"temp0" Y"thermistor" T100000 B4138 A"Bed"                    ; configure sensor 0 as thermistor on pin temp0
          M950 H0 C"out0" Q50 T0                                                 ; create bed heater output on bedheat and map it to sensor 0
          M143 H0 S110                                                           ; set temperature limit for heater 0 to 110°C
          M307 H0 B0 S1.00                                                       ; disable bang-bang mode for the bed heater and set PWM limit
          M140 H0                                                                ; map heated bed to heater 0
          ;
          ; extruder
          ; =========================================================================================================
          ;
          ; Hotend 1 (Mosquito or Mosquito Magnum with E3d Thermistor) 
          ;
          M308 S1 P"20.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 A"Nozzle E0" ; E3d configure sensor 1 as thermistor on pin temp1
          ;
          M950 H1 C"20.out0" T1                                                  ; create nozzle heater output on out1 and map it to sensor 1
          M307 H1 B0 S1.00                                                       ; disable bang-bang mode for heater 1 and set PWM limit
          M143 H1 S280                                                           ; set temperature limit for heater 1 to 280°C
          ;
          ; Hotend 2 (Mosquito or Mosquito Magnum with E3d Thermistor) 
          ;
          M308 S2 P"21.temp0" Y"thermistor" T100000 B4725 C7.060000e-8 A"Nozzle E1" ; E3d configure sensor 2 as thermistor on pin temp2
          ;
          M950 H2 C"21.out0" T2                                                  ; create nozzle heater output on out2 and map it to sensor 2
          M307 H2 B0 S1.00                                                       ; disable bang-bang mode for heater 2 and set PWM limit
          M143 H2 S280                                                           ; set temperature limit for heater 2 to 280°C
          ;
          ; =========================================================================================================
          ;
          M308 S4 P"mcu-temp" Y"mcu-temp" A"MCU"                                 ; set virtual heater for MCU
          M308 S5 P"drivers" Y"drivers" A"Driver"                                ; set virtual heater for stepper drivers
          ;
          ; =========================================================================================================
          ; fans
          ; =========================================================================================================
          ;
          ;
          ; cooling fans
          ;
          M950 F0 C"20.out1" Q500                                                ; create fan 0 on pin fan1 and set its frequency
          ;
          M950 F1 C"21.out1" Q500                                                ; create fan 1 on pin fan1 and set its frequency
          ;
          ; extruder fans (temperature controlled)
          ;
          M950 F2 C"20.out2" Q500                                                ; create fan 2 on pin out5 and set its frequency
          M106 P2 H1 T50                                                         ; set fan 2 value. Thermostatic control is turned on
          ;
          M950 F3 C"21.out2" Q500                                                ; create fan 3 on pin out6 and set its frequency
          M106 P3 H2 T50                                                         ; set fan 3 value. Thermostatic control is turned on
          ;
          ; ========================================================================================================
          ; tools
          ; =========================================================================================================
          ;
          M563 P0 D0 H1                                                          ; define tool 0
          G10 P0 X0 Y0 Z0                                                        ; set tool 0 axes offsets
          M568 P0 S0 R0 A0                                                       ; turn off tool 0, set active and standby temperature to 0°C
          ;
          M563 P1 D1 H2 X3                                                       ; define tool 1 (maps x to u)
          G10 P1 X0 Y0 Z0                                                        ; set tool 1 axes offsets
          M568 P1 S0 R0 A0                                                       ; turn off tool 1, set active and standby temperature to 0°C
          ;
          M563 P2 D0:1 H1:2 X0:3 F0:1 S"Tool 2 (copy mode)"                      ; define tool 2 (copies x to u)
          G10 P2 X0 Y0 U-110 S0 R0                                               ; set tool 2 axes offsets
          M568 P2 S0 R0 A0                                                       ; turn off tool 2, set active and standby temperature to 0°C
          M567 P2 E1:1                                                           ; set mixing
          ;
          M302 S80 R80                                                           ; allow extrusions starting from 80°C and retractions from 80°C
          ;
          
          ; =========================================================================================================
          ; filament handling
          ; =========================================================================================================
          ;
          ; execute macro that determines the status of the filament sensor
          ;
          ;M591 D0 P3 C"20.io0.in" S1 R70:150 L78.5 
          ;M591 D1 P3 C"21.io0.in" S1 R70:150 L78.5
          ;
          ; calculated values is L77.75
          ;
          ;M98 P"0:/sys/00-Functions/FilamentsensorStatus"
          ;
          ; =========================================================================================================
          ; other settings
          ; =========================================================================================================
          ;
          M18 XUY                                                                ; release / unlock x, y
          M501                                                                   ; load config-override (for thermistor parameters and other settings)
          G90                                                                    ; absolute positioning
          M83                                                                    ; relative extruder moves
          ;
          ; =========================================================================================================
          ;
          ; offsets - place off-sets for x and y here. z-offsets are handled in the print sheet macros
          ;
          G31 P1000 X0 Y5
          G10 P0 X0                                                              ; set offset for tool 0
          ;G10 P1 X0 Y0.08 U34.22 Z0                                              ; set offset for tool 1 
          g10 p1 x0 u34.66 -y0.02 z0
          ;g10 p1 x0 u34.90 y0.12 z0
          ; =========================================================================================================
          ;
          T-1 P0                                                                 ; deselect tools
          ;
          ; =========================================================================================================
          ;
          
          1 Reply Last reply Reply Quote 0
          • First post
            Last post
          Unless otherwise noted, all forum content is licensed under CC-BY-SA