2025-09-24 09:26:04 +08:00

253 lines
10 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>NC優化 | HiAPI-C# 2025 </title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="title" content="NC優化 | 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 &quot;{query}&quot;">
<meta name="loc:searchNoResults" content="No results for &quot;{query}&quot;">
<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="Cmd-NcOptimization">
<h1 id="nc優化">NC優化</h1>
<p>組態在NC仿真前設定然後執行<strong>輸出優化NC檔</strong>指令。</p>
<p>可同時參考閱讀說明章節<a class="xref" href="../../optimization/index.html">NC優化</a></p>
<h2 id="組態">組態</h2>
<div class="NOTE">
<h5>Note</h5>
<p><strong>指令格式</strong></p>
<pre><code class="lang-csharp">OptEnableFeedrate = &lt;布林值&gt;;
OptEnableInterpolation = &lt;布林值&gt;;
OptRapidFeed_mmdmin = &lt;實數&gt;;
OptMinFeedrate_mmdmin = &lt;實數&gt;;
OptMaxFeedrate_mmdmin = &lt;實數&gt;;
OptMaxAcceleration_mmds2 = &lt;實數&gt;;
OptExtendedPreDistance_mm = &lt;實數&gt;;
OptExtendedPostDistance_mm = &lt;實數&gt;;
OptSpindlePowerSafetyFactor = &lt;實數&gt;;
</code></pre>
</div>
<ul>
<li><p><code>OptEnableFeedrate</code>:啟用順序式(Sequential)進給率優化。</p>
<p>順序式係指該功能從下指令開始作用。與其相對的設定在刀具端,刀具端也能設定進給率優化,但是在裝刀時才會發揮作用。</p>
<p><code>OptEnableFeedrate</code>與所有其他啟用進給率優化的指令需同時為真,進給率優化才會啟用。
即與刀具設定端必須同時為真(true),進給率優化才會啟用。</p>
<p><code>OptEnableFeedrate</code>預設值為真。</p>
</li>
<li><p><code>OptEnableInterpolation</code>:優化程序用重新插補。</p>
</li>
</ul>
<p>重新插捕後NC碼會增加可以更好地控制加減速。</p>
<ul>
<li><code>OptRapidFeed_mmdmin</code>優化程序中的無切削區域進給率。單位mm/min。</li>
</ul>
<p>沒有切到工件的NC路徑為無切削區域。優化後該路徑將採用無切削區域進給率。</p>
<ul>
<li><code>OptMinFeedrate_mmdmin</code>優化程序中的有切削區域最小進給。單位mm/min。</li>
<li><code>OptMaxFeedrate_mmdmin</code>優化程序中的有切削區域最大進給。單位mm/min。</li>
</ul>
<p>有切到工件的NC路徑為有切削區域。有切削區域的最大最小進給的設定通常依據經驗法則。</p>
<ul>
<li><p><code>OptMaxAcceleration_mmds2</code>優化程序中的加減速限制。優化後NC碼的F值變化在該限制之內。單位$mm/s^2$。</p>
</li>
<li><p><code>OptExtendedPreDistance_mm</code>優化程序中的有切削區域等效計算的前長度。單位mm。</p>
</li>
<li><p><code>OptExtendedPostDistance_mm</code>優化程序中的有切削區域等效計算的後長度。單位mm。</p>
</li>
</ul>
<figure>
<img src="ExtendedDistance.png" alt="ExtendedDistance">
<figcaption>優化程序中的有切削區域等效計算的長度</figcaption>
</figure>
<ul>
<li><code>OptSpindlePowerSafetyFactor</code>:主軸功率安全係數。</li>
<li><code>OptSpindleTorqueSafetyFactor</code>:主軸扭力安全係數。</li>
</ul>
<p>優化後的NC碼主軸功率及主軸扭力將被限制於安全係數之內。</p>
<ul>
<li><code>OptPreferedForce_N</code>優化程中的目標力。單位N。</li>
</ul>
<p>在符合所有限制的條件下,優化程序中的加工路徑產生的力會盡可能的趨近目標力。</p>
<h2 id="nc碼中的優化腳本指令">NC碼中的優化腳本指令</h2>
<h3 id="於指定nc行不啟用優化">於指定NC行不啟用優化</h3>
<p>在執行 <code>Preserve()</code> 的NC行中不啟用優化。</p>
<div class="TIP">
<h5>Tip</h5>
<p><strong>指令範例</strong></p>
<p><code>N0140</code> 行不啟用優化。</p>
<pre><code class="lang-nc">...
N0130 X-1.965 Y17.053
N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();)
N0150 G01 X-3.068 Y40.776
...
</code></pre>
</div>
<h3 id="於指定nc範圍不啟用優化">於指定NC範圍不啟用優化</h3>
<p>使用<code>BeginPreserve()</code>的NC行及<code>EndPreserve()</code>的NC行及包含的NC範圍不啟用優化。</p>
<div class="TIP">
<h5>Tip</h5>
<p><strong>指令範例</strong></p>
<p><code>N0140</code><code>N0150</code><code>N0160</code> 行不啟用優化。</p>
<pre><code class="lang-nc">...
N0130 X-1.965 Y17.053
N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@BeginPreserve();)
N0150 G01 X-3.068 Y40.776
N0160 X-3.555 Y43.338 (;@EndPreserve();)
N0170 X-4.125 Y45.875
...
</code></pre>
</div>
<h2 id="輸出優化nc檔">輸出優化NC檔</h2>
<div class="NOTE">
<h5>Note</h5>
<p><strong>指令格式</strong></p>
<pre><code class="lang-csharp">OptimizeToFiles(&lt;路徑樣板&gt;);
</code></pre>
</div>
<p>&lt;路徑樣板&gt;支援 <a href="../Doc-Task/index.html#FileTemplate">檔案路徑樣板</a></p>
<div class="TIP">
<h5>Tip</h5>
<p><strong>指令範例</strong></p>
<pre><code class="lang-csharp">OptEnableFeedrate = true;
OptEnableInterpolation = true;
OptRapidFeed_mmdmin = 4000;
OptMinFeedrate_mmdmin = 100;
OptMaxFeedrate_mmdmin = 4000;
OptMaxAcceleration_mmds2 = 10;
OptExtendedPreDistance_mm = 3;
OptExtendedPostDistance_mm = 2;
OptSpindlePowerSafetyFactor = 1.5;
OptSpindleTorqueSafetyFactor = 1.5;
OptPreferedForce_N = double.PositiveInfinity;
PlayNcFile(&quot;NC/file1.nc&quot;);
OptRapidFeed_mmdmin = 8000;
PlayNcFile(&quot;NC/file2.nc&quot;);
OptimizeToFiles(&quot;Cache/Opt-[NcName]&quot;);
</code></pre>
</div>
<p>組態設定可以穿插在NC仿真間將會作用在組態設定後的NC仿真。</p>
<p>以上範例為例優化後的NC程式file1.nc的無切削區域快速進給為4000file2.nc則為8000。</p>
<div class="TIP">
<h5>Tip</h5>
<p><strong>NC碼中的優化指令範例</strong></p>
<pre><code class="lang-nc">...
N0110 X-3.064 Y6.378 (;@OptMaxAcceleration_mmds2=10;)
N0120 X-2.411 Y11.712
N0130 X-1.965 Y17.053
N0140 G03 X-2.66 Y38.193 I-103.796 J7.172 (;@Preserve();)
N0150 G01 X-3.068 Y40.776 (;@OptMaxAcceleration_mmds2=100; OptMaxFeedrate_mmdmin=12000;)
N0160 X-3.555 Y43.338
N0170 X-4.125 Y45.875
...
</code></pre>
<p>N0110至N0150前優化區加速度設為10 <span class="math">\(mm/s^2\)</span>
N0140單行不做優化
N0150及以後優化區加速度設為100 <span class="math">\(mm/s^2\)</span>
N0150及以後優化區切削區域最大進給設為12000 <span class="math">\(mm/min\)</span></p>
</div>
</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>