How to build ATC Carousel in linuxcnc ?

More
26 Oct 2016 04:17 #82072 by mhdsi
Hi everybody !

I have my DIY Gantry CNC Mill with Carousel tool
Spindle ATC Columbo Iso25 and BOB with DB25 (LPT)
Carousel with 10 tool and sensor index with B Axis
I can configure Step and it working but i want upgrade to ATC machine
Please guide me build it with linuxcnc

Thank you !

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 08:44 #82079 by andypugh
You might find the HAL "carousel" component helpful:
linuxcnc.org/docs/2.7/html/man/man9/carousel.9.html

To see an example of how to use it you can open the LinuxCNC config-picker and look in the sample configs. Open sim/axis/vismach.vmc_toolchange/vmc_index to see a demo config. You can run it on your actual machain controller, it won't try to access any hardware. It has an animated 3D model of VMC to demonstrate it working.

It uses a line in the INI file to re-map the M6 command:
[RS274NGC]
...
REMAP= M6  modalgroup=6  prolog=change_prolog ngc=toolchange epilog=change_epilog

This calls the "toolchange.ngc" file (the other files mentioned are standard library files). The toolchange.ngc file is a G-code routine that controls the machine movements needed or the toolchange. Note that it is quite careful to make sure that it waits for confirmation before moving on, and makes a lot of use of the (abort, ) G-code "magic comment" to deal with problems.
o<toolchange> sub

M19 R0  ;align the spindle

; only unload the tool if there is a tool in the spindle
; This assumes that the carousel is already aligned correctly. 
; It is important to unload the tool before shutting down the machine. 

O100 IF [#<tool_in_spindle> GT 0]
    G53 G0 Z -100
    
    M64 P2 ; move arm in
    M66 P2 L3 Q5 ; wait for arm-in = true
    O104 if [#5399 LT 0]
        (abort, failed to move arm in)
    O104 endif

    M64 P3 ; release tool
    M66 P3 L3 Q2 ; wait for tool-released = true
    O105 if [#5399 LT 0]
        (abort, failed to release tool)
    O105 endif

O100 ENDIF

    G53 G0 Z0

O200 IF [#<selected_tool> GT 0]

    M65 P1 ; unlock carousel
    M66 P1 L4 Q1 ; wait for locked=false
    O106 if [#5399 LT 0]
        (abort, failed to unlock carousel)
    O106 endif

    M68 E0 Q#<selected_pocket> ;set the carousel to move to the right pocket

    M64 P0 ; start carousel
    G4 P2
    M66 P0 L3 Q60 ; wait for carousel finished
    O107 if [#5399 LT 0]
        (abort, failed to align carousel)
    O107 endif
    M65 P0; stop carousel
    M64 P1 ; lock carousel
    M66 P1 L3 Q1 ; wait for locked=true
    O108 if [#5399 LT 0]
        (abort, failed to lock carousel)
    O108 endif

    M64 P2 ; move arm in (might already be in)
    M66 P2 L3 Q5 ; wait for arm-in = true
    O109 if [#5399 LT 0]
        (abort, failed to move arm in)
    O109 endif

    G53 G0 Z-100 ; pick up the tool

O200 ENDIF 

M65 P3 ; clamp tool
M66 P3 L4 Q2 ; wait for tool-released = false
O110 if [#5399 LT 0]
    (abort, failed to clamp tool)
O110 endif

M65 P2 ; move arm back out
M66 P4 L3 Q5 ; wait for arm-out = true
O111 if [#5399 LT 0]
    (abort, failed to move arm in)
O111 endif


o<toolchange> endsub [1]


M2

You say that you have the carousel configured as a B-axis. You could keep it like that, an move it in G-code, or use the carousel component to control it.
If you keep it as a B-axis you will probably need to use the index switch as a home switch and add it to the home sequence. The B-axis will appear in the GUI, and you will be able to jog it. Which might actually be useful, though not terribly neat.
The following user(s) said Thank You: tivoi, Lcvette, mhdsi

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 13:54 #82084 by eneias_eringer
Look at my!!!



I use subroutines like Andypugh post !!

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:36 #82093 by mhdsi
Thank Andypugh !

I can't config output port for Arm in/out, sensor Arm in/out, Carousel index, Tool released/clamp, sensor tool released/clamp

Thank you !

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:38 #82094 by andypugh
The point is, it's G-code. You can set up any sequence you need.

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:38 - 26 Oct 2016 16:57 #82095 by mhdsi

eneias_eringer wrote: Look at my!!!



I use subroutines like Andypugh post !!


I've seen it many times before
It is my expectation :D
Can you share your configuration?
Last edit: 26 Oct 2016 16:57 by mhdsi.

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:40 #82097 by mhdsi

andypugh wrote: The point is, it's G-code. You can set up any sequence you need.


Can you give me an example of that ?

Thank you !

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:44 #82098 by andypugh

mhdsi wrote: Can you give me an example of that ?


The file posted earlier was an example. Without knowing anything at all about your machine it's hard to think of any useful second example.

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 16:54 #82102 by mhdsi

andypugh wrote:

mhdsi wrote: Can you give me an example of that ?


The file posted earlier was an example. Without knowing anything at all about your machine it's hard to think of any useful second example.


Hi Andypugh
I can build M6 macro on Mach3
I understand all the process of tool changer, and understand your example

what I need's how to configure port because i can't config output port for Arm in/out, sensor Arm in/out, Carousel index, Tool released/clamp, sensor tool released/clamp
I use linux just days

Thank you !

Please Log in or Create an account to join the conversation.

More
26 Oct 2016 17:05 #82103 by andypugh

mhdsi wrote: what I need's how to configure port because i can't config output port for Arm in/out, sensor Arm in/out, Carousel index, Tool released/clamp, sensor tool released/clamp


Those are using G-code digital inputs ans ouputs:
linuxcnc.org/docs/2.7/html/gcode/m-code.html#mcode:m62-m65

Those are connected to hardware by one of the HAL files in the config. If you ran the demo then you will now have all the files in your ~/linuxcnc/configs folder, but the HAL file for the changer looks like this:
github.com/LinuxCNC/linuxcnc/blob/master...toolchange_index.hal
If you are using a B-axis then you will have more G-code and less HAL to control things.
The following user(s) said Thank You: mhdsi

Please Log in or Create an account to join the conversation.

Time to create page: 0.101 seconds
Powered by Kunena Forum