- Configuring LinuxCNC
- Advanced Configuration
- ClassicLadder
- Looking for example clp for ATC random tool changer Mill with/without carousel
Looking for example clp for ATC random tool changer Mill with/without carousel
30 Sep 2023 02:42 #281904
by camb0
Hi,
It's a random tool changer on a matsuura mc500v mill w 16 pockets, the head Z axis doesn't need to move as part of the tool change sequence as it used two air actuators to move the magazine into position and do the change. It has a motor fwd/rev, a pocket signal and an index signal, so it looks like classicladder with the carousel component should be able to do it.
I'm a noob with classic ladder, I've configured some very basic things so what I'm hoping for is a sim (for 2.9) with CL or a worked example for an older version that's has well named variables or is documented a little so I can follow it/understand it/re-purpose it. I've managed to find some machine configs (older machines) from the forums but they're not well documented (granted it's hard to document them well given the hal pins/CL variables/Rungs etc).
Thx in advance,
Cam.
It's a random tool changer on a matsuura mc500v mill w 16 pockets, the head Z axis doesn't need to move as part of the tool change sequence as it used two air actuators to move the magazine into position and do the change. It has a motor fwd/rev, a pocket signal and an index signal, so it looks like classicladder with the carousel component should be able to do it.
I'm a noob with classic ladder, I've configured some very basic things so what I'm hoping for is a sim (for 2.9) with CL or a worked example for an older version that's has well named variables or is documented a little so I can follow it/understand it/re-purpose it. I've managed to find some machine configs (older machines) from the forums but they're not well documented (granted it's hard to document them well given the hal pins/CL variables/Rungs etc).
Thx in advance,
Cam.
Please Log in or Create an account to join the conversation.
01 Oct 2023 23:14 - 01 Oct 2023 23:25 #282035
by camb0
Replied by camb0 on topic Looking for example clp for ATC random tool changer Mill with/without carousel
I've made some progress over the weekend, stepped away from the machine and the thoughts started to come.
I've setup 3 rungs and tested them:
1) Tool Change ready - sets an internal signal when we're ready to change (machine-on, air-pressure etc)
2) Magazine out - sends the magazine out once the spindle is locked and sets and internal signal to true once complete.
3) Tool-in / Tool-out - Releases the tool, drops the mag and holds, then puts the tool back and locks
So I've got the movements sorted now I need to do the following:
A) Work out how to 'move' with a single HAL pin so the spindle lock can kick in (doing by hand atm)
"B") Connect the CL lines to the Carousel
C) Home the carousel when the machine homes
D) Figure out how to hook it all together
E) Cleanup the HAL and add in more safety/protections/timeouts.
F) Connect it to the 'machine' so when a tool is asked for it can do it's thing
I've attached the HAL and the ladder.
Apols the HAL is super messy as I was using another config from someone else as inspiration.
I've setup 3 rungs and tested them:
1) Tool Change ready - sets an internal signal when we're ready to change (machine-on, air-pressure etc)
2) Magazine out - sends the magazine out once the spindle is locked and sets and internal signal to true once complete.
3) Tool-in / Tool-out - Releases the tool, drops the mag and holds, then puts the tool back and locks
So I've got the movements sorted now I need to do the following:
A) Work out how to 'move' with a single HAL pin so the spindle lock can kick in (doing by hand atm)
"B") Connect the CL lines to the Carousel
C) Home the carousel when the machine homes
D) Figure out how to hook it all together
E) Cleanup the HAL and add in more safety/protections/timeouts.
F) Connect it to the 'machine' so when a tool is asked for it can do it's thing
I've attached the HAL and the ladder.
Apols the HAL is super messy as I was using another config from someone else as inspiration.
Last edit: 01 Oct 2023 23:25 by camb0.
Please Log in or Create an account to join the conversation.
02 Oct 2023 04:41 #282042
by camb0
Replied by camb0 on topic Looking for example clp for ATC random tool changer Mill with/without carousel
Motion is working now, and co-ordinated.
Steps:
-VAR %B5 triggers the mag-out, then tool-out.
-Waits for %B11 which will end up as the carousel is ready flag
-Then continues with the tool-in
-The mag-out ends
Next steps:
-Work out a single HAL pin to Advance the spindle so that the spindlelock drops into place.
-Work out the signal to wait for on the carousel
-Work out how to hook into the carousel
-Get the tool change signal from g-code or the gui to call the toolchg1 signal.
-Add safety logic and cleanup the files.
Steps:
-VAR %B5 triggers the mag-out, then tool-out.
-Waits for %B11 which will end up as the carousel is ready flag
-Then continues with the tool-in
-The mag-out ends
Next steps:
-Work out a single HAL pin to Advance the spindle so that the spindlelock drops into place.
-Work out the signal to wait for on the carousel
-Work out how to hook into the carousel
-Get the tool change signal from g-code or the gui to call the toolchg1 signal.
-Add safety logic and cleanup the files.
Please Log in or Create an account to join the conversation.
19 Oct 2023 07:07 #283277
by Becksvill
Replied by Becksvill on topic Looking for example clp for ATC random tool changer Mill with/without carousel
hey just browsing the forum and saw this
i have used classic ladder and the carousel component for toolchangers
on all future toolchangers i think i will use the carousel component and gcode subroutines they are awesome and really easy to check inputs and put all sorts of safety stuff into
but then classic ladder is good for just the few things that are really hard elsewhere like counters and timers lol
i have a few configs laying around but it is really hard to show and i am still learning so my configs are not very well documented haha
this video is where the light came on for me
couple of tips i struggled with
so you have a few options for connecting the carousel component.
you need to connect carousel enable to a digital output
eg if connected to digitat output 00 you type m64 p0 to turn it on
and then m65 p0 to turn it off
carousel must be turned off briefly before turning on.
eg
m65p0 (turn off carousel)
m64p0 (turn on carousel)
then you can connect the carousel pocket number to a digital analog output
if connected to digital analog output 00
m68 E0 Q4 (this will set value to 4 eg tool 4)
so you can test in MDI
m68 E0 Q4
m65p0
m64p0
this will set the FWD or REV motor pin on
when set in index mode which is what i use the carousel component rotates until it sees the home sensor and then the next pocket sensor
then it will rotate to the correct pocket.
second option is you can connect the carousel pocket number to the IO tool number and just use IO control to manage the tool numbers
there is lots of other stuff to learn but hopefully this is a start and helps a bit
i will try check back and see if you need any other help cheers
andrew
i have used classic ladder and the carousel component for toolchangers
on all future toolchangers i think i will use the carousel component and gcode subroutines they are awesome and really easy to check inputs and put all sorts of safety stuff into
but then classic ladder is good for just the few things that are really hard elsewhere like counters and timers lol
i have a few configs laying around but it is really hard to show and i am still learning so my configs are not very well documented haha
this video is where the light came on for me
couple of tips i struggled with
so you have a few options for connecting the carousel component.
you need to connect carousel enable to a digital output
eg if connected to digitat output 00 you type m64 p0 to turn it on
and then m65 p0 to turn it off
carousel must be turned off briefly before turning on.
eg
m65p0 (turn off carousel)
m64p0 (turn on carousel)
then you can connect the carousel pocket number to a digital analog output
if connected to digital analog output 00
m68 E0 Q4 (this will set value to 4 eg tool 4)
so you can test in MDI
m68 E0 Q4
m65p0
m64p0
this will set the FWD or REV motor pin on
when set in index mode which is what i use the carousel component rotates until it sees the home sensor and then the next pocket sensor
then it will rotate to the correct pocket.
second option is you can connect the carousel pocket number to the IO tool number and just use IO control to manage the tool numbers
there is lots of other stuff to learn but hopefully this is a start and helps a bit
i will try check back and see if you need any other help cheers
andrew
Please Log in or Create an account to join the conversation.
04 Jul 2024 11:34 #304387
by Donb9261
Replied by Donb9261 on topic Looking for example clp for ATC random tool changer Mill with/without carousel
I am late to the party but would like to add some of my experience if it helps.
Typically, you would want to have some means to store the values of the current pocket ready, the tool number in that pocket, and whether the tool in the spindle is equal to the first 2 if power is lost. You would do this via some parameter that is written on LCNC exit and read into memory at startup. In LCNC, these parameters are stored in the var file. User assigned variables in RS274 GCODE are 31-5000 in LCNC. Typically in most controls outside the LCNC world 30-100 are volatile, while 500-999 are non-volatile. Meaning they are persistent.
With that, I would create a set of variables in the ATC routine that stores the tool numbers by pocket numbers in the drum, and also the value of the tool loaded in the spindle in thses variables. Given LCNC allows up to 5000, I would use(assuming a 12 station drum) 4000 ~4014. 4000 is the current tool in the spindle. 4001 is the current tool in the slot facing the spindle. 4002 is the current slot number/pocket number. The balance would be the slots.
Once the tool is loaded in the spindle, the value for the pocket it came from should become 0. If I have tool 1 in the spindle 4000 = 1. If it came from slot 6 and it is facing the spindle or tool arm, then 4001 = 0. 4008 = 0. If I call tool 3 and it is in slot 9 and tool 6 was in the spindle, then the drum should rotate to pocket 9, see that tool 3 is there via 4011 = 3, swap tools, 4011 = 6, 4000 = 3, 4001 = 6.
This method allows for one to assign the correct values via MDI in the event the coordination of the tools and pockets is lost because power was lost before the file was written. You can also call a python sub routine that once the tool change cycle completes writes the file but this is difficult and must be very precise.
Example:
(Assign the tool number of the spindle)
#4000 = 1
(Assign the tool number in the slot at the ready)
#4001 = 3
etc....
You can test this by assigning the values in MDI. Power of LCNC. Open the var file for your profile. Check to see the var number to the left and the value stored on the right. It should be what you assigned in MDI in the file. ex... #4004 = 10. Slot 2 has tool 10 in the slot will appear as:
~ other vars...
4000 10
~other vars
in the var file.
Hope that helps.
Typically, you would want to have some means to store the values of the current pocket ready, the tool number in that pocket, and whether the tool in the spindle is equal to the first 2 if power is lost. You would do this via some parameter that is written on LCNC exit and read into memory at startup. In LCNC, these parameters are stored in the var file. User assigned variables in RS274 GCODE are 31-5000 in LCNC. Typically in most controls outside the LCNC world 30-100 are volatile, while 500-999 are non-volatile. Meaning they are persistent.
With that, I would create a set of variables in the ATC routine that stores the tool numbers by pocket numbers in the drum, and also the value of the tool loaded in the spindle in thses variables. Given LCNC allows up to 5000, I would use(assuming a 12 station drum) 4000 ~4014. 4000 is the current tool in the spindle. 4001 is the current tool in the slot facing the spindle. 4002 is the current slot number/pocket number. The balance would be the slots.
Once the tool is loaded in the spindle, the value for the pocket it came from should become 0. If I have tool 1 in the spindle 4000 = 1. If it came from slot 6 and it is facing the spindle or tool arm, then 4001 = 0. 4008 = 0. If I call tool 3 and it is in slot 9 and tool 6 was in the spindle, then the drum should rotate to pocket 9, see that tool 3 is there via 4011 = 3, swap tools, 4011 = 6, 4000 = 3, 4001 = 6.
This method allows for one to assign the correct values via MDI in the event the coordination of the tools and pockets is lost because power was lost before the file was written. You can also call a python sub routine that once the tool change cycle completes writes the file but this is difficult and must be very precise.
Example:
(Assign the tool number of the spindle)
#4000 = 1
(Assign the tool number in the slot at the ready)
#4001 = 3
etc....
You can test this by assigning the values in MDI. Power of LCNC. Open the var file for your profile. Check to see the var number to the left and the value stored on the right. It should be what you assigned in MDI in the file. ex... #4004 = 10. Slot 2 has tool 10 in the slot will appear as:
~ other vars...
4000 10
~other vars
in the var file.
Hope that helps.
Please Log in or Create an account to join the conversation.
- Configuring LinuxCNC
- Advanced Configuration
- ClassicLadder
- Looking for example clp for ATC random tool changer Mill with/without carousel
Time to create page: 0.087 seconds