LinuxCNC Dual-Head Gantry Setup Assistance Request
- akim14
- Away
- Junior Member
-
Less
More
- Posts: 25
- Thank you received: 3
08 May 2025 17:24 #328021
by akim14
LinuxCNC Dual-Head Gantry Setup Assistance Request was created by akim14
I need assistance setting up my dual-head gantry system in LinuxCNC. My current configuration has:
- Limit switches at both ends of each axis
- An additional center-position switch (to prevent collisions between the two gantry heads)
- No dedicated home switches (just these limit switches)
- How to properly configure these limit switches to also function as home switches
- The correct way to set up homing for this dual-head gantry system
- How to implement the center-position switch to prevent collisions between heads
- Proper configuration in MESA CT for this setup
- How to handle the limit switch configuration when there's no dedicated home switch
- The best homing sequence for this dual-head arrangement
- How to implement the center-position switch logic
- The appropriate HAL and INI configurations
- Best practices for homing in this scenario
- Any special considerations for the MESA CT hardware
Please Log in or Create an account to join the conversation.
- PCW
-
- Away
- Moderator
-
Less
More
- Posts: 18680
- Thank you received: 5155
08 May 2025 18:28 #328023
by PCW
Replied by PCW on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
I would first take a look at:
linuxcnc.org/docs/html/config/ini-homing.html
You can share limit/home switches
It seems to me that rather than a center limit, you would do some math in hal
to assert a fault if the heads get too close to one another.
I would expect that specific support for a dual head gantry machine would have to be done
by direct editing of the hal/ini files, not something that a generic GUI setup can reasonably do.
linuxcnc.org/docs/html/config/ini-homing.html
You can share limit/home switches
It seems to me that rather than a center limit, you would do some math in hal
to assert a fault if the heads get too close to one another.
I would expect that specific support for a dual head gantry machine would have to be done
by direct editing of the hal/ini files, not something that a generic GUI setup can reasonably do.
Please Log in or Create an account to join the conversation.
- Todd Zuercher
-
- Offline
- Platinum Member
-
Less
More
- Posts: 5004
- Thank you received: 1461
09 May 2025 13:46 - 09 May 2025 13:48 #328069
by Todd Zuercher
Replied by Todd Zuercher on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
I've set up a few multi head gantry machines, but the ones I was working with had fixed spacing between the heads. I've set them up using Z and W for axis for two head machines. But for a larger machine I set up that used 8 heads I used the new extra joints feature and controlled them all with the Z axis command, with each joint having separate offsets for tool lengths and the ability to enable/disable each spindle/head and when one was disabled it automatically would park raised up at it's home position.
I've thought about dual head machines with two heads on a common X or Y axis a little bit and can imagine couple of ways to handle it. One possible way that I think has merit would be to configure both heads with a common X with a U axis set up as the spacing between the two heads. This way an X axis command would move both heads in parralel motion, and U commands would vary the space between them. To set up this, if the joint arrangement is such that the two axis joints are totally independent (say each head is driven by motor turning a pinion gear on a common rack on the gantry.) the kinematics model would be joint0 = X position, and joint3 = X+U and revers kins X=J0 and U=J3-J0.
The advantage to this set up would be that the g code for milling out 2 parallel identical parts could be simple 3 axis xyz g-code. (This could be a big advantage if the current version of Linuxcnc still doesn't do advanced look-ahead tool planning for axis beyond XYZ especially if UVW are left out. That used to be the case a few years ago but may no longer be true and was the reason I set up my machines the way I did to allow commanding multiple Z axis with just a Z command instead of using Z and W...
But If you would want to do something different with both heads simultaneously, like for example cutting out mirror images of the same shape at the same time one on XYZ and the other on UYW. Then it would probably be better to have simple 1:1 kinematics with J0=X, J1=Y, J2=Z, J3=U, and J4=W. However this will make collision prevention more difficult than the U=J0+J3 model.
I've thought about dual head machines with two heads on a common X or Y axis a little bit and can imagine couple of ways to handle it. One possible way that I think has merit would be to configure both heads with a common X with a U axis set up as the spacing between the two heads. This way an X axis command would move both heads in parralel motion, and U commands would vary the space between them. To set up this, if the joint arrangement is such that the two axis joints are totally independent (say each head is driven by motor turning a pinion gear on a common rack on the gantry.) the kinematics model would be joint0 = X position, and joint3 = X+U and revers kins X=J0 and U=J3-J0.
The advantage to this set up would be that the g code for milling out 2 parallel identical parts could be simple 3 axis xyz g-code. (This could be a big advantage if the current version of Linuxcnc still doesn't do advanced look-ahead tool planning for axis beyond XYZ especially if UVW are left out. That used to be the case a few years ago but may no longer be true and was the reason I set up my machines the way I did to allow commanding multiple Z axis with just a Z command instead of using Z and W...
But If you would want to do something different with both heads simultaneously, like for example cutting out mirror images of the same shape at the same time one on XYZ and the other on UYW. Then it would probably be better to have simple 1:1 kinematics with J0=X, J1=Y, J2=Z, J3=U, and J4=W. However this will make collision prevention more difficult than the U=J0+J3 model.
Last edit: 09 May 2025 13:48 by Todd Zuercher. Reason: Lack of proof reading
The following user(s) said Thank You: tommylight
Please Log in or Create an account to join the conversation.
- akim14
- Away
- Junior Member
-
Less
More
- Posts: 25
- Thank you received: 3
12 May 2025 03:31 #328243
by akim14
Replied by akim14 on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
Thank you so much. I have taken a look, and the difficulty is understanding the right way to implement the edit of the HAl and ini files to adapt this< I tried using gantrykins, but it wouldn't recognize this, is there a way to make slave and master axis once again you
Please Log in or Create an account to join the conversation.
- akim14
- Away
- Junior Member
-
Less
More
- Posts: 25
- Thank you received: 3
12 May 2025 03:38 #328244
by akim14
Replied by akim14 on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
Thank you. The system I am working on is a water jet with dual cutting heads< two x and two z-axis, I use x and u as x2, and for the z, I used the problem I face is understanding how to implement the slave master on the x-axis and keep the z-axis independent,
Please Log in or Create an account to join the conversation.
- Todd Zuercher
-
- Offline
- Platinum Member
-
Less
More
- Posts: 5004
- Thank you received: 1461
12 May 2025 18:05 #328296
by Todd Zuercher
Replied by Todd Zuercher on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
I had posted some photos of the 8 spindle machine and the configuration file here, if is at all helpful. You can see there how I handled slaving the extra joints to the Z axis.
forum.linuxcnc.org/show-your-stuff/53675-8-spindle-gang-router
forum.linuxcnc.org/show-your-stuff/53675-8-spindle-gang-router
Please Log in or Create an account to join the conversation.
- akim14
- Away
- Junior Member
-
Less
More
- Posts: 25
- Thank you received: 3
13 May 2025 03:54 #328343
by akim14
Replied by akim14 on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
Wow, that's amazing. Did each of the eight heads move on the X-axis independently? I wish you could help me; I think I bit more than I can chew. I downloaded your files, and I feel lost. I am trying to retrofit this bystronic dual head water jet, it looks like a mess. I have all the axis moving, but I can't get the XHC-WHB04B-6 to work. I have not picked a GUI yet, and I have no clue of how to modify one , it sounds easy reading about things but doing it seem to be another issue, I just really need help
Please Log in or Create an account to join the conversation.
- akim14
- Away
- Junior Member
-
Less
More
- Posts: 25
- Thank you received: 3
13 May 2025 10:01 #328363
by akim14
Replied by akim14 on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
Just a heads-up for anyone wrestling with the XHC-WHB04B-6 like I was: relax, it's easier than it looks! Turns out, it's mostly a copy-paste job. My mistake was overthinking it. Make sure your drivers are good to go, create that xhc-whb04b-6.hal file, and pop HALFILE = xhc-whb04b-6.hal into your INI. Then, grab everything from raw.githubusercontent.com/LinuxCNC/linux...ple-configuration.md and paste it in. Tidy it up by removing what you don't need, and if LinuxCNC complains about a line, just delete it until it's happy. Hopefully, this saves someone else the headache!
Please Log in or Create an account to join the conversation.
- Todd Zuercher
-
- Offline
- Platinum Member
-
Less
More
- Posts: 5004
- Thank you received: 1461
13 May 2025 11:06 #328367
by Todd Zuercher
Replied by Todd Zuercher on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
No, the heads were mounted on a fixed spacing in the X direction (15 inches.)
It is a complex configuration with a lot going on, including HMI integration for the onscreen buttons to enable/disable each of the heads. I posted the link for you to try to see what it takes to slave an extra joint to an axis.
I also have posted configs for some two head machines that are set up as XYZW control. These have the ability to be ran using independent Z and W commands. While they still are configured using fixed spacing between the Z and W heads, they do also have the option of programmatically slaving the W head to the Z head so the machine can run on XYZ code with the Z and W performing the same movements. This is accomplished using a few custom M-codes, some g-code subroutines and a bit of hal trickery. (I'll have to try to dig up a link to where it's posted.)
A basic system with XYZUW axis would not be that hard to set up and not need to be very complex and use the ordinary standard Trivkins kinematics. If set up where X and U are simple absolute position commanded from a single fixed origin. However if you wanted the U axis to command the spacing between the Z and W heads, That would require a custom kinematics program, but I don't think it would be a completely unique one. I believe this type of arrangement has been used for some knee mill configurations. (Not sure I've seen example configurations posted though, but there is a good chance there are some out there.)
It is a complex configuration with a lot going on, including HMI integration for the onscreen buttons to enable/disable each of the heads. I posted the link for you to try to see what it takes to slave an extra joint to an axis.
I also have posted configs for some two head machines that are set up as XYZW control. These have the ability to be ran using independent Z and W commands. While they still are configured using fixed spacing between the Z and W heads, they do also have the option of programmatically slaving the W head to the Z head so the machine can run on XYZ code with the Z and W performing the same movements. This is accomplished using a few custom M-codes, some g-code subroutines and a bit of hal trickery. (I'll have to try to dig up a link to where it's posted.)
A basic system with XYZUW axis would not be that hard to set up and not need to be very complex and use the ordinary standard Trivkins kinematics. If set up where X and U are simple absolute position commanded from a single fixed origin. However if you wanted the U axis to command the spacing between the Z and W heads, That would require a custom kinematics program, but I don't think it would be a completely unique one. I believe this type of arrangement has been used for some knee mill configurations. (Not sure I've seen example configurations posted though, but there is a good chance there are some out there.)
Please Log in or Create an account to join the conversation.
- Todd Zuercher
-
- Offline
- Platinum Member
-
Less
More
- Posts: 5004
- Thank you received: 1461
13 May 2025 11:52 #328369
by Todd Zuercher
Replied by Todd Zuercher on topic LinuxCNC Dual-Head Gantry Setup Assistance Request
Here is a link to my two head machine (XYZW) Sorry no U.
forum.linuxcnc.org/media/kunena/attachments/3190/slave-zw.zip
forum.linuxcnc.org/media/kunena/attachments/3190/slave-zw.zip
Please Log in or Create an account to join the conversation.
Time to create page: 0.231 seconds