# Troubleshooting the CNC spindle



## macardoso (May 18, 2021)

Ran into a bit of an issue yesterday and thought I might share my troubleshooting because I found it interesting.

My G0704 spindle is a custom design running an Alley Bradley MPL-A330P-MJ22AA AC Servo motor (1.8kW, 5000 rpm) and a 2098-DSD-020 servo drive (2kW).

This has been running for a few years really without issue, but yesterday when running a program the CNC would fault out when stopping the spindle for a tool change. This happened repeatedly and I had to stop what I was working on. The drive fault status goes to an input on the CNC so the program ESTOPs when there is a fault and displays an error message. When I opened the cabinet, the spindle drive would always be faulted on E10 - DC Bus Overvoltage.

The drives are powered at 240VAC and carry a nominal bus voltage of 325VDC. The DC bus overvoltage limit is 400VDC.

I just learned that the Ultra 3000 drives under the 3kW flavor do not have any DC bus shunting capacity so it can only absorb a small amount of energy which charges up the DC bus. The bus can only discharge by applying power to the motor or through natural resistive discharge (~80V/s).

Here is a graph of spindle speed (forwards is negative velocity the way mine is configured). The spindle decels from -5000 rpm to 0 rpm over ~800ms. During this time the DC bus (blue) charges up from ~330VDC to ~380VDC and then dissipates back to 330VDC.
	

		
			
		

		
	




Compare this with a similar trend, except this time the bus charges up past 400VDC and the drive trips on E10 - DC Bus Overvoltage and the commanded velocity (red) is programatically set to 0 rpm.




The Ultra 3000 specification manual states the drive (when powered at 230VAC) can absorb 51 Joules (J) of kinetic energy before the bus trips out on overvoltage. Since I power mine at 240VAC I can extrapolate the absorption capacity to be ~44.5J.




Using Solidworks, a quick approximation of the spindle + pulleys + servo motor rotational inertia to be ~0.008 lb*ft^2 (motor = 0.002847 lb*ft^2). When spinning at 5000rpm, this equates to a rotational kinetic energy of 46.21J. This is more than the 44.5J the drive can dissipate. The larger the tool installed, the higher this kinetic energy, although not by much.

I think I have gotten away without issue in the past because the spindle is approximately 90% efficient (10% of energy is dissipated in the belts and bearings as waste heat), so only 90% of the tool energy needs to be regenerated by the drive. I do not know why it has started causing issues now, perhaps something has loosened up and the spindle efficiency has increased.

Anyways, my short term solution is to increase the accel and decel time from 800ms to 3.2 seconds which should give the DC bus more time to naturally dissipate. If that doesn't work, I have a 2090-UCSR-A300 Active Shunt Module which can be added alongside the drive to offer 300W of continuous shunting capacity (4kW peak). This is more than enough to handle any spindle shunting needs.

Just thought this was an interesting exercise.

Mike


----------



## spumco (May 18, 2021)

I assume you're talking about this little bad boy?




That's a bummer it can't take a cheap passive resistor.  Odd... most of the VFD's and amps I've read about (or own) all have internal DC bus connections for a simple resistor until you get up to higher power models (>2-4kW).  The Ultra 3k seems backwards...

Some of the VFD's I've used have a feature to limit overvoltage trips.  You set the decel pretty aggressive, and the drive will attempt to slow the motor down as fast as you command... but it monitors the DC bus and reduces decel rate as the bus voltage approaches trip level.  Works great on my friend's big mill spindle (NT40 taper, lots of inertia, geared head) whei I was tuning the VFD for him.

Sadly, I don't see anything in the U3K manual about that sort of thing.

Something to consider... rigid tapping (assuming you do it).  Might want to air cut a few times if the drive is now doing a 3 second decel - the over-run may have changed enough to surprise you on a blind hole.

As usual, thanks for the education.

-R


----------



## macardoso (May 19, 2021)

spumco said:


> I assume you're talking about this little bad boy?
> 
> View attachment 366383
> 
> ...


Morning Ralph   

Yeah, that is exactly the guy I was referring to. It is a box, about the exact same size as an Ultra 3000 2kW drive and all it does is shunt bus voltage. This was made in the good ole' days when things were adjusted with potentiometers rather than software. Voltage goes too high, resistor goes on.

I've always assumed the small Ultra's had internal resistors with no capacity for external passive resistors, but I was wrong. The more I started to think about it though it makes sense. The resistor adds a ton of heat to the equation and if Rockwell felt they needed a full drive-sized heat sink and fan just for the shunt module, then I am willing to suspect there was no way (thermally speaking) that they could fit it inside the drive without making the drive larger. In fact, the frame 3 drive (3kw) is much larger than the frame 1 & 2, likely for this exact reason. If you decide you need bus shunting then you can add the 2090-UCSR-A300

Second, small servo drives are typically driving small motors and moving small loads quickly. These loads do not carry much kinetic energy. The drive need only be large enough to absorb the system kinetic energy because once you have stopped that motor, there is no more regeneration. That extra bus voltage would go right back into the motor on the next acceleration cycle which is very efficient. Servo applications are most commonly short cycles of rapid accel and decel. 

Now I am really pushing a worst case here. My drive (2kW) is the largest without DC bus shunting. I am running a 1.8kW motor which is pretty close to the largest you can run on this system. I am always running the servo at max speed (5000rpm), and I have an inertia mismatch of ~10:1 which is at the higher end of the recommended inertia for this motor. My estimation of the inertia is extremely rough, but I think I am within an order of magnitude of the correct answer. 

So if I were to have sized this system with a Rockwell motion guy from the beginning, they would have recommended the external shunt module because my rotating load carries more energy than the drive can absorb.

As far as your comment about limiting decel, that is a feature common to most VFDs, but servo drives are a different mentality. With a servo drive, you are tightly controlling position, velocity, or applied torque. If the position or velocity drifts away from the command then the drive faults out because you are out of process tolerance. So limiting decel based on bus voltage would work, but only until the motor fails to meet the decel target and faults. Some newer servo drives (and VFDs) really blur the line between servo and VFD. For example, the Kinetix 5700 (servo drive) can run induction motors open loop just like a VFD and the PowerFlex 527 (VFD) can run permanent magnet motors with encoders in a closed loop with servo motion control instructions.

While I did wire my control panel for true rigid tapping and hobbing, I have never once even tried to make it work. Needs a bit of scripting and it was more for fun than functionality. I would not try rigid tapping with the spindle running at a slow accel - good call.

Now I installed a 5th axis servo drive to my cabinet as a spare or additional future capacity. It sits right next to the spindle drive and has never been used. I might remove it and mount the shunt module there for the spindle...

-Mike


----------



## spumco (May 19, 2021)

Faster spindle decel and give up a future B-axis?  Decisions, decisions...


----------



## macardoso (May 19, 2021)

spumco said:


> Faster spindle decel and give up a future B-axis?  Decisions, decisions...


I haven't even used the A axis lol. Although I do have a big gearbox and rotary table for that.


----------

