Secondary Tool move breaks Z homing



  • I have a PNP machine with dual head.
    Board: Duet 3 MB6HC (MB6HC)
    Firmware: RepRapFirmware for Duet 3 MB6HC 3.1.1 (2020-05-19b2

    Axes description.
    X,Y - Standard axes.
    Z - Shared axis for both tools(head).
    E1,E2 - Axes configured to absolute positioning. Thes axes handles rotation of each head.

    Rotation axes has to be set to absolute position, because the openpnp is sending absolute rotation for the tools.

    All axes are using trinamic sensorless feature for operation. Due to some manufacturing inprecissions on the Z axis it uses Induction probe for homing operation with offset to zero. For normal operation it switches back to sensorless. Hoever it should never get to maximum positions. Due to the software.

    Issue:
    G28
    T0
    G0 180 ; Tool 0 moves to 180
    T1
    G0 180; Tool 1 moves to 180
    T0
    G0 180 ; Tool 0 moves to 180
    G28 Z ; Z starts to move in the other direction then it should. Away from the probe
    The problem does not occure when using only tool 0.

    I have zero explenation why this happends. The first long move is executed in oposite direction which causes to hit the axis end without limit switch.
    Could somebody help me resolve this issue ?

    Homing procedure of Z Axis:
    ; homez.g
    ; called to home the Z axis

    G91 ; relative positioning

    M913 Z25

    M574 Z2 P"!io0.in" S1 ; Induction sensor
    M915 Z F0 S3 R1

    G1 H1 Z+40 F500
    G1 H2 Z-2 F500
    G1 H1 Z+5 F500
    M913 Z100
    G90 ; absolute positioning

    G92 Z12 ; Set possition due to probe offset

    G1 Z0 F500; Park

    Whole configuration:
    config.g

    ; Configuration file for Duet WiFi (firmware version 3)
    ; executed by the firmware on start-up
    ;
    ; generated by RepRapFirmware Configuration Tool v3.1.3 on Tue Jun 16 2020 20:02:20 GMT+0200 (Central European Summer Time)
    
    ; General preferences
    G90                                            ; send absolute coordinates...
    M82                                            ; ...but relative extruder moves
    M550 P"Opto Pnp"                             ; set printer name
    
    ; Network
    M552 S1                                        ; enable network
    M586 P0 S1                                     ; enable HTTP
    M586 P1 S0                                     ; disable FTP
    M586 P2 S1                                     ; disable Telnet
    
    ; Drivesh
    M569 P0 S0                                     ; physical drive 0 goes forwards
    M569 P1 S0                                     ; physical drive 1 goes forwards
    M569 P2 S1                                     ; physical drive 2 goes forwards
    M569 P3 S1                                     ; physical drive 3 goes forwards
    M569 P4 S1                                     ; physical drive 4 goes forwards
    ;M569 P5 S1                                     ; physical drive 5 goes forwards
    
    M584 X0 Y1 Z2 E3:4                             ; set drive mapping
    M350 X64 Y64 Z4 E32:32 I1                       ; configure microstepping with interpolation
    M92 X213.507 Y213.70972 Z20.21 E17.777:17.777             ; set steps per mm
    M566 X900.00 Y900.00 Z900.00 E900.00:900.00            ; set maximum instantaneous speed changes (mm/min)
    M203 X70000.00 Y22500 Z5000.00 E5000:5000         ; set maximum speeds (mm/min)
    M201 X6800.00 Y2000.00 Z2000.00 E2000:2000          ; set accelerations (mm/s^2)
    M906 X3000 Y2800                 ; set motor currents (mA) and motor idle factor in per cent
    M906 Z2300                ; set motor currents (mA) and motor idle factor in per cent
    M906 E600:600 I15                ; set motor currents (mA) and motor idle factor in per cent
    M84 S300                                        ; Set idle timeout for all axis
    
    M917 X15 Y15 Z100 E100:100
    
    ; Axis Limits
    M208 X-7.7 Y-39.2 Z-22.5 S1                               ; set axis minima
    M208 X650 Y400 Z22.5 S0                         ; set axis maxima
    M208 E-18000 S1                         ; set axis maxima
    M208 E18000 S0                         ; set axis maxima
    
    ; Endstops
    M574 X1 S3                                     ; configure sensorless endstop for low end on X
    M574 Y1 S3                                     ; configure sensorless endstop for low end on Y
    M574 Z1 S3
    M574 E1 S3                                     ; configure sensorless endstop for low end on Z
    
    ; Define Tool 0
    M563 P0 D0
    
    ; Define Tool 1
    M563 P1 D1
    
    ;M564 H0										; Allow move with unhomed asix
    
    ; GPIO
    M950 P0 C"out1"								   ; Air Pump
    M950 P1 C"out7"								   ; Air Valve1
    M950 P2 C"out8"								   ; Air Valve2
    
    
    ; Fans
    
    ; Tools
    
    ; Custom settings are not defined
    

  • Moderator

    Can you also post your tool change files?



  • I do not have any tool change scripts inside my configuration.

    My only tool change commands are T0 and T1.


  • Moderator

    @optical said in Secondary Tool move breaks Z homing:

    ; Define Tool 0 M563 P0 D0 ; Define Tool 1 M563 P1 D1

    I notice no tool offsets here, but I assume that's also because this is a unique machine?

    Can you post your homing files?

    Is this perhaps related to your other thread on this machine?



  • These are all of the homing scripts.

    homeall.g homez.g homey.g homex.g

    The maniche is Pick and Place software. The offsets are handled inside openpnp.
    However this issue can be replicated without the openpnp. Just by gcode above.

    In the other thread i'm dealing with issue how to configure absolute independent rotation axis.

    Honestly i do not know what causes the issue. I have spend a lot of time debuging this issue because is seemed to be a random, unitl i found out it stop happedning when i disabled the other pnp head. After that i was able to replicate it by the gcode above.


  • administrators

    @optical said in Secondary Tool move breaks Z homing:

    I do not have any tool change scripts inside my configuration.

    What we are asking is whether you have files tfree0.g, tpre0.g and tpost0.g in /sys on the SD card, and similar files for tool 1; and if so, what is in them.



  • I do not have any tool change files tfree0.g, tpre0.g and tpost0.g in /sys on the SD card
    Untitled.png


  • administrators

    Thank you.

    @optical said in Secondary Tool move breaks Z homing:

    G0 180 ; Tool 0 moves to 180

    I presume that is a mis-print, because G0 180 doesn't make sense (there is no parameter letter before the 180). What should it be? Does the problem still occur with these three G0 commands removed, i.e. just the T commands between G28 and G28 Z?


  • administrators

    PS:

    @optical said in Secondary Tool move breaks Z homing:

    M208 E-18000 S1 ; set axis maxima M208 E18000 S0 ; set axis maxima

    Extruder are not axes, so those commands won't do anything; but I wouldn't expect them to mess anything up.



  • So i tested again the minimal sample and discovered following:

    G28
    T0
    T1
    G28 Z; Works fine
    
    G28
    T0
    G0 Z10
    T1
    G0 Z0
    T0
    G0 Z10
    G28 Z ; works fine
    
    G28
    T0
    T1
    G0 E10
    G28 Z; failed 
    

    This makes me think that maybe the issue is related to the other thread regarding this machine.
    Sorry for the previous gcode example. That has not been accurate enough.



  • I have testing different driver mapping to ensure that the issue is not connected to board it self.

    After that i confirmed that the Induction sensor(it has led on the back) is still working after the failed homing, to ensure that somehow the input has not been disabled.


  • administrators

    Thanks. Please can you upgrade the firmware to 3.2beta1 and see if the issue is still present.



  • Hi.
    I have tried 3.2beta2 and 3.2beta1 issue present in both of the versions.


  • administrators

    Thank you. I will try your config file on my bench setup and try to reproduce the problem.



  • Hi,
    today i have been able to produce behavior to use the tools with axis mapping to remember their position.
    I have changed the rotation to be represented by axis X(One nozzle). The other i have mapped to axis V to be able to use M563 to change driver mapping for Axis X.

    However, the issue with inverting axis is still present. This time right after homing.

    G28
    G28 Z
    

    Note: I think it would be nice to allow using M563 to remap any axis. Due to this limitation i had to move my X axis to be labeled as U. Which makes things rather messy.

    G28 Z
    G28 V
    G28 Z ; Failes
    

    This is the minimal usecase when the Z homing failes.
    It is propable related to the way i'm homing the axis which does not have endstops and are infite(free-rotation).

    Could you help me maybe change the way i'm homing the rotation axis ? Is there Gcode which would just declare the axis as homed ?
    Currently i set the stall detection to lowest value and move.
    These axis can be homed in any position.

    The other possibility is that the Z axis breaks whenever the second tool/driver moves.

    Configuration:
    homeall.g config.g homez.g homey.g homex.g homev.g homeu.g


  • Moderator

    @optical said in Secondary Tool move breaks Z homing:

    Is there Gcode which would just declare the axis as homed ?

    G92 will let you set the position of an axis.

    https://duet3d.dozuki.com/Wiki/Gcode#Section_G92_Set_Position



  • I tested new homing scripts using G92 for the infinite axis. And i have come to conclusion that whenever the other drive(Currently V axis) moves. The Z axis homing becomes inverted.



  • After further testing it seems that somehow the input is inverted.

    M574 Z2 P"!io0.in" S1
    

    Because the problem of the movement is "solved" not present when i remove the induction probe connector from the board.
    Is it possible that switching from the probe endstop to sensorless endstop breaks the input ?

    After messing with the endstop settings. I think that really something is wrong with the input it self.

    G28 
    T1
    G1 X10
    G28 Z ; Broken home
    M574 Z2 P"!io0.in" S1
    G1 H1 Z+40 F500  ; stops immidiently even when sensor is not triggered
    M574 Z0 P"nil" 
    G1 H1 Z+40 F500; Continues fine
    M574 Z2 P"!io0.in" S1 
    G1 H1 Z+40 F500  ; stops immidiently even when sensor is not triggered
    

    I have tried to change io0 for io1. The issue is still present.
    I have checked that the sensor is indeed working even when the problem with the io is present.


  • Moderator

    Well the ! inverts the signal.



  • @Phaedrux Ofcourse it does the inversion is correct. The input works for the homing until the Tool 1 is moved then it stops working(propably gets inverted (uninverted)).
    I'm suggesting that it is propably a bug inside the firmware.


  • Moderator

    Post your gcode so we can see what's all going on.




  • Moderator

    Can you try add M400 before all of your instances of M913?

    https://duet3d.dozuki.com/Wiki/Gcode#Section_M913_Set_motor_percentage_of_normal_current

    Important! When M913 is executed, it does not wait for all motion to stop first (unlike M906). This is so that it can be used in the M911 power fail script. When using M913 elsewhere, you will typically want to use M400 immediately before M913.

    ; Axis Limits
    M208 U-7.7 Y-39.2 Z-22.5 S1                               ; set axis minima
    M208 U650 Y400 Z22.5 S0                         ; set axis maxima
    M208 X-18000 V-18000 S1                         ; set axis maxima
    M208 X18000 V18000 S0                         ; set axis maxima
    

    Can you try condensing that into just two commands?


Log in to reply