Spindle Capability
SpindleCapability (API) describes the energy, torque, power, and thermal envelope of a machine spindle. It is loaded as XML (.SpindleCapability files under Resource/SpindleCapability/) and lives on SpindleCapability (API) as part of the project equipment; the run reads the same object through SpindleCapability (API), and one written there on the face LocalProjectService.MachiningEquipment hands out is written to the setup. This page explains what the model represents physically and how the per-step ratios on a machining step are derived.
For editing values interactively, see Spindle Capability Page. For empirical validation of the resulting power numbers against Fanuc ServoGuide, see Spindle Power Evaluation.
Boundary curves: continuous vs instantaneous

A typical spindle datasheet chart (FANUC aT12/12000i, shipped as FANUC-aT12-12000i.default.SpindleCapability): torque (N-m) and power (kW) plotted against spindle speed. The S1 Cont. curves are the continuous boundary; the S3 60% curves are a short-duration rating, 6 minutes of load in each 10-minute duty cycle. HiNC stores these curves keyed by workable duration: the shipped file takes the power from the chart's printed ratings and power lines and the torque from its drawn torque curves, keeping both although the drawn torque curves above 1,500 rpm are not the torque of the chart's own power lines, and reads the S3 60% curves as 6 minutes.
The capability stores two dictionaries keyed by workable duration (in minutes), mapping spindle speed to the maximum power or torque the spindle can deliver for that duration:
- WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW (API)
- WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm (API)
Two duration keys are special:
PositiveInfinity— the continuous boundary. The spindle can run at any (speed, value) point on this curve forever without overheating. Industry usage often calls this the S1 rating.- The smallest finite key (e.g.
15) — the instantaneous boundary. The spindle can run at any (speed, value) point on this curve only for that workable duration before the temperature ceiling is reached.
A capability typically also has intermediate keys (e.g. 60 minutes) which document the spindle's published rating curve.
Note
Why duration-keyed and not just two curves?
The duration key serves two roles. The contour values give peak load capability (used by the ratio computation, see below). The duration values implicitly encode the thermal time constants (used by the thermal envelope, see further below). One family of curves drives both.
If GearShiftSpindleSpeed_rpm (API) is set, the thermal envelope (below) reads each of its two power contours as two segments split at that speed and takes only the segment the current spindle speed lies in. The four ratio boundaries are interpolated over the whole contour, whatever the gear shift speed, but they are read together with the thermal envelope: at a spindle speed on whose side of the gear shift speed either of those two power contours has no point, no spindle limits can be read. A play, a step-physics recompute and an NC optimization take such steps without them: the spindle temperature is carried over from the step before, the four ratios of the steps that cut read NaN, the optimization skips its spindle torque and power constraints on them, and each says so once — a play in a step warning on the first step of a run of such steps (Spindle-Limits--Unreadable), a recompute under --ChainWarning, an optimization under NcOpt-SpindleSpeed--Warning. So give the continuous and the shortest-duration power contours points on each side of the gear shift speed, with a power above zero among them: a side that holds nothing but a point at zero power, as with a gear shift speed below the contours' second point, leaves the thermal envelope nothing to infer from at those speeds (see Thermal envelope). Beyond a contour's end points, interpolation uses nearest-neighbour clamping rather than extrapolation.
How the four ratios are computed
At a step's spindle speed, SpindleSpeedCache (API) interpolates each of the four contour-based curves and yields four scalar boundaries. A step's ratios are computed from them whenever they are read, against the capability as it is then:
| Boundary (denominator) | Source contour |
|---|---|
MinInsistentRatioSpindleTorqueBoundary_Nm |
smallest-key entry of the torque dictionary, interpolated at current rpm |
InfInsistentRatioSpindleTorqueBoundary_Nm |
∞-key entry of the torque dictionary, interpolated at current rpm |
MinInsistentRatioSpindlePowerBoundary_W |
smallest-key entry of the power dictionary, interpolated at current rpm |
InfInsistentRatioSpindlePowerBoundary_W |
∞-key entry of the power dictionary, interpolated at current rpm |
The four MachiningStep ratios are then divisions:
The torque ratios and the power ratios measure different things: MaxAxialTorque_Nm is the largest axial torque within one spindle revolution, and the input power comes from the power averaged over that revolution. So the torque dictionary and the power dictionary are two separate limits. Fill each from the spindle's own data, the torque curves from its torque ratings and curves and the power curves from its power, also where the two do not convert into each other by \(P = T\omega\): a spindle's chart or table may give a torque above or below the torque of its power, and the shipped files keep such torque as published. Where the data give no torque, take the torque of the power curve.
Because the continuous boundary is as a rule lower than (or equal to) the short-duration boundary, the corresponding Continue- ratio is as a rule greater than (or equal to) its Max- counterpart for the same load (a vendor's two curves may cross by a hair near the top speed):
- A
Max-ratio above 100% means the spindle is overdriven instantaneously and will trip thermal protection within the rated short duration. This is the criterion MaxSpindleTorqueRatio (API) and MaxSpindlePowerRatio (API) use to flag tool breakage on Process Machinability. - A
Continue-ratio above 100% means the spindle cannot sustain this load forever — short bursts may still be safe. Useful for pacing long operations rather than predicting immediate failure.
Input power vs output power
The power numerator above is input power (energy entering the spindle), not output power (energy reaching the cutting end). They are related by the spindle's energy efficiency:
\(\text{inputPower\_W} = \frac{\text{AbsAxialPower\_W}}{\text{EnergyEfficiency}}\)
— where EnergyEfficiency is EnergyEfficiency (API) and AbsAxialPower_W is what the cutting actually demands. The lost fraction \((1 - \text{EnergyEfficiency})\) becomes heat that the thermal envelope has to dissipate.
Spindle Power Evaluation documents the empirical justification for this conversion against measured Fanuc ServoGuide TCMD data.
Dry-run idle power
Even when the cutter is in air, a turning spindle dissipates power as bearing friction and aerodynamic windage. HiNC models the friction as a term linear in the spindle speed \(S\) (rpm) and the windage as a cubic term, and caps the sum at the loss the spindle sheds on its continuous rating:
in watts, where:
- \(a\) is DryRunFrictionPowerCoefficient_mWdrpm (API) in mW/rpm, 4.82 by default.
- \(b\) is DryRunWindagePowerCoefficient_pWdrpm3 (API) in pW/rpm³, 90 by default.
- \(\eta\) is EnergyEfficiency (API), and \(P_\text{cont}(S)\) is the continuous (
PositiveInfinity) power curve at \(S\), or the longest-duration curve when the capability has no continuous one. A spindle that can hold its continuous rating forever loses less than that rating's loss turning empty, so a larger value is clamped there.
The friction term dominates at low speed and the windage term at high speed; GetDryRunPower_W(double) (API) evaluates the formula. The spindle draws dry-run power only while it turns, at a speed under M03 or M04. After M05 the S value stays modal but the spindle is stopped, and before the first M03 or M04 it has not started; neither draws any.
The default coefficients are rough estimates from published studies of bearing friction and gear windage, not measurements of a spindle; at 18,000 rpm they give 612 W. Fit them to your spindle, as Fitting the dry-run coefficients shows, before comparing power or energy with the machine.
The thermal envelope (below) uses the larger of the dry-run power and the cutting loss, so the spindle keeps warming up during air moves.
Spindle meter power and energy
The input power above leaves the dry-run power out: in air it is 0. A power reading on the machine shows the output power plus the spindle's loss, and the loss is the larger of the dry-run power and the efficiency loss — the same loss the thermal envelope heats the spindle with:
In air the output power is 0 and the meter power is the dry-run power. In a heavy cut the efficiency loss is the larger, and the meter power equals the input power. A stopped spindle reads 0.
Each step reports this as SpindleMeterPower_W (API). AccumulatedSpindleMeterEnergy_kWh (API) sums it times the step duration over the steps played, which is the spindle energy of a part with the air moves included. AccumulatedSpindleEnergyConsumption_kWh (API) sums the input energy of the cutting alone.
- The meter power reads the current spindle capability, while the two accumulated energies and the spindle temperature are stored step by step as the program plays. After editing the capability, recompute the finished steps to bring them up to date; a replay is needed only where the recompute refuses, as it does for a run played with physics turned off.
- A step that cuts without a physics result, with physics turned off, has no meter power and adds nothing to the energy.
- A capability without any power curve, or whose longest-duration power curve has no points, has no cap to take, so a turning step has no meter power either.
- A load meter that shows a percentage shows it of a rating. Multiply by that rating, as the controller documents it, to compare in watts.
Fitting the dry-run coefficients
Read the spindle's power with the spindle turning empty, once the reading has settled, at one or more speeds \(S_i\) in rpm, giving \(P_i\) in watts. Fit in watts first, a friction term \(f\) in W/rpm and a windage term \(w\) in W/rpm³, then convert.
- Two or more speeds. Fit \(f\) and \(w\) to \(P = f\,S + w\,S^3\) by least squares. With exactly two speeds the fit is exact: \(w = (P_1/S_1 - P_2/S_2)/(S_1^2 - S_2^2)\) and \(f = P_1/S_1 - w\,S_1^2\). If one comes out negative, set it to 0 and fit the other alone.
- One speed. Keep the friction coefficient at its default, \(f = 10^{-3}\,a\) (4.82 × 10⁻³ W/rpm), and fit the windage alone: \(w = (P - f\,S)/S^3\). If the reading is below the friction term \(f\,S\) by itself, set \(w\) to 0 and \(f\) to \(P/S\).
- Convert. The friction coefficient is \(a = 10^3\,f\) in mW/rpm and the windage coefficient \(b = 10^{12}\,w\) in pW/rpm³.
- Check the cap. At the highest speed you read, \(f\,S + w\,S^3\) should stay under \((1 - \eta)\,P_\text{cont}(S)\). Where it does not, the dry-run power is clamped and the meter power in air reads less than the machine: the energy efficiency is set too high, or the continuous curve too low, for this spindle.
Enter the two coefficients under Dry-Run Coefficients in Spindle Capability Setup.
Thermal envelope
The same SpindleCapability also drives a thermal model of the spindle body. You do not set heat capacity or convection directly — the thermal model is auto-calibrated from your existing inputs.
- The continuous (
∞-key) curve plus WorkingTemperatureUpperBoundary_C (API) together determine how fast the spindle dumps heat at steady state. Physically: the continuous rating is, by definition, the load the spindle can hold forever without exceeding the working-temperature ceiling — so HiNC infers the steady-state heat-loss capacity from this constraint. - The shortest-duration curve plus its duration key together determine how much heat the spindle can absorb before reaching the ceiling. Physically: the short-duration rating is, by definition, the load that brings the spindle to the ceiling exactly within that workable time — so HiNC infers the body's effective thermal mass from this constraint. For an S3 rating, HiNC takes the load time of one 10-minute cycle as that workable time (6 minutes for S3 60%); from a cold start an S3 load holds longer than that, so the modelled spindle warms faster than the machine.
Both inferences need something to work from: a rated power, a heat loss that can be worked out from it, a temperature range to warm through and a duration. At a spindle speed where the continuous or the shortest-duration curve holds no power above zero on that speed's side of the gear shift speed, with an energy efficiency of 0 or 1, with a working temperature upper boundary that is not above room temperature, or with a shortest duration key of 0, one of these is missing: the body temperature is then carried over from the previous step instead of being modelled, and a warning says so.
The second inference also needs the shortest-duration curve to carry more power than the continuous one: a load the spindle can hold forever never reaches the ceiling, so its duration tells nothing about the thermal mass. Where the shortest-duration curve carries no more power than the continuous one (a contour added on the Spindle Capability page starts as a copy of the selected one), or the capability has no finite-duration curve at all, the body temperature is still modelled, but how fast it rises and falls does not come from your data, and with no finite-duration curve it does not move at all. A play says so once per run of such steps in a step warning (Spindle-HeatCapacity--Underived), and a recompute once under --ChainWarning. Give the shortest-duration curve the power of a short-time rating.
What this means for you: refining the contour data (more accurate (speed, power/torque) points, better matched duration keys) automatically improves both load-capacity prediction and thermal-response speed. There is no separate thermal parameter to tune.
Per-step temperature outputs
At each step the body temperature evolves under whatever heat input is currently applied (cutting losses or dry-run, whichever is larger), approaching the steady-state temperature implied by that heat input. The two outputs published per step are:
- SpindleTemperature_C (API) — current body temperature
- SpindleWorkingTemperatureRatio (API) — body temperature normalised so that ambient is
0and the working-temperature ceiling is1. A value approaching1.0means the spindle is near its thermal limit.
Note
SpindleWorkingTemperatureRatio describes the spindle housing as a whole. It is not the same as the cutter-edge thermal failure tracked by ThermalYieldRatio in Process Machinability, which is a localized cutting-edge phenomenon.
Editing and file IO
Capabilities are persisted as XML (.SpindleCapability files). The pre-built spindles in Resource/SpindleCapability/ are listed in Spindle Capability Setup: one per spindle class, from a BT30 tapping center to a BT50 two-range gear spindle, each built from a vendor's public catalog, configurator, data sheet or manual with the document named in its Note, the FANUC aT12/12000i of the chart above built from that chart's printed ratings and drawn torque curves, and two older ones read by hand from machine charts.
The .default marker identifies shipped files the resource seeder may refresh. Load one into a
project, which then keeps its own copy, rather than editing it in place.
To edit values interactively, see Spindle Capability Page.
See Also
- Process Machinability — uses
MaxSpindleTorqueRatio/MaxSpindlePowerRatiofor tool-breakage prediction - Spindle Power Evaluation — empirical validation of HiNC spindle power against Fanuc ServoGuide measurements
- Step Field Reference — where the spindle power and torque ratios surface, step by step
- Recomputing a Finished Strip — bringing the stored spindle temperature and accumulated energies up to date after an edit of the capability, without a replay
- Spindle Capability Page — UI editor walkthrough
- Project Data Checklist — what to collect from the machine owner, the speed-power-torque curve included
- CPU Usage During Simulation — the workstation-side throughput ceiling, alongside this spindle-side one
- Machine Condition and Safety Factors — the factors applied to these curves, and why a worn machine needs larger ones
- Spindle Capability Setup — entering these curves in the application, and the stand-in a project without them inherits
- Machining Issues Outside the Model — why the simulated power matches a meter only as far as the dry-run coefficients match the spindle