My Z limit switch is working fine for homing, but when I run a program, the Z axis will jog upwards to allow a tool change (or even if I delete the gcode for that) before starting. If my project is too high on the wasteboard or I’m using a long EM, I’ll get chatter from the belt and my Z will be thrown off. Shouldn’t the limit switch tell the machine it’s at the top of the axis and prevent the servo from going any further?
Because unshielded wiring is used, and since there are only switches at one end of each travel, the default configuration is to not enable hard limits, per: http://docs.carbide3d.com/software-faq/shapeoko-3-default-grbl-settings/
$21=0 (hard limits, bool)
What would be the affect of enabling the hard limit so the switch is active all the time. Or, even better, shouldn’t the machine know where the top of the axis is anyway and not send instructions to the servo to move past that point? Then the switches on all axis would not have to be enabled, the machine would just stop before hitting the physical barrier.
Enabling hard limits creates the possibility of false positives due to EMI.
The machine does know where it is when jogging in Carbide Motion, and it’s not possible to move past the extents when jogging.
In theory one could enable soft limits which would enforce the behavior which you describe, but in practice, unless one has everything worked out perfectly this too will create false positives and cause problems.