My experience with an ancient (1984) Heian router with a Fanuc 11M control and 5 spindles. These big old routers were usually built this way to be used more like tool changers, but they could also be used to route multiple parts simultaneously. The multiple spindles were controlled with M codes that would enable/disable the spindle(s) that respond to the spindle start/stop commands. Each spindle is also raised and lowered into the milling position by M-codes. So if you wanted spindles 1,3, and 5 to cut, you issued the M codes to enable each of those spindles, then you would lower down to the cutting position with each of their lowering commands, then you could issue the spindle start command and all three of those spindles would start. There was also an M code that raised all of the spindles at once. This same functionality can easily be accomplished with the current LinuxCNC version with some custom M-codes and some hal logic. (It is all done in the PLC on that old machine.)
The other Machines that I have some experience running with multiple spindle capability are some Komo cnc routers. I don't have any direct experience here because all of our Komo machines only have a single router spindle with tool changer, plus a multiple drill boring head. But the Komo manuals do cover machines that had multiple spindle options including tool changers for each spindle. These machines also use Fanuc controls (although in the past they offered some Siemans controls for a couple of years). This manufacture chose to use T codes to control the multiple spindles. There are T commands that enable each spindle (or drill spindle). To start a spindle you must first enable that spindle with the appropriate T code. The router spindles are T101, T102, T103... That will lower the spindle to the routing position and enable it to respond to the M3 Sxxxxx command. An M5 command will stop all of the spindles and raise them to the inactive position. Tool changes are commanded like this T1001 M6 changes to tool #1 on the 1st spindle, T3012 M6 changes to tool #12 on the 3rd spindle. The multiple drill boring heads are also commanded by a set of T codes, T3xx will command down a specific drill in one of the drilling heads. There can be up to 4 different drilling heads each with up to 20 tools. To command down more than one drill just issue multiple T3xx commands (or you can use a series of binary commands). Then use M3 Sxxxx to start them. I wonder if that system could be replicated by remapping the T commands in Linuxcnc now? For the above example router machines there is nothing truly multiple spindle about the controls on those machines. As far as the control is concerned there is only one spindle. The multiple spindle part is all done with PLC logic outside of the real control system. (Although the PLCs in the newer Fanucs machines like our Komos is built into the control). Now when you start adding in parallel processing of separate G-code, that is a whole other can of worms (quite squirmy ones to I bet.) Todd Zuercher P. Graham Dunn Inc. 630 Henry Street Dalton, Ohio 44618 Phone: (330)828-2105ext. 2031 -----Original Message----- From: andy pugh <bodge...@gmail.com> Sent: Sunday, September 16, 2018 9:57 AM To: EMC developers <emc-develop...@lists.sourceforge.net>; Enhanced Machine Controller (EMC) <emc-users@lists.sourceforge.net> Subject: [Emc-users] Multi-spindle support After some consultation with the release manager I have decided to push multi-spindle support in to the current development branch. A side-effect of this is that motion.spindle.xxxx pins all become spindle.0.xxxxx pins. (and so on for extra spindles.) When I push it this will be added as a refinement to the update_ini automatic script so configs should update automatically. To add more spindles just add "num_spindles=" to the end of the "loadrt motmod" line in HAL, and add a [TRAJ]SPINDLES to the INI. It is imperative that these match or trouble will ensue. The spindle to use is controlled by the $ character (as all the other letters were in use). This doesn't match any commercial control, but should make remapping to match any specific control relatively easy. The current behaviour of LinuxCNC is that spindles have a speed even when off. To see this try M3 S100 followed by M5, then M3 with no S-word. You will see that the spindle re-starts with the previous speed. This becomes rather more obvious with multi spindle. S10 $0 S100 $1 S1000 $2 Will set the speeds of each spindle, but not start them. Then M3 will start them all simultaneously. M4 will reverse them all. M5 will stop them all. M4 $2 will only reverse spindle 2 M5 $1 will only stop spindle 1. G76 $1 ..... will perform a threading cycle synched to the encoder feedback on the spindle.1.revs pin. A preview version (merged with current master) can be tried in the "andypugh/multispindle-master" branch. Questions... What should be the effect of a $ on a line by itself? Should we allow multiple $? eg M5 $0 $2 to stop two spindles? At the moment there is an internal concept of "current spindle". Perhaps there should instead be a spindle mask and $ should be interpreted to set this mask prior to parsing the S and F words in the block. Has anyone used multi-spindle G-code on a different control? -- atp "A motorcycle is a bicycle with a pandemonium attachment and is designed for the especial use of mechanical geniuses, daredevils and lunatics." — George Fitch, Atlanta Constitution Newspaper, 1916 _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users