tune
This commit is contained in:
@@ -92,20 +92,14 @@
|
||||
<p>映射資料可用於檢視加工狀態、訓練銑削係數、校正銑削係數。</p>
|
||||
<h2 id="資料映射的形式">資料映射的形式</h2>
|
||||
<p>依據資料大小、應用情境不同,資料映射有多種形式。
|
||||
資料映射可以一對一與一對多。</p>
|
||||
<p>以資料量區分,<strong>仿真步</strong>對應<strong>外部資料</strong>可以一對一與一對多。</p>
|
||||
<h3 id="一對一映射">一對一映射</h3>
|
||||
以資料量區分,<strong>仿真步</strong>對應<strong>外部資料</strong>可以一對一與一對多。</p>
|
||||
<h2 id="一對一映射">一對一映射</h2>
|
||||
<p>一對一映射指每個仿真步對應一個外部資料點,資料量與仿真步數量相同或相近。</p>
|
||||
<p>一對一的資料映射方式:</p>
|
||||
<ul>
|
||||
<li><a class="xref" href="../PlayCsvFile/play-csv-file.html">執行CSV檔</a>:適用控制器資料,每個步階對應一個CSV資料行</li>
|
||||
<li><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_ReadCsvByTimeInterpolation_">ReadCsvByTimeInterpolation</a><small>(API)</small>:使用時間插值將CSV資料映射到加工步階</li>
|
||||
</ul>
|
||||
<h3 id="一對多映射">一對多映射</h3>
|
||||
<p>一對多映射指每個仿真步對應多個外部資料點,外部資料量遠大於仿真步數量(通常數十倍以上)。</p>
|
||||
<p>一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。</p>
|
||||
<p>一對多的資料映射可以直接<a href="#%E5%B0%8D%E6%87%89%E7%9C%9F%E5%AF%A6%E5%8A%A0%E5%B7%A5%E6%99%82%E9%96%93%E5%85%A8%E5%B1%80%E6%98%A0%E5%B0%84">對應真實加工時間全局映射</a>,也可以對<a href="#%E6%8C%87%E5%AE%9A%E6%95%B8%E6%8E%A7%E8%B7%AF%E5%BE%91%E5%8F%8A%E6%99%82%E9%96%93%E5%B1%80%E9%83%A8%E6%98%A0%E5%B0%84">指定數控路徑及時間局部映射</a>。</p>
|
||||
<h2 id="一對一映射-1">一對一映射</h2>
|
||||
<h3 id="playcsvfile">PlayCsvFile</h3>
|
||||
<p><a class="xref" href="../PlayCsvFile/play-csv-file.html">執行CSV檔</a> 可以與一對多的資料映射協同使用,詳見 <a class="xref" href="../PlayCsvFile/play-csv-file.html">執行CSV檔</a>。</p>
|
||||
<h3 id="readcsvbytimeinterpolation">ReadCsvByTimeInterpolation</h3>
|
||||
@@ -128,7 +122,10 @@ ReadCsvByTimeInterpolation("Data/sensor.csv");
|
||||
<h5>Note</h5>
|
||||
<p>此方法使用時間插值方式將CSV資料映射到加工步階,適用於需要將外部感測器資料對應到仿真步階的場景。每個仿真步會對應一個透過時間插值計算的外部資料點。</p>
|
||||
</div>
|
||||
<h2 id="一對多映射-1">一對多映射</h2>
|
||||
<h2 id="一對多映射">一對多映射</h2>
|
||||
<p>一對多映射指每個仿真步對應多個外部資料點,外部資料量遠大於仿真步數量(通常數十倍以上)。</p>
|
||||
<p>一對多的形式適用智慧刀把、加速規、測力計等高採樣率資料。</p>
|
||||
<p>一對多的資料映射可以直接<a href="#%E5%B0%8D%E6%87%89%E7%9C%9F%E5%AF%A6%E5%8A%A0%E5%B7%A5%E6%99%82%E9%96%93%E5%85%A8%E5%B1%80%E6%98%A0%E5%B0%84">對應真實加工時間全局映射</a>,也可以對<a href="#%E6%8C%87%E5%AE%9A%E6%95%B8%E6%8E%A7%E8%B7%AF%E5%BE%91%E5%8F%8A%E6%99%82%E9%96%93%E5%B1%80%E9%83%A8%E6%98%A0%E5%B0%84">指定數控路徑及時間局部映射</a>。</p>
|
||||
<h3 id="對應真實加工時間全局映射">對應真實加工時間全局映射</h3>
|
||||
<p>需使用<a class="xref" href="../PlayCsvFile/play-csv-file.html">執行CSV檔</a>作為前置,以獲取真實加工時間,csv檔案中須包含<code>ActualTime</code>欄位(<a class="xref" href="../../../../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_ActualTime">ActualTime</a><small>(API)</small>)。然後使用<a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_MapByActualTime_">MapByActualTime</a><small>(API)</small>映射外部資料。</p>
|
||||
<p>此方法為一對多映射,每個仿真步會對應多個外部資料點。</p>
|
||||
|
||||
@@ -131,6 +131,42 @@ ReTrainMillingPara(Fz|Mx|My|Mz, "StainlessSteel.mp");
|
||||
<p>如果僅使用<code>Mx|My|Mz</code>,由於力矩資料為 <span class="math">\(\vec{r} \times \vec{F}\)</span>,所以r方向資料會遺失,相當於少了一個自由度,難以訓練材料系數。
|
||||
所以力矩資料須搭配<code>Fz</code>使用。</p>
|
||||
<p>以<code>ReTrainMillingPara</code>校正銑削係數,沒有限制資料種類及每刃進給。</p>
|
||||
<h2 id="訓練品質指標">訓練品質指標</h2>
|
||||
<p>訓練完成後,系統會計算以下品質指標:</p>
|
||||
<h3 id="相關係數-correlation-coefficient-r">相關係數 (Correlation Coefficient, R)</h3>
|
||||
<p>相關係數 <span class="math">\(R\)</span> 是整體訓練結果的單一數值,用於評估訓練後模擬值與量測值的線性相關程度,範圍為 <span class="math">\(0\)</span> 到 <span class="math">\(1\)</span>,越接近 <span class="math">\(1\)</span> 表示訓練結果越好。新刀的相關係數通常介於 0.95 至 0.999 之間。</p>
|
||||
<h3 id="訓練誤差比-trainingerrratio">訓練誤差比 (TrainingErrRatio)</h3>
|
||||
<p>訓練誤差比是在執行 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_TrainMillingPara_">TrainMillingPara</a><small>(API)</small> 或 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_ReTrainMillingPara_">ReTrainMillingPara</a><small>(API)</small> 後,動態註冊並設置到訓練區域內各步的<a href="../StepVariables/index.html">步變數</a>,用於評估該步的模擬與量測之間的誤差程度,數值越小表示該步的訓練品質越好。</p>
|
||||
<div class="math">
|
||||
\[
|
||||
\text{TrainingErrRatio} = \sqrt{\frac{\sum_{i} e_i^2}{\sqrt{\sum_{i} y_i^2 \cdot \sum_{i} \hat{y}_i^2}}}
|
||||
\]</div>
|
||||
<p>其中:</p>
|
||||
<ul>
|
||||
<li><span class="math">\(e_i = y_i - \hat{y}_i\)</span>:第 <span class="math">\(i\)</span> 個樣本的誤差</li>
|
||||
<li><span class="math">\(y_i\)</span>:量測值</li>
|
||||
<li><span class="math">\(\hat{y}_i\)</span>:模擬預測值</li>
|
||||
</ul>
|
||||
<p>此指標會嵌入到每個加工步驟的輸出資料中,可用於識別訓練品質較差的段落。</p>
|
||||
<h3 id="角度偏移-angleoffset">角度偏移 (AngleOffset)</h3>
|
||||
<p>角度偏移是在執行訓練函數後,動態註冊並設置到訓練區域內各步的<a href="../StepVariables/index.html">步變數</a>。<span class="math">\(\theta_{offset}\)</span> 表示該步量測資料與模擬資料之間的刀刃旋轉相位差。系統會自動對齊相位以獲得最佳訓練結果。</p>
|
||||
<div class="math">
|
||||
\[
|
||||
\theta_{offset} = \frac{2\pi \cdot i_{min}}{N_{div}}
|
||||
\]</div>
|
||||
<p>其中:</p>
|
||||
<ul>
|
||||
<li><span class="math">\(i_{min}\)</span>:使預測誤差最小的角度索引</li>
|
||||
<li><span class="math">\(N_{div}\)</span>:一轉的角度分割數,即 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_MillingCycleDivisionNum">MillingCycleDivisionNum</a><small>(API)</small></li>
|
||||
</ul>
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p>如果同一批訓練中各段落的 AngleOffset 差異過大,可能表示主軸旋轉突然放慢或放快或資料缺失,或系統無法準確分析樣本並導致不理想訓練的結果。</p>
|
||||
</div>
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p>較大的 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_MillingCycleDivisionNum">MillingCycleDivisionNum</a><small>(API)</small> 設定可以得到更準確的 AngleOffset 結果,進而訓練出更準確的銑削係數。</p>
|
||||
</div>
|
||||
<h2 id="範例專案-動力計訓練銑削係數">範例專案-動力計訓練銑削係數</h2>
|
||||
<p>使用動力計訓練銑削係數的範例專案可於此下載:</p>
|
||||
<p><a href="https://superhightech-gitea.webredirect.org/HiNC-Deploy/Demo-Para-Training-S50C-202501">https://superhightech-gitea.webredirect.org/HiNC-Deploy/Demo-Para-Training-S50C-202501</a></p>
|
||||
|
||||
+30
-25
@@ -2,9 +2,9 @@
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<title>步階變數 | HiAPI-C# 2025 </title>
|
||||
<title>加工步變數 | HiAPI-C# 2025 </title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="title" content="步階變數 | HiAPI-C# 2025 ">
|
||||
<meta name="title" content="加工步變數 | HiAPI-C# 2025 ">
|
||||
|
||||
|
||||
<link rel="icon" href="../../../../../img/HiAPI.favicon.ico">
|
||||
@@ -85,22 +85,22 @@
|
||||
</div>
|
||||
|
||||
<article data-uid="Cmd-StepVariables">
|
||||
<h1 id="步階變數">步階變數</h1>
|
||||
<h1 id="加工步變數">加工步變數</h1>
|
||||
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html">RuntimeApi</a><small>(API)</small> 提供了多個方法來處理和存取加工步階的變數。</p>
|
||||
<h2 id="預設步階輸出資訊">預設步階輸出資訊</h2>
|
||||
<p>每個加工步階都包含豐富的預設輸出資訊,涵蓋來源行、運動學、載荷、力/力矩、功率、熱與磨耗等。</p>
|
||||
<p>完整的預設步階輸出資訊說明,請參考 <a class="xref" href="../../output/simulation-step-output.html">仿真步輸出資訊(Simulation Step Output)</a>。</p>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html">RuntimeApi</a><small>(API)</small> 提供了多個方法來處理和存取加工步的變數。</p>
|
||||
<h2 id="預設步輸出資訊">預設步輸出資訊</h2>
|
||||
<p>每個加工步都包含豐富的預設輸出資訊,涵蓋來源行、運動學、載荷、力/力矩、功率、熱與磨耗等。</p>
|
||||
<p>完整的預設步輸出資訊說明,請參考 <a class="xref" href="../../output/simulation-step-output.html">仿真步輸出資訊(Simulation Step Output)</a>。</p>
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p><strong>存取預設步階資訊範例</strong></p>
|
||||
<p><strong>存取預設步資訊範例</strong></p>
|
||||
<pre><code class="lang-csharp">PlayNcFile("NC/file1.nc");
|
||||
|
||||
// 取得步階並存取預設資訊
|
||||
var step = GetMillingStep(100); // 見下方「存取步階資訊」
|
||||
// 取得步並存取預設資訊
|
||||
var step = GetMillingStep(100); // 見下方「存取步資訊」
|
||||
if (step != null)
|
||||
{
|
||||
// 存取預設的步階資訊
|
||||
// 存取預設的步資訊
|
||||
Message($"ToolId: {step.ToolId}");
|
||||
Message($"Feedrate: {step.Feedrate_mmdmin} mm/min");
|
||||
Message($"ChipVolume: {step.ChipVolume_mm3} mm³");
|
||||
@@ -108,10 +108,15 @@ if (step != null)
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
<h2 id="註冊步階變數">註冊步階變數</h2>
|
||||
<p>除了預設的步階輸出資訊外,您可以使用 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_RegisterStepVariable_">RegisterStepVariable</a><small>(API)</small> 註冊自訂的步階變數,用於追蹤特定的計算結果或資料。</p>
|
||||
<h2 id="註冊步變數">註冊步變數</h2>
|
||||
<p>除了預設的步輸出資訊外,您可以使用 <a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_RegisterStepVariable_">RegisterStepVariable</a><small>(API)</small> 註冊自訂的步變數,用於追蹤特定的計算結果或資料。</p>
|
||||
<p>註冊的步變數主要用於人類檢視,可透過工件幾何體上的顏色顯示數值分布。搭配 <a class="xref" href="../../../../../api/Hi.MachiningSteps.MachiningStep.html#Hi_MachiningSteps_MachiningStep_Item_System_String_">this[string]</a><small>(API)</small> 索引器可實現完整的資料檢查功能:</p>
|
||||
<ul>
|
||||
<li><code>RegisterStepVariable</code>:註冊變數供介面顯示及輸出</li>
|
||||
<li><code>MachiningStep[key]</code>:在腳本中讀寫步的自訂資料</li>
|
||||
</ul>
|
||||
<h3 id="registerstepvariable">RegisterStepVariable</h3>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_RegisterStepVariable_">RegisterStepVariable</a><small>(API)</small> 註冊一個步階變數,用於在執行過程中追蹤特定資料。</p>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_RegisterStepVariable_">RegisterStepVariable</a><small>(API)</small> 註冊一個步變數,用於在執行過程中追蹤特定資料。</p>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p><strong>指令格式</strong></p>
|
||||
@@ -121,7 +126,7 @@ if (step != null)
|
||||
<div class="TIP">
|
||||
<h5>Tip</h5>
|
||||
<p><strong>指令範例</strong></p>
|
||||
<pre><code class="lang-csharp">// 註冊一個計算切削體積的步階變數
|
||||
<pre><code class="lang-csharp">// 註冊一個計算切削體積的步變數
|
||||
RegisterStepVariable(
|
||||
"ChipVolume",
|
||||
"Chip Volume",
|
||||
@@ -139,19 +144,19 @@ PlayNcFile("NC/file1.nc");
|
||||
<li><code><名稱></code>: 變數的顯示名稱</li>
|
||||
<li><code><單位></code>: 變數的物理單位(可為 null)</li>
|
||||
<li><code><格式字串></code>: 數值格式化字串(可為 null)</li>
|
||||
<li><code><變數函數></code>: 從步階計算變數值的函數(可為 null)</li>
|
||||
<li><code><變數函數></code>: 從步計算變數值的函數(可為 null)</li>
|
||||
</ul>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p>註冊的步階變數可以在輸出檔案(如 <a class="xref" href="../WriteStepFiles/index.html">輸出步資料檔案</a>)中使用,並在介面中顯示。</p>
|
||||
<p>註冊的步變數可以在輸出檔案(如 <a class="xref" href="../WriteStepFiles/index.html">輸出步資料檔案</a>)中使用,並在介面中顯示。</p>
|
||||
</div>
|
||||
<h2 id="存取步階資訊">存取步階資訊</h2>
|
||||
<h2 id="存取步資訊">存取步資訊</h2>
|
||||
<h3 id="getmillingstep">GetMillingStep</h3>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_GetMillingStep_">GetMillingStep</a><small>(API)</small> 取得指定索引的加工步階。</p>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_GetMillingStep_">GetMillingStep</a><small>(API)</small> 取得指定索引的加工步。</p>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p><strong>指令格式</strong></p>
|
||||
<pre><code class="lang-csharp">var step = GetMillingStep(<步階索引>);
|
||||
<pre><code class="lang-csharp">var step = GetMillingStep(<步索引>);
|
||||
</code></pre>
|
||||
</div>
|
||||
<div class="TIP">
|
||||
@@ -159,7 +164,7 @@ PlayNcFile("NC/file1.nc");
|
||||
<p><strong>指令範例</strong></p>
|
||||
<pre><code class="lang-csharp">PlayNcFile("NC/file1.nc");
|
||||
|
||||
// 取得第100個步階
|
||||
// 取得第100個步
|
||||
var step = GetMillingStep(100);
|
||||
if (step != null)
|
||||
{
|
||||
@@ -168,7 +173,7 @@ if (step != null)
|
||||
</code></pre>
|
||||
</div>
|
||||
<h3 id="stepcount">StepCount</h3>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_StepCount">StepCount</a><small>(API)</small> 取得總步階數量。</p>
|
||||
<p><a class="xref" href="../../../../../api/Hi.MachiningProcs.RuntimeApi.html#Hi_MachiningProcs_RuntimeApi_StepCount">StepCount</a><small>(API)</small> 取得總步數量。</p>
|
||||
<div class="NOTE">
|
||||
<h5>Note</h5>
|
||||
<p><strong>指令格式</strong></p>
|
||||
@@ -180,15 +185,15 @@ if (step != null)
|
||||
<p><strong>指令範例</strong></p>
|
||||
<pre><code class="lang-csharp">PlayNcFile("NC/file1.nc");
|
||||
|
||||
// 取得總步階數
|
||||
// 取得總步數
|
||||
var totalSteps = StepCount;
|
||||
Message($"Total steps: {totalSteps}");
|
||||
|
||||
// 遍歷所有步階
|
||||
// 遍歷所有步
|
||||
for (int i = 0; i < StepCount; i++)
|
||||
{
|
||||
var step = GetMillingStep(i);
|
||||
// 處理步階...
|
||||
// 處理步...
|
||||
}
|
||||
</code></pre>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user