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

Reply via email to