Reset machine coordinates on special machine.
28 Jun 2022 20:29 - 28 Jun 2022 20:35 #246101
by BigGray
Reset machine coordinates on special machine. was created by BigGray
Tl; dr
Is there a way to reset the X and A- axis machine coordinates or re-home from G-code?
Assuming there is no way can someone point me to the right Part of the source code so I can add a few lines and re-compile linuxcnc.
Or if there is a solution using nml that would be appreciated too.
Hello Everyone,
I have this quite unusual machine where the material is fed by rollers(yellow). The travel of X is "infinite".
After The Scissors cut off the material the machine is "homed" eg the X-axis should be at 0.0000
Linuxcnc assumes X has a fixed length in machine coordinates I guess
So I could not find a way to reset X without rewinding it which would push out the material as it has already been cut off.
G92 did nothing to the machine coordinates.
Using offsets G54 ... does not work either for my case as this is a pretty fast machine that is being fed several G-code files a minute generated by another program.
The X value could exceed the variable size in which it is stored.
Re-homing the machine manually just takes too long and can be forgotten doing it several times a minute.
Is there a way to reset the X and A- axis machine coordinates or re-home from G-code?
Assuming there is no way can someone point me to the right Part of the source code so I can add a few lines and re-compile linuxcnc.
Or if there is a solution using nml that would be appreciated too.
Thank you in advance.
Is there a way to reset the X and A- axis machine coordinates or re-home from G-code?
Assuming there is no way can someone point me to the right Part of the source code so I can add a few lines and re-compile linuxcnc.
Or if there is a solution using nml that would be appreciated too.
Hello Everyone,
I have this quite unusual machine where the material is fed by rollers(yellow). The travel of X is "infinite".
After The Scissors cut off the material the machine is "homed" eg the X-axis should be at 0.0000
Linuxcnc assumes X has a fixed length in machine coordinates I guess
So I could not find a way to reset X without rewinding it which would push out the material as it has already been cut off.
G92 did nothing to the machine coordinates.
Using offsets G54 ... does not work either for my case as this is a pretty fast machine that is being fed several G-code files a minute generated by another program.
The X value could exceed the variable size in which it is stored.
Re-homing the machine manually just takes too long and can be forgotten doing it several times a minute.
Is there a way to reset the X and A- axis machine coordinates or re-home from G-code?
Assuming there is no way can someone point me to the right Part of the source code so I can add a few lines and re-compile linuxcnc.
Or if there is a solution using nml that would be appreciated too.
Thank you in advance.
Attachments:
Last edit: 28 Jun 2022 20:35 by BigGray.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19011
- Thank you received: 6371
28 Jun 2022 21:11 #246104
by tommylight
Replied by tommylight on topic Reset machine coordinates on special machine.
Does the machine require homing X before use?
Can it deal with "immediate homing" for the X?
If yes, then adding a simple micro switch to scissors and wiring it in hal to "home X" should work just fine.
Not sure if external homing for a single axis works, i am sure it works for home all, so should also work.
Can it deal with "immediate homing" for the X?
If yes, then adding a simple micro switch to scissors and wiring it in hal to "home X" should work just fine.
Not sure if external homing for a single axis works, i am sure it works for home all, so should also work.
The following user(s) said Thank You: BigGray
Please Log in or Create an account to join the conversation.
29 Jun 2022 19:17 - 29 Jun 2022 19:17 #246191
by BigGray
Replied by BigGray on topic Reset machine coordinates on special machine.
At the moment both A and X are homing immediately.
I simplified this machine a lot to make it easier to digest, a microswitch would not work.
However if tripping a microswitch while running gcode works then I should be able to use a M64 P1
from g-code and wire that output to the input of home x.
Sounds like a good compromise if it works.
If that works perhaps it is possible to include some while and if else to home X in the beginning of the gcode.
Will update as soon as I try it.
I simplified this machine a lot to make it easier to digest, a microswitch would not work.
However if tripping a microswitch while running gcode works then I should be able to use a M64 P1
from g-code and wire that output to the input of home x.
Sounds like a good compromise if it works.
If that works perhaps it is possible to include some while and if else to home X in the beginning of the gcode.
Will update as soon as I try it.
Last edit: 29 Jun 2022 19:17 by BigGray.
Please Log in or Create an account to join the conversation.
29 Jun 2022 21:03 - 29 Jun 2022 21:29 #246211
by chris@cnc
Replied by chris@cnc on topic Reset machine coordinates on special machine.
Not sure was the problem with g54 is. But G10 L20 P1 X0 A0 will set axis zero on actual position.
P1 G54
P2 G55
….
P1 G54
P2 G55
….
Last edit: 29 Jun 2022 21:29 by chris@cnc.
Please Log in or Create an account to join the conversation.
29 Jun 2022 22:59 #246232
by andypugh
Replied by andypugh on topic Reset machine coordinates on special machine.
Another vote for G10. But look at the docs to work out which one you want (L1, L10, L2, L20)
linuxcnc.org/docs/stable/html/gcode/g-code.html#gcode:g10-l1
linuxcnc.org/docs/stable/html/gcode/g-code.html#gcode:g10-l1
Please Log in or Create an account to join the conversation.
30 Jun 2022 21:16 - 30 Jun 2022 21:28 #246313
by BigGray
Replied by BigGray on topic Reset machine coordinates on special machine.
@Chris and Andy
I read the docs before making this topic.
Let me clarify my concern again.
The spool is 100 000 mm long and several spools are changed during the day.
If keep offsetting using G54 the G53 coordinate would exceed 999 999.
This is a mess I would like to avoid .
The machine is not using fixtures, using G54 G55... makes things just more complicated.
The easiest and best option is to reset the G53 coordinate as soon as the material is cut.
Because the machine is really at X0 then.
Same with the pizza cutter, it has no limits after cutting it should be zeroed.
If I just could reset the G53 Variable this would solve everything.
I read the docs before making this topic.
Let me clarify my concern again.
The spool is 100 000 mm long and several spools are changed during the day.
If keep offsetting using G54 the G53 coordinate would exceed 999 999.
This is a mess I would like to avoid .
The machine is not using fixtures, using G54 G55... makes things just more complicated.
The easiest and best option is to reset the G53 coordinate as soon as the material is cut.
Because the machine is really at X0 then.
Same with the pizza cutter, it has no limits after cutting it should be zeroed.
If I just could reset the G53 Variable this would solve everything.
Last edit: 30 Jun 2022 21:28 by BigGray.
Please Log in or Create an account to join the conversation.
30 Jun 2022 21:24 - 30 Jun 2022 21:31 #246315
by BigGray
Replied by BigGray on topic Reset machine coordinates on special machine.
Tommy, I tried your suggestion and it did not work.
Perhaps I did not really understand what you meant.
If I trip the home switch of x while running a gcode file, that does not reset the machine coordinates(G53).
I'm using trivkins with 2 gantrys so both=true , and yes I did check the home-switch is working properly using hal config viewer.
Perhaps I did not really understand what you meant.
If I trip the home switch of x while running a gcode file, that does not reset the machine coordinates(G53).
I'm using trivkins with 2 gantrys so both=true , and yes I did check the home-switch is working properly using hal config viewer.
Last edit: 30 Jun 2022 21:31 by BigGray.
Please Log in or Create an account to join the conversation.
- tommylight
- Away
- Moderator
Less
More
- Posts: 19011
- Thank you received: 6371
30 Jun 2022 21:33 #246318
by tommylight
Replied by tommylight on topic Reset machine coordinates on special machine.
Is it going to be cutting a series of the same size stuff?
Using a gcode loop should make it possible to 0 the axis when it finishes then start over.
Using a gcode loop should make it possible to 0 the axis when it finishes then start over.
Please Log in or Create an account to join the conversation.
30 Jun 2022 22:36 #246323
by andypugh
Replied by andypugh on topic Reset machine coordinates on special machine.
After some experimenting, this works....
1) Set the axis to immediate homing (HOME_SEARCH_VELOCITY = HOME_LATCH_VELOCITY = 0 )
2) Toggle halui.mode.joint
3) Toggle halui.joint.0.unhome
4) Toggle halui.joint.0.home
(At this point the machine will automatically switch out of joint mode)
One way to do this is with a custom M-code. Save the following as a file called M100 in your nc_files directory and make it executable (either from the file manager properties or chmod +x M100.
It isn't as complicated as it might look, it just sets a pin and waits for the result for four different HAL pins in sequence.
Note that this will _not_ work inside a G-code programme because it requires a mode change to manual (out of auto)
I think that you might have to use G10 inside the G-code and M100 on spool change or similar.
The code does not have to be run from MDI M100, it could be linked to a physical button as a HALCMD (see the INI docs)
Or, it could be coded in Python, in which case it could watch a HAL pin and do the reset then.
It might not make sense for this to be an axis at all....
1) Set the axis to immediate homing (HOME_SEARCH_VELOCITY = HOME_LATCH_VELOCITY = 0 )
2) Toggle halui.mode.joint
3) Toggle halui.joint.0.unhome
4) Toggle halui.joint.0.home
(At this point the machine will automatically switch out of joint mode)
One way to do this is with a custom M-code. Save the following as a file called M100 in your nc_files directory and make it executable (either from the file manager properties or chmod +x M100.
#! /bin/bash
mode=$(halcmd getp halui.mode.is-manual)
echo $mode
halcmd setp halui.mode.manual 1
while [ $mode == 'FALSE' ];do
sleep 0.1
mode=$(halcmd getp halui.mode.is-manual)
echo mode is manual $mode
done
halcmd setp halui.mode.manual 0
mode=$(halcmd getp halui.mode.is-joint)
echo $mode
halcmd setp halui.mode.joint 1
while [ $mode == 'FALSE' ];do
sleep 0.1
mode=$(halcmd getp halui.mode.is-joint)
echo mode is joint $mode
done
halcmd setp halui.mode.joint 0
mode=$(halcmd getp halui.joint.0.is-homed)
echo $mode
halcmd setp halui.joint.0.unhome 1
while [ $mode == 'TRUE' ];do
sleep 0.1
mode=$(halcmd getp halui.joint.0.is-homed)
echo joint is homed $mode
done
halcmd setp halui.joint.0.unhome 0
mode=$(halcmd getp halui.joint.0.is-homed)
echo $mode
halcmd setp halui.joint.0.home 1
while [ $mode == 'FALSE' ];do
sleep 0.1
mode=$(halcmd getp halui.joint.0.is-homed)
echo joint is homed $mode
done
halcmd setp halui.joint.0.home 0
exit 0
It isn't as complicated as it might look, it just sets a pin and waits for the result for four different HAL pins in sequence.
Note that this will _not_ work inside a G-code programme because it requires a mode change to manual (out of auto)
I think that you might have to use G10 inside the G-code and M100 on spool change or similar.
The code does not have to be run from MDI M100, it could be linked to a physical button as a HALCMD (see the INI docs)
Or, it could be coded in Python, in which case it could watch a HAL pin and do the reset then.
It might not make sense for this to be an axis at all....
The following user(s) said Thank You: BigGray
Please Log in or Create an account to join the conversation.
03 Jul 2022 18:41 #246525
by BigGray
Replied by BigGray on topic Reset machine coordinates on special machine.
No, every piece is different.
Please Log in or Create an account to join the conversation.
Time to create page: 0.113 seconds