On 07/19/2020 03:59 PM, Matthew Herd wrote:
Hi all,

I made my first attempt at using spindle synchronized motion for a rigid 
tapping operation on my Bridgeport BOSS mill today and it didn’t go as planned. 
 It has a spindle encoder and a Pico USC board.  I can use the spindle to read 
encoder counts and spindle position (I already use PYVCP to show me spindle 
speed).  However, G33.1 produces unusual results and doesn’t seem to work 
properly.  It appears that the down feed works properly, but the spindle either 
never reverses or reverses very slowly and the synchronized motion on retract 
doesn’t appear to reliably track the spindle motion.  In several tests, it 
either retracts while still turning clockwise, appears to retract faster than 
the counter-clockwise speed would allow, or just doesn’t retract at all.  
According to the g code reference page, motion.spindle-at-speed and 
encoder.n.phase-Z must be connected in HAL.  I don’t have spindle-at-speed 
hooked up, but am using rigid tapping sample HAL from Pico Systems, with the 
encoder connected to motion.spindle-revs.
encoder.n.phase-Z does not exist on the Pico boards. Z (index) cannot be seen directly, it can only be detected by index-enable going from true to false, and the encoder position count going to zero.

Wow. First, make sure that the value fed to scale the spindle encoder is correct. It should be equal to the number of quadrature counts/rev of the spindle (4X the number of "lines" on the encoder). It should look something like this:
setp ppmc.0.encoder.03.scale 6912


The connection to LinuxCNC looks like this on my system :
net spindle-pos   ppmc.0.encoder.03.position   spindle.0.revs


The names might have been changed in newer versions.

You should look at ppmc.0.encoder.03.velocity with Halscope (or even Halmeter) to make sure this signal is properly registering the spindle rotation. With the correct scaling factor, velocity should equal 60 at 3600 RPM (60 revs/second) and ppmc.0.encoder.03.position should count up at 60 counts/second. If the velocity shows negative when the spindle is running "forward" then change the arithmetic sign of the encoder scale to a minus number. The velocity should show an opposite sign when the spindle direction is reversed, and the position should count in the opposite direction. If not, something is quite wrong with the encoder or how it is connected.


I attempted to troubleshoot using this references:
https://forum.linuxcnc.org/27-driver-boards/26275-spindle-encoder-on-pico-usc 
<https://forum.linuxcnc.org/27-driver-boards/26275-spindle-encoder-on-pico-usc>

I ran a halcmd sets on the spindle index enable and it reset counts to zero 
immediately.  spindle index enable remained false and fiddling with halscope 
wasn’t ever successful in showing a change from false to true while playing 
with G33 commands, etc.  I’m not sure what to try next.

the correct connection is :
net spindle-index-en ppmc.0.encoder.03.index-enable spindle.0.index-enable

All of the above examples assume USC channel # 3 is used for the spindle, if different change the .03. to
whatever is needed.

The spindle index is only enabled once at the beginning of the spindle synchronized move. I think the trajectory planner sets it true, and when the PPMC hardware detects a rising edge on the index input, it clears index-enable, and zeroes the position count. So, one part of the system sets this bit true, and the ppmc driver sets it false.

In general, if the index is not working, LinuxCNC should hang forever waiting for index-enable to go false. But, maybe if it is not hooked up at all, the behavior is different.

Jon

_______________________________________________
Emc-users mailing list
Emc-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/emc-users

Reply via email to