Linking two gantry joints with homing switches so it unracks on home
This is no longer necessary because this is achieved in software when homed.
If your home switches are not aligned perfectly, you just need to adjust the HOME_OFFSET for each joint in your ini file accordingly.
eg in my case I have gantry HOME_OFFSETS of 45mm and 43mm to adjust by 2mm.
Your new workflow will become:
power machine on
Press power on in the GUI
Press home all
Put up a sign and your users will adapt to the simplified process I am sure.
Lets say you are side drilling something using an aggregate tool and the power goes out. Once you finally get your machine powered up again, you must manually jog the tool out of the material before you can begin the homing sequence because the homing sequence would crash the machine.
But the bigger problem is not just that you can't do that, but that you can press arrow keys like you always did and rack the axis pretty hard, maybe enough to damage the axis, or at least jam it so hard it may have trouble unracking. I can see people doing that over and over. I know you just shouldn't do that, but again, big user base here I'm not in regular contact with. This one isn't me being resistant to change, it's what I can reasonably foresee is going to happen with all these other casual users. I'd put up a note but that has had limited success in the past.
Can the keys for it just be disabled entirely while in the unhomed state?
What about my XHC? Would this work? (will try tomorrow). The jogwheel only has one lowpass filter that goes to every axis and joint and just relies on one joint/axis being enabled or not by the axis selector knob and the fact that it's in joint mode or axis mode.
If this works, but we can't get the keyboard to drive joint.4 along with joint.0 when unhomed, is there a way to disable the arrow keys when unhomed so it won't rack the gantry but still be able to jog the gantry with the xhc?net jog-x axis.x.jog-enable joint.0.jog-enable joint.4.jog-enable <= xhc-hb04.jog.enable-x #Lowpass Filtering for mpg
addf mult2Lowpass servo-thread
setp ilowpass.0.scale 1000
setp ilowpass.0.gain 0.01
net jog-counts_in xhc-hb04.jog.counts => ilowpass.0.in
net jog-counts_out ilowpass.0.out => joint.0.jog-counts joint.4.jog-counts axis.x.jog-counts joint.1.jog-counts axis.y.jog-counts joint.2.jog-counts axis.z.jog-counts joint.3.jog-counts axis.a.jog-counts halui.feed-override.counts halui.spindle.0.override.counts
Using KINEMATICS = trivkins coordinates=XYYZ kinstype=BOTH you CAN jog the machine before homing, all joints/axis will jog happily EXCEPT the tandem joints/axis.
And even if power goes off and the router remains stuck inside the part, homing should be set to home Z axis first, so nothing brakes.
As for slow homing, i have this on one of my machines:
HOME_SEARCH_VEL = -100.000000
That is 6 meters a minute, so not slow by any stretch of imagination.
On a 3 meter long tandem axis takes 30 seconds to home it.
KINEMATICS = trivkins coordinates=XXYZA kinstype=BOTH
KINEMATICS = trivkins coordinates=XXYZA
Disabling the left/right jog keys in joint mode is acceptable. Disabling all XYZA jog keys in joint mode (they still need to work in axis mode) in favor of the XHC jogging is acceptable.
I see no scenario where we need to drive joints X1 and X2 independently. Unrack homing is automatic now, and no one was ever trained to use joint mode to drive X1 independently to square it with X2.
Like I say, it's not just about me. Large open membership user base who come in any time of day unsupervised- which is great that LinuxCNC has been good for this! I could get the labelmaker and print out something to stick to the monitor, but in my experience some people won't even see that or won't "get" what this very short sentence means.
Hmm, I'm rechecking the manual- again, machine is at the shop and being used, so I can't explore this on the machine yet, but:
"a gui may allow". If I remove kinstype=BOTH then we could be back to what we're asking, to jog an axis together in joint mode? I'm noting the term "may" allow, would the gui need something additional to do this? I'll try tonight.
specifying KINEMATICS_BOTH (kinstype= allows a gui to support jogging of each individual joint in joint mode. Caution is required for machines where the movement of a single joint (in a set specified by a duplicated coordinate letter) can lead to gantry racking or other unwanted outcomes. When the kinstype= parameter is omitted, operation defaults to KINEMATICS_IDENTITY (kinstype=1) and a gui may allow jogging based upon a selected axis coordinate letter (or by a keyboard key) before homing is completed and the machine is still in joint mode. The joint selected will depend upon the gui implementation but typically only one of the multiple joints in the set will jog. Consequently, specifying KINEMATICS_BOTH is recommended as it enables support for unambiguous, independent jogging of each individual joint. Machines that implement homing for all joints (including the provisions for synchronizing the final homing move for multiple joints) may be homed at machine startup and automatically switch to world mode where per-coordinate jogging is available.
If you change kinstype to identity then I think that all jogging is disabled in the unhomed state.
What about my XHC? Would this work?
You can configure MPG jogging to jog both joints at the same time. Something like
net jog-counts joint.0.jog-counts jont.4.jog-counts axis.x.jog-counts
net jog-enable joint.0.jpg-enable joint.4.jog-enable axis.x.jog-enable
If that is acceptable then disabling keyboard jogging in joint mode might be an answer, but I would need to investigate how to do that.
Correct me if I'm wrong, but the HAL doesn't connect the keyboard to the joint.x components? I see no connection to fan out or add a logic gate to, so it's just hardwired into the system that the key will drive the joint component? I see where the joint is enabled, I could add a gate to just disable the joint. Is there a pin combination for "unhomed and not actively homing the system" to gate off the axis so the arrows won't drive it? I think the joint enable needs to be true for the HOME ALL cycle to work.
There is jont.N.homing and jont.N.homed
Which GUI are you using?