Hello all!
I have a project. I need to build a machine to make small wooden parts. They are simple parts, but they have tight tolerances for wood, and I need to be able to dial in changes in dimensions with software.
I've made two machines in the past that make these parts. The last one used 2 axis coordinated motion with a Yaskawa mp2300 controller (basically a PLC with coordinated motion) and servo motors. The coordinated motion is to cut one simple (but easily changeable) profile with a custom cutter. It cuts a short profile on the end of a long piece of wood, then I advance the wood forward and cut the part off with a separate spindle that has a cut-off saw on it. Then the cycle repeats. the parts are 15-17mm long, we get 100 or so out of each length of wood. A sensor watches for end of material, stops the cycle, and runs a drop scrap material routine. After tuning everything, I got to 1.8 second cycle times on my last machine.
I built those machines more than 10 years ago, and they ran production since then until we recently lost both of them in an act of god type scenario. They took me a year each to build since i did it from scratch and we had the time.
Now we'd like to get back into production ASAP, so I'm looking at buying a CNC mill to have a base to start with. Then I build a bunch of tooling/work holding on and above the table.
My worst-case scenario is I buy a mill and strip off its control, put on overpowered Yaskawa servos, and use the same MP2300. I am pretty confident I can make that project work, and the build time will be slightly faster than building from scratch. But it will still be a lot of work and seems pretty wasteful.
I would much prefer to buy a mill with a flexible enough control so that I can modify it for my application. it could be less work, and we get the benefit of an actual CNC mill to help us make our own tooling faster. But I'm unsure if the control will be fast and flexible enough for me. My program will look something like:
- Check input from the limit switch that the material is clamped,
- if so, move about 20mm at max feed rate to cut the profile along X and Y axes.
- Once move is complete and I know i am a certain distance away from the profile cutter, send output to unclamp material.
- about 100 ms later, we get a confirmation from limit switches that the material is unclamped
- feed part forward about 15mm using a custom-made feeder that is powered by a servomotor (4th axis)
- clamp material, wait for confirmation from the limit switch.
- Move 20-30 mm to cut off station, parts are cut off during the move.
- Rapid back to the start of the profile cut.
- Repeat.
I want each iteration to be less than 2.5 seconds. So if there is 50ms or so extra lag in the control for each check, that's fine. If it's more than 100ms each time that could start to stack up and be a problem.
Tormach was helpful enough to run some speed tests for axis motion, but couldn't give any specific info on I/O timing. They said the USB add-on I/O might exceed 100ms of lag between receiving a signal and starting motion. They said the I/O they use through the ethernet axis drives is faster, but there is only 1 output and 1 input left available. Ultimately they said they don't recommend the machine for my application. I doubt any mill manufacturer will though. Haas hasn't been willing to give me any info at all. Titans of CNC hasn't gotten back to me. I'm assuming manufacturers don't want the liability or to have to support some weird project like this.
It looks like the 1500mx uses ethercat drives for spindle and axes. So I think I will see their model and try to buy another matching drive and motor for the 4th axis feed unit . The-cut off spindle could be anything, but I'm considering making it a servo drive also. Maybe those two extra drives on the ethercat network will give me enough fast I/O for my clamps and stuff.
Resources and limitations:
- I have 20 years of experience as an industrial technician. Mostly repairing machines, old or weird stuff that my customers can't get support from a manufacturer. Cincinnati milacron, fanuc, custom machines, PLC retrofits, etc. I am very comfortable with ladder logic.
- My Gcode is weak. I mostly just use MDI to test out equipment and leave the part programing to my customers.
- I have never used LinuxCNC except a week or two ago when I installed it on an old PC just to poke around. I've installed and used Linux desktops a handful of times over the years, but it never stuck as my primary OS, so I am somewhat literate but mostly a Linux noob. But I am excited to learn LinuxCNC for future projects. I feel like I will be comfortable editing INI and HAL files once I've gotten more familiar with them. I'm fine with writing some simple Python scripts or whatever. Something like writing a custom hardware driver is probably beyond my capabilities. However, subbing out to a better software engineer is an option.
- For this project, I will have around $50k left to spend on parts after I buy a mill. Im estimating 300-400 hours of labor for me setting this all up. That includes building and testing all the clamps and workholding stuff. I should have plenty of budget for replacing axis servos if they aren't fast enough, building an auxiliary electrical cabinet, installing an auxiliary PLC if necessary, etc., whatever it takes.
My fear is that I will get too far down the road of modifying the existing control before I find some insurmountable limitations and have to start all over with the custom Yaskawa control option.
My questions for any pathpilot/linuxCNC experts out there:
- How doable do you think this would be on the pathpilot control that will come on a 1500mx?
- Are these controls as open as the linuxCNC that I downloaded (from linuxcnc.org/downloads)? Will I be able to easily get to a console prompt? Root access? is there a desktop environment, or can I install one? I've read some parts of Pathpilot are proprietary or obfuscated. Am I locked out of anything that will hinder me from these kinds of modifications?
- For this kind of fast, back and forth I/O stuff, would people suggest doing it all in Gcode? Like, just Mcodes assigned to outputs with inputs as finish signals? or should I try to use classic ladder? or M codes assigned to python scrpts? or an auxilary PLC that just gets a few timing signals from the CNC? any better ideas?
Thanks for reading.