@dc42 After calling M665 the homing is required. And after that the top position again at the end of axis.
The probe is built-in delta smart effector, before each print I do bed probing (G32) with controlling max deviation less than 0.03
@dc42 After calling M665 the homing is required. And after that the top position again at the end of axis.
The probe is built-in delta smart effector, before each print I do bed probing (G32) with controlling max deviation less than 0.03
@dc42 Thank you for answer, David! The reason I'd like decrease limit is because when using sensorless homing (stall detection) the carriages almost hits the corners at the ends of the axes when the printer moves to the top position. So, It would be better to have some gap at the most top position for movements after homing done.
Hi, community!
The problem is that I can move outside upper Z limit on Delta printer configuration.
M665 L361.858:361.858:361.858 R181.089 H452 B145.0 X-0.148 Y-0.130 Z0.000
M574 X2 S3
M574 Y2 S3
M574 Z2 S3
; Configure motor stall detection
M915 X Y Z R0 F0
Some part of homedelta.g:
M400
G91 ; use relative positioning
; first pass
G1 H1 X500 Y500 Z500 F3000
...
M400
G1 Z-10 F2000 ; down a few mm so that we can centre the head
The coordinates after homing has been finished:
M114
X:0.000 Y:0.000 Z:441.996 E:0.000 E0:-0.0 Count 151321 151321 151321 Machine 0.000 0.000 441.996 Bed comp 0.000
Setting the current Z coord as upper limit:
M208 Z442
Axis limits (mm) X-145.0:145.0, Y-145.0:145.0, Z0.0:442.0
Moving up:
G91 G0 Z100
M114
X:0.000 Y:0.000 Z:451.043 E:0.000 E0:-0.0 Count 153133 153133 153133 Machine 0.000 0.000 451.043 Bed comp 0.000
The Z coordinate is outside the limit of 442. Axes were stopped a bit lower than set in M665 command. There was no error message, despite that previous Z (442) + movement +100 = 542.
Trying repeat the movement:
G91 G0 Z100
Error: G0: target position not reachable from current position
Now there was the message.
So, the question is: how to limit upper Z coords to arbitrary value ?
RepRapFirmware for Duet 2 WiFi/Ethernet version 3.5.2 (2024-06-11 17:13:43) running on Duet WiFi 1.02 or later
Will appreciate for help.
As a workaround, I'm currently using the code below, but I would like to figure out how to correctly pass multiple values using variables in such parameters.
M581 T9 P-1
M581 T9 R0 S1 P{global.x_axis_endstop_pin}
M581 T9 R0 S1 P{global.y_axis_left_endstop_pin}
M581 T9 R0 S1 P{global.y_axis_right_endstop_pin}
M581 T9 R0 S1 P{global.z_axis_endstop_pin}
M581 T9
Result: Trigger 9 fires on a rising edge of endstops/inputs 6 7 8 9
@dc42 I've got the error:
M581 T9 R0 S1 P{global.x_axis_endstop_pin ^ "+" ^ global.y_axis_left_endstop_pin ^ "+" ^ global.y_axis_right_endstop_pin ^ "+" ^ global.z_axis_endstop_pin}
Error: M581: expected integer value
Returning to the question, I found that the solution still does not work.
Tested on Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.4.0 (2022-03-15)
Operator '+' just summarizes pins values and as result I have one pin number 30 instead of 4 pins (6:7:8:9)
G-CODE to reproduce
; Variables
global x_axis_endstop_pin = 6
global y_axis_left_endstop_pin = 7
global y_axis_right_endstop_pin = 8
global z_axis_endstop_pin = 9
; remove all pins from trigger
M581 T9 P-1
; check the trigger configuration
M581 T9
Result: Trigger 9 is not configured
; setup new pins
M581 T9 R0 S1 P{global.x_axis_endstop_pin + global.y_axis_left_endstop_pin + global.y_axis_right_endstop_pin + global.z_axis_endstop_pin}
; check what we have
M581 T9
Result: Trigger 9 fires on a rising edge of endstops/inputs 30
@jay_s_uk said in Unexpected behaviour of expression { } in command parameters.:
@adegtiar there should be + in between , not a ,
Thank you! It works
@dc42 said in Unexpected behaviour of expression { } in command parameters.:
@adegtiar I have updated https://duet3d.dozuki.com/Wiki/GCode_Meta_Commands#Section_Use_of_expressions_within_GCode_commands to show the correct syntax.
I have tried that syntax, but got an error:
M581 T9 R0 S1 P{global.x_axis_endstop_pin, global.y_axis_left_endstop_pin, global.y_axis_right_endstop_pin, global.z_axis_endstop_pin}
Error: M581: expected '}'
Hi, David!
It seems that not more that one expression can be used when it is necessary to specify several values, for instance:
M581 P{var.myVar1}:{var.myVar2}:{var.myVar3} ...
My test g-code:
global x_axis_endstop_pin = 6
global y_axis_left_endstop_pin = 7
global y_axis_right_endstop_pin = 8
global z_axis_endstop_pin = 9
echo {global.x_axis_endstop_pin}
echo {global.y_axis_left_endstop_pin}
echo {global.y_axis_right_endstop_pin}
echo {global.z_axis_endstop_pin}
; Emergency stop trigger on endstops hits
M581 T8 R0 S1 P{global.x_axis_endstop_pin}:{global.y_axis_left_endstop_pin}:{global.y_axis_right_endstop_pin}:{global.z_axis_endstop_pin}
Only the first pin triggers when its state changes. The rest 3 specified pins does not cause the trigger.
Am I use wrong syntax or it is a bug ?
Echoed values are correct, additionally I have checked them in the object viewer.
And all 4 pins work correctly only when I specify them manually, like this:
M581 T8 R0 S1 P6:7:8:9
Board: Duet 2 WiFi (2WiFi)
Firmware: RepRapFirmware for Duet 2 WiFi/Ethernet 3.4.0beta5 (2021-10-12)
Thank you very much!