223 lines
17 KiB
HTML
223 lines
17 KiB
HTML
<!DOCTYPE html>
|
|
<html>
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<title>Spindle Capability | HiAPI-C# 2025 </title>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="title" content="Spindle Capability | HiAPI-C# 2025 ">
|
|
|
|
|
|
<link rel="icon" href="../../img/HiAPI.favicon.ico">
|
|
<link rel="stylesheet" href="../../public/docfx.min.css">
|
|
<link rel="stylesheet" href="../../public/main.css">
|
|
<meta name="docfx:navrel" content="../../toc.html">
|
|
<meta name="docfx:tocrel" content="toc.html">
|
|
|
|
<meta name="docfx:rel" content="../../">
|
|
|
|
|
|
|
|
<meta name="loc:inThisArticle" content="In this article">
|
|
<meta name="loc:searchResultsCount" content="{count} results for "{query}"">
|
|
<meta name="loc:searchNoResults" content="No results for "{query}"">
|
|
<meta name="loc:tocFilter" content="Filter by title">
|
|
<meta name="loc:nextArticle" content="Next">
|
|
<meta name="loc:prevArticle" content="Previous">
|
|
<meta name="loc:themeLight" content="Light">
|
|
<meta name="loc:themeDark" content="Dark">
|
|
<meta name="loc:themeAuto" content="Auto">
|
|
<meta name="loc:changeTheme" content="Change theme">
|
|
<meta name="loc:copy" content="Copy">
|
|
<meta name="loc:downloadPdf" content="Download PDF">
|
|
|
|
<script type="module" src="./../../public/docfx.min.js"></script>
|
|
|
|
<script>
|
|
const theme = localStorage.getItem('theme') || 'auto'
|
|
document.documentElement.setAttribute('data-bs-theme', theme === 'auto' ? (window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light') : theme)
|
|
</script>
|
|
|
|
</head>
|
|
|
|
<body class="tex2jax_ignore" data-layout="" data-yaml-mime="">
|
|
<header class="bg-body border-bottom">
|
|
<nav id="autocollapse" class="navbar navbar-expand-md" role="navigation">
|
|
<div class="container-xxl flex-nowrap">
|
|
<a class="navbar-brand" href="../../index.html">
|
|
<img id="logo" class="svg" src="../../img/HiAPI.logo.png" alt="">
|
|
|
|
</a>
|
|
<button class="btn btn-lg d-md-none border-0" type="button" data-bs-toggle="collapse" data-bs-target="#navpanel" aria-controls="navpanel" aria-expanded="false" aria-label="Toggle navigation">
|
|
<i class="bi bi-three-dots"></i>
|
|
</button>
|
|
<div class="collapse navbar-collapse" id="navpanel">
|
|
<div id="navbar">
|
|
<form class="search" role="search" id="search">
|
|
<i class="bi bi-search"></i>
|
|
<input class="form-control" id="search-query" type="search" disabled placeholder="Search" autocomplete="off" aria-label="Search">
|
|
</form>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</nav>
|
|
</header>
|
|
|
|
<main class="container-xxl">
|
|
<div class="toc-offcanvas">
|
|
<div class="offcanvas-md offcanvas-start" tabindex="-1" id="tocOffcanvas" aria-labelledby="tocOffcanvasLabel">
|
|
<div class="offcanvas-header">
|
|
<h5 class="offcanvas-title" id="tocOffcanvasLabel">Table of Contents</h5>
|
|
<button type="button" class="btn-close" data-bs-dismiss="offcanvas" data-bs-target="#tocOffcanvas" aria-label="Close"></button>
|
|
</div>
|
|
<div class="offcanvas-body">
|
|
<nav class="toc" id="toc"></nav>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="content">
|
|
<div class="actionbar">
|
|
<button class="btn btn-lg border-0 d-md-none" type="button" data-bs-toggle="offcanvas" data-bs-target="#tocOffcanvas" aria-controls="tocOffcanvas" aria-expanded="false" aria-label="Show table of contents">
|
|
<i class="bi bi-list"></i>
|
|
</button>
|
|
|
|
<nav id="breadcrumb"></nav>
|
|
</div>
|
|
|
|
<article data-uid="">
|
|
<h1 id="spindle-capability">Spindle Capability</h1>
|
|
|
|
<p><a class="xref" href="../../api/Hi.Milling.SpindleCapability.html">SpindleCapability</a> <small>(API)</small> describes the energy, torque, power, and thermal envelope of a machine spindle. It is loaded as XML (<code>.SpindleCapability</code> files under <code>Resource/SpindleCapability/</code>) and lives on <a class="xref" href="../../api/Hi.Machining.MachiningEquipmentUtils.MachiningEquipment.html#Hi_Machining_MachiningEquipmentUtils_MachiningEquipment_SpindleCapability">SpindleCapability</a> <small>(API)</small> as part of the project equipment. This page explains what the model represents physically and how the per-step ratios on a machining step are derived.</p>
|
|
<p>For editing values interactively, see <a href="../../app-anatomy/mech/spindle-capability-page.html">Spindle Capability Page</a>. For empirical validation of the resulting power numbers against Fanuc ServoGuide, see <a href="spindle-power-evaluation.html">Spindle Power Evaluation</a>.</p>
|
|
<h2 id="boundary-curves-continuous-vs-instantaneous">Boundary curves: continuous vs instantaneous</h2>
|
|
<p>The capability stores <strong>two dictionaries keyed by workable duration (in minutes)</strong>, mapping spindle speed to the maximum power or torque the spindle can deliver for that duration:</p>
|
|
<ul>
|
|
<li><a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW">WorkableDurationToSpindleSpeedPowerContoursDictionary_min_cycleDs_kW</a> <small>(API)</small></li>
|
|
<li><a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm">WorkableDurationToSpindleSpeedTorqueContoursDictionary_min_cycleDs_Nm</a> <small>(API)</small></li>
|
|
</ul>
|
|
<p>Two duration keys are special:</p>
|
|
<ul>
|
|
<li><strong><code>PositiveInfinity</code></strong> — the <strong>continuous boundary</strong>. The spindle can run at any (speed, value) point on this curve forever without overheating. Industry usage often calls this the S1 rating.</li>
|
|
<li><strong>The smallest finite key</strong> (e.g. <code>15</code>) — the <strong>instantaneous boundary</strong>. The spindle can run at any (speed, value) point on this curve only for that workable duration before the temperature ceiling is reached.</li>
|
|
</ul>
|
|
<p>A capability typically also has intermediate keys (e.g. <code>60</code> minutes) which document the spindle's published rating curve.</p>
|
|
<div class="NOTE">
|
|
<h5>Note</h5>
|
|
<p><strong>Why duration-keyed and not just two curves?</strong></p>
|
|
<p>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.</p>
|
|
</div>
|
|
<p>If <a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_GearShiftSpindleSpeed_rpm">GearShiftSpindleSpeed_rpm</a> <small>(API)</small> is set, each contour is treated as two segments split at that speed; only the segment for the current spindle speed is used for interpolation. Outside the segment, interpolation uses nearest-neighbour clamping rather than extrapolation.</p>
|
|
<h2 id="how-the-four-ratios-are-computed">How the four ratios are computed</h2>
|
|
<p>For every machining step where the spindle speed changes, <a class="xref" href="../../api/Hi.MachiningProcs.SpindleSpeedCache.html">SpindleSpeedCache</a> <small>(API)</small> interpolates each of the four contour-based curves at the current spindle speed and stores four scalar boundaries:</p>
|
|
<table>
|
|
<thead>
|
|
<tr>
|
|
<th>Boundary (denominator)</th>
|
|
<th>Source contour</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><code>MinInsistentRatioSpindleTorqueBoundary_Nm</code></td>
|
|
<td>smallest-key entry of the torque dictionary, interpolated at current rpm</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>InfInsistentRatioSpindleTorqueBoundary_Nm</code></td>
|
|
<td><code>∞</code>-key entry of the torque dictionary, interpolated at current rpm</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>MinInsistentRatioSpindlePowerBoundary_W</code></td>
|
|
<td>smallest-key entry of the power dictionary, interpolated at current rpm</td>
|
|
</tr>
|
|
<tr>
|
|
<td><code>InfInsistentRatioSpindlePowerBoundary_W</code></td>
|
|
<td><code>∞</code>-key entry of the power dictionary, interpolated at current rpm</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
<p>The four <code>MachiningStep</code> ratios are then divisions:</p>
|
|
<div class="math">
|
|
\[
|
|
\begin{aligned}
|
|
\text{MaxSpindleTorqueRatio} &= \frac{\text{MaxAxialTorque\_Nm}}{\text{MinInsistentRatioSpindleTorqueBoundary\_Nm}} \\[6pt]
|
|
\text{ContinueSpindleTorqueRatio} &= \frac{\text{MaxAxialTorque\_Nm}}{\text{InfInsistentRatioSpindleTorqueBoundary\_Nm}} \\[6pt]
|
|
\text{MaxSpindlePowerRatio} &= \frac{\text{inputPower\_W}}{\text{MinInsistentRatioSpindlePowerBoundary\_W}} \\[6pt]
|
|
\text{ContinueSpindlePowerRatio} &= \frac{\text{inputPower\_W}}{\text{InfInsistentRatioSpindlePowerBoundary\_W}}
|
|
\end{aligned}
|
|
\]</div>
|
|
<p>Because the continuous boundary is always lower than (or equal to) the short-duration boundary, the corresponding <code>Continue-</code> ratio is always greater than (or equal to) its <code>Max-</code> counterpart for the same load:</p>
|
|
<ul>
|
|
<li>A <strong><code>Max-</code> ratio above 100%</strong> means the spindle is overdriven instantaneously and will trip thermal protection within the rated short duration. This is the criterion <a class="xref" href="../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_MaxSpindleTorqueRatio">MaxSpindleTorqueRatio</a> <small>(API)</small> and <a class="xref" href="../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_MaxSpindlePowerRatio">MaxSpindlePowerRatio</a> <small>(API)</small> use to flag tool breakage on <a href="machinability.html">Process Machinability</a>.</li>
|
|
<li>A <strong><code>Continue-</code> ratio above 100%</strong> means the spindle cannot sustain this load forever — short bursts may still be safe. Useful for pacing long operations rather than predicting immediate failure.</li>
|
|
</ul>
|
|
<h2 id="input-power-vs-output-power">Input power vs output power</h2>
|
|
<p>The power numerator above is <strong>input power</strong> (energy entering the spindle), not output power (energy reaching the cutting end). They are related by the spindle's energy efficiency:</p>
|
|
<p><span class="math">\(\text{inputPower\_W} = \frac{\text{AbsAxialPower\_W}}{\text{EnergyEfficiency}}\)</span></p>
|
|
<p>— where <code>EnergyEfficiency</code> is <a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_EnergyEfficiency">EnergyEfficiency</a> <small>(API)</small> and <code>AbsAxialPower_W</code> is what the cutting actually demands. The lost fraction <span class="math">\((1 - \text{EnergyEfficiency})\)</span> becomes heat that the thermal envelope has to dissipate.</p>
|
|
<p><a href="spindle-power-evaluation.html">Spindle Power Evaluation</a> documents the empirical justification for this conversion against measured Fanuc ServoGuide TCMD data.</p>
|
|
<h2 id="dry-run-idle-power">Dry-run idle power</h2>
|
|
<p>Even when the cutter is in air, a rotating spindle dissipates power as bearing friction and aerodynamic windage. HiNC models this as a sum of a linear-in-rpm term (bearing friction) and a higher-order term (windage), parameterised by:</p>
|
|
<ul>
|
|
<li><a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_DryRunFrictionPowerCoefficient_mWdrpm">DryRunFrictionPowerCoefficient_mWdrpm</a> <small>(API)</small> — friction term coefficient</li>
|
|
<li><a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_DryRunWindagePowerCoefficient_pWdrpm3">DryRunWindagePowerCoefficient_pWdrpm3</a> <small>(API)</small> — windage term coefficient</li>
|
|
</ul>
|
|
<p>The friction term dominates at low rpm; the windage term takes over at high rpm. The thermal envelope (next section) uses the larger of the dry-run idle power and the cutting-induced heat, so the spindle keeps warming up even during air moves.</p>
|
|
<h2 id="thermal-envelope">Thermal envelope</h2>
|
|
<p>The same <code>SpindleCapability</code> also drives a thermal model of the spindle body. <strong>You do not set heat capacity or convection directly</strong> — the thermal model is auto-calibrated from your existing inputs.</p>
|
|
<ul>
|
|
<li>The <strong>continuous (<code>∞</code>-key) curve</strong> plus <a class="xref" href="../../api/Hi.Milling.SpindleCapability.html#Hi_Milling_SpindleCapability_WorkingTemperatureUpperBoundary_C">WorkingTemperatureUpperBoundary_C</a> <small>(API)</small> 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.</li>
|
|
<li>The <strong>shortest-duration curve</strong> 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.</li>
|
|
</ul>
|
|
<p><strong>What this means for you</strong>: 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.</p>
|
|
<h3 id="per-step-temperature-outputs">Per-step temperature outputs</h3>
|
|
<p>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:</p>
|
|
<ul>
|
|
<li><a class="xref" href="../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_SpindleTemperature_C">SpindleTemperature_C</a> <small>(API)</small> — current body temperature</li>
|
|
<li><a class="xref" href="../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_SpindleWorkingTemperatureRatio">SpindleWorkingTemperatureRatio</a> <small>(API)</small> — body temperature normalised so that ambient is <code>0</code> and the working-temperature ceiling is <code>1</code>. A value approaching <code>1.0</code> means the spindle is near its thermal limit.</li>
|
|
</ul>
|
|
<div class="NOTE">
|
|
<h5>Note</h5>
|
|
<p><code>SpindleWorkingTemperatureRatio</code> describes the <strong>spindle housing</strong> as a whole. It is <strong>not</strong> the same as the cutter-edge thermal failure tracked by <code>ThermalYieldRatio</code> in <a href="machinability.html">Process Machinability</a>, which is a localized cutting-edge phenomenon.</p>
|
|
</div>
|
|
<h2 id="editing-and-file-io">Editing and file IO</h2>
|
|
<p>Capabilities are persisted as XML (<code>.SpindleCapability</code> files). Three pre-built spindles ship in <code>Resource/SpindleCapability/</code>:</p>
|
|
<ul>
|
|
<li><code>FANUC-aT12-12000i.SpindleCapability</code></li>
|
|
<li><code>TMV-720A-STD-8000RPM.SpindleCapability</code></li>
|
|
<li><code>VP-8--Fanuc-10000RPM.SpindleCapability</code></li>
|
|
</ul>
|
|
<p>To edit values interactively, see <a href="../../app-anatomy/mech/spindle-capability-page.html">Spindle Capability Page</a> in the Quasar webservice. The desktop WPF app does not yet have a dedicated editor; load capabilities through the equipment's <code>ObjectManagementMenuButton</code> instead.</p>
|
|
<h2 id="related-pages">Related pages</h2>
|
|
<ul>
|
|
<li><a href="machinability.html">Process Machinability</a> — uses <code>MaxSpindleTorqueRatio</code> / <code>MaxSpindlePowerRatio</code> for tool-breakage prediction</li>
|
|
<li><a href="spindle-power-evaluation.html">Spindle Power Evaluation</a> — empirical validation of HiNC spindle power against Fanuc ServoGuide measurements</li>
|
|
<li><a href="../runtime/step-output.html">Step Output</a> — full list of per-step physics outputs</li>
|
|
<li><a href="../../app-anatomy/mech/spindle-capability-page.html">Spindle Capability Page</a> — UI editor walkthrough</li>
|
|
</ul>
|
|
|
|
</article>
|
|
|
|
<div class="contribution d-print-none">
|
|
</div>
|
|
|
|
<div class="next-article d-print-none border-top" id="nextArticle"></div>
|
|
|
|
</div>
|
|
|
|
<div class="affix">
|
|
<nav id="affix"></nav>
|
|
</div>
|
|
</main>
|
|
|
|
<div class="container-xxl search-results" id="search-results"></div>
|
|
|
|
<footer class="border-top text-secondary">
|
|
<div class="container-xxl">
|
|
<div class="flex-fill">
|
|
<span> Copyright © 2025 <a href='https://superhightech.com.tw'>Tech Coordinate</a>. All rights reserved. <a href='https://superhightech.com.tw'>超級高科技股份有限公司</a> © 2025 版權所有 </span>
|
|
</div>
|
|
</div>
|
|
</footer>
|
|
</body>
|
|
</html>
|