Benchman XT 20 tool ATC

05 Jan 2017 22:37 - 06 Jan 2017 00:56 #85311 by MacGalempsy
The Benchman XT VMC was manufactured by Light Machine Corp and has several configurations using a common chassis. The most common variations between the models are spindle type, ATC and 4th axis kit. Once common issue with these units is the failure of the In-Move controller system, which is how many of us have ended up in the LinuxCNC workspace. The cards are obsolete and are difficult (at best) to source. When they are available the price can be well over $1000US. In another thread , the discussion has been focused on learning the general details about the system and how to retrofit the machine to utilize LinuxCNC at a minimal cost. That thread includes schematics, PID tuning, controller setup, and other hard to find information. You are encouraged to start there. Since that thread is now over 150 posts spanning several years of discussion, we have decided to start this thread to discuss configuring the ATC.

As mentioned above, the purpose of this thread is to unify the effort towards getting the Benchman 20-tool ATC functional, so that work effort is marginalized for future retrofitters. The idea is to standardize HAL and ClassicLadder variables and programming, so that minimal changes are needed to get it up and running. Steve_a is using a Kflop controller, and I am using a Mesa card configuration, so the results will obviously be biased towards these two platforms. We aim to set things up so that the user only has to modify the controller card variables in the HAL file for full integration with LinuxCNC. When the project is complete, the sequence should look something like this ! Please remember we are trying to aim this discussion towards novice users, and any insight is always welcomed and appreciated!

Suggested Background Reading
ClassicLadder Manual
ClassicLadder Programming
ClassicLadder Examples
JT's Turret Sim

System and Mechanical Components
The system is a 20 tool turret, with various electrical and pneumatic components.

Electrical components:
1) Spindle motor
2) Spindle encoder
3) Shaft encoder
4) Low Air Pressure Alarm
5) Solenoid valve 1 - Turret Down
6) Solenoid valve 2 - Turret Right
7) Solenoid valve 3 - Tool holder Up
8) Solenoid valve 4 - Power Draw Bar Open
9) Hall effect sensor 1 - Power Draw Bar Open
10) Hall effect sensor 2 - Spindle in position
11) Limit switch 1 - Turret Up
12) Limit switch 2 - Turret Down
13) Limit switch 3 - Turret Left
14) Limit switch 4 - Turret Right
15) Limit switch 5 - Tool holder Down
16) Limit switch 6 - Tool holder Up
17) Panel Button 1 - Platter (Carriage) Up/ Down
18) Panel Button 2 - Index Platter (Manually Change to the next tool)
19) Panel Button 3 - Open/ Close Power Draw Bar

Pneumatic Components:
17) Actuator 1 - Turret Up/Down
18) Actuator 2 - Turret Left/Right
19) Actuator 3 - Tool Holder Down/Up
20) Actuator 4 - Power Draw Bar Closed/ Open
21) Air Pressure Regulator
Last Edit: 06 Jan 2017 00:56 by MacGalempsy. Reason: Added electrical components
05 Jan 2017 23:55 #85317 by andypugh
Have you looked at the config sim/axis/vismach/vmc-toolchange?

That is an example config using the carousel component with the tool change sequence written as a G-code subroutine.

If the tool change needs axis movements then this is likely to be rather easier (you can't really move axes from Classic Ladder).
The following user(s) said Thank You: MacGalempsy
06 Jan 2017 00:57 - 06 Jan 2017 01:11 #85318 by MacGalempsy
Thank you Andy for pointing out that package. As this is my first time attempting to setup a tool changer in LCNC, anything is helpful.
From the little understanding that I have, the envisioned approach recognizes the carousel as an axis and the z-axis will need to go to the home position. The axis will home at the machine startup just like the others. Tool pocket locations are set to encoder values (pocket # = n/360°) which are described as HAL variable names then referenced in Ladder when the tool request is made. It appears a further looking into the Carousel component is also needed.
Last Edit: 06 Jan 2017 01:11 by MacGalempsy. Reason: Rewritten response
10 Jan 2017 03:17 - 11 Jan 2017 22:19 #85555 by MacGalempsy
Hey folks,
Here are the initial variables for the classic ladder program, so far. The "near" component will probably be used once we get to the point where the turret is rotating to individual pocket numbers. So for now, it is being kept in mind. Most of these variables seem like their parts in the program will not be so difficult, such as the pins that are obvious NO, NC, and outputs. The variables in which help is needed are: z-prepare (move z axis into the tool change position), z-prepared (feedback to show the z-axis move to the tool position is completed), and how to move to the positions of each tool pocket. Unfortunately, the only feedback on the turret rotation is the quadrature encoder, so i'm not sure if the carousel component will work with this. Andy mentioned custom .ngc files in his post, so maybe that is the way to go with the axis movements.

1- net tool-prepare-loopback iocontrol.0.tool-prepare => iocontrol.0.tool-prepared
2- net tool-change-start iocontrol.0.tool-change =>
3- net spindle-index-feedback spindle-hall-effect-detector =>
4- net z-prepared z-in-position =>
5- net turret-up-feedback turret-up-endstop
6- net turret-down-feedback turret-down-endstop =>
7- net turret-left-feedback turret-left-endstop =>
8- net tool-holder-down-feedback tool-holder-down-endstop =>
9- net tool-holder-up-feedback tool-holder-up-enstop =>
10- net power-drawbar-feedback power-drawbar-hall-effect-detector =>
11- net turret-prepare turret-find-home =>

12- net tool-change-done classicladder.0.out-00 => iocontrol.0.tool-changed
13- net spindle-index classicladder.0.out-01 => vfd-spindle-index
14- net z-prepare classicladder.0.out-02 => send-z-home
15- net turret-homed classicladder.0.out-03 =>
16- net turret-encoder-reset classicladder.0.out-04 => hm2_5i25.0.encoder.04.reset
17- net turret-motor-on classicladder.0.out-05 => turret-motor

18- net tool-number-current iocontrol.0.tool-number => classicladder.0.s32in-00
19- net tool-number-next iocontrol.0.tool-prep-number => classicladder.0.s32in-01
20- net turret-encoder-count hm2_5i25.0.encoder.04.count => classicladder.0.s32in-02
21- net turret-encoder-position hm2_5i25.0.encoder.04.position => classicladder.0.s32in-03
Last Edit: 11 Jan 2017 22:19 by MacGalempsy. Reason: Struck out some of the now known, unknowns
10 Jan 2017 13:49 #85569 by BigJohnT
Hey Mac,

If you have an absolute encoder on the turret this might help a bit.

The following user(s) said Thank You: MacGalempsy
11 Jan 2017 22:16 #85626 by MacGalempsy
Just a quick entry to the log for making headway with the project, mostly so I don't forget. A major thanks for the insight to JT.

Everything seemed to be working out, except the z-axis movement to move the spindle into the tool change position. Initially, the line of reasoning was to make use classicladder to send an axis movement, then have axis send an in-position signal back to classicladder. However, JT pointed out this link to the INI description. One line in the INI file TOOL_CHANGE_QUILL_UP = 1 will move the z into the tool change when a tool change is requested. This is awesome because it is one less thing to figure out how to do in classicladder. HA!
18 Jan 2017 12:13 #86045 by andypugh

MacGalempsy wrote: Initially, the line of reasoning was to make use classicladder to send an axis movement, then have axis send an in-position signal back to classicladder.

I am fairly sure that CL can't send axis motion commands. (This is why my preferred toolchanger approach is a G-code subroutine).
Time to create page: 0.155 seconds
Powered by Kunena Forum