Thanks. This clarifies a lot. One has to get acquinted with the HAL layer. Will need to do some more reading I guess.
Kirk Wallace wrote: > I haven't done a thorough study of this yet, I believe you only need to > satisfy these two signals: > "... > motion.spindle-index-enable I/O bit > For correct operation of spindle synchronized moves, this signal > must be hooked to the index-enable pin of the spindle encoder. > motion.spindle-revs IN float > For correct operation of spindle synchronized moves, this signal > must be hooked to the position pin of the spindle encoder. > ..." > from: > > http://www.linuxcnc.org/docs/html/config/emc2hal/emc2hal.html > > How you go about satisfying these signals may depend on your hardware. > For my HNC lathe, I originally had a pulse generator with index, but my > Pico UPC only had quadrature encoder inputs, so I had to install a > quadrature encoder. > > --- hnc_motion-3a.hal --- > "... > # report rev count to motion controller > newsig spindle-pos float > linksp spindle-pos ppmc.0.encoder.03.position > linksp spindle-pos motion.spindle-revs > ... > --- hnc_io-3a.hal > # connect index pulses to motion controller > ... > newsig spindle-index-enable bit > linksp spindle-index-enable <= ppmc.0.encoder.03.index-enable > linksp spindle-index-enable => motion.spindle-index-enable > ..." > > I had an option to use the hal component encoder: > > http://www.linuxcnc.org/docs/html/man/man9/encoder.9.html > > through my parallel port but this encoder isn't fast enough. > > The following may be out of date. I think some signal names have > changed, but here is an example from: > > http://cvs.linuxcnc.org/cvs/emc2/configs/nist-lathe/nist-lathe.hal?rev=1.6 > > "... > # counting the spindle encoder in software > loadrt encoder num_chan=1 > ... > # first we read parport inputs > addf parport.0.read base-thread > # update encoder counter > addf encoder.update-counters base-thread > ... > # capture axis and spindle positions > addf stepgen.capture-position servo-thread > addf encoder.capture-position servo-thread > # process motion commands coming from user space > addf motion-command-handler servo-thread > # run main motion controller > addf motion-controller servo-thread > ... > # end of basic machine > > ####################################################### > # Beginning of threading-related stuff > ####################################################### > > # spindle encoder > # connect encoder signals to encoder counter > newsig spindle-phase-A bit > newsig spindle-phase-B bit > newsig spindle-phase-Z bit > linksp spindle-phase-A => encoder.0.phase-A > linksp spindle-phase-B => encoder.0.phase-B > linksp spindle-phase-Z => encoder.0.phase-Z > > linkps parport.0.pin-11-in => spindle-phase-A > linkps parport.0.pin-12-in => spindle-phase-B > linkps parport.0.pin-13-in => spindle-phase-Z > > newsig homeswitches bit > linkps parport.0.pin-10-in => homeswitches > linkps axis.0.home-sw-in <= homeswitches > linkps axis.2.home-sw-in <= homeswitches > > # (that way thread pitches can be straightforward, > # a 20 tpi thread would multiply the encoder output > # by 1/20, etc) > setp encoder.0.position-scale 4096 > > # encoder reset control > # this signal is driven by the motion > # controller, TRUE for synced motion, FALSE the rest of > # the time. > # > # hook up motion controller's sync output > newsig spindle-sync bit > linkps motion.spindle-sync => spindle-sync > # needs to be inverted to connect to index enable > newsig spindle-index-en bit > linksp spindle-sync => not.0.in > linkps not.0.out => spindle-index-en > linksp spindle-index-en => encoder.0.index-enable > (might now be motion.spindle-index-enable) > > # report our revolution count to the motion controller > newsig spindle-pos float > linkps encoder.0.position => spindle-pos > linksp spindle-pos => motion.spindle-revs > ..." > > If I didn't need the speed, I may have been able to use my original > pulse generator by combining the spindle Forward/Reverse signals and > the pulse generator signal to derive the inputs for the motion.spindle > signals. > > It also has been mentioned in the past, that you if your commanded > spindle speed and actual spindle speed matched, you could derive the > position information from the spindle speed command. So you wouldn't > even need and encoder or pulse generator, just an index. > > On Sat, 2007-10-27 at 22:57 +0200, Geert De Pecker wrote: >> Hi, >> >> It is not quit clear to me what exactly is needed in order to do >> threading on the lathe with emc: >> >> Do you need a single synchronization pulse from the spindle to act as a >> base for the sync >> >> Or >> >> Do you need a sync pulse AND an encoder (eg 50 ppr) together? > > Yes. The spindle encoder index pulse starts the selected axes motion, > then the spindle encoder position pulses are the basis (electronic > gearing) for the axes motion. I found out that, for successive > synchronized motion commands, index is used only for the first command > and the position is passed to the successive commands. > >> Thanks for the clarification. > > Hopefully, others here will correct anything that I got wrong. > >> Is there aa doc somewhere that describes this? >> >> Thanks, >> >> Geert > ------------------------------------------------------------------------- This SF.net email is sponsored by: Splunk Inc. Still grepping through log files to find problems? Stop. Now Search log events and configuration files using AJAX and a browser. Download your FREE copy of Splunk now >> http://get.splunk.com/ _______________________________________________ Emc-users mailing list Emc-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/emc-users