工作流程:基礎加工仿真¶
本工作流程從零開始說明如何建立並執行加工仿真,包含專案配置、選項調整、NC 執行與結果檢視。
至於組建一個專案的方法——建置順序、如何界定任務範圍,以及「重播並讀訊息」這項判定專案已完成的驗收測試——見 專案建構。
flowchart TD
Equipment["設定工具機與<br>控制器品牌/型號"]
Job["設定工件、夾具、<br>刀具庫、NC 檔案、<br>控制器補正"]
Option["調整仿真選項<br>(解析度、物理計算等)"]
Run["執行仿真"]
View["檢視結果"]
Equipment --> Job --> Option --> Run --> View
從客戶交付物開始¶
真實專案通常從客戶交來的一包資料開始:NC 程式、零件/毛胚 CAD、刀具表,有時還有工具機模型,以及幾句關於零件如何夾持與歸零的說明。在動手建置任何東西之前,先把這包資料對照專案資料盤點清單核對一遍,再把每一項對應到下面的步驟:
| 客戶交付物 | 對應到 | 設置頁面 |
|---|---|---|
NC 程式(.nc、.anc…) |
NC 檔案 + 控制器品牌 | 通用 NC 碼支援 |
| 刀具表(直徑、圓角半徑、刃數、伸出量) | 刀具庫 | 刀具幾何 |
| 零件 CAD + 毛胚 CAD | 工件 IdealGeom + InitGeom |
錨點與角色;若改為從 CAM 匯出的單一網格:由參照網格建立工件 |
| 工具機模型 + 軸配置(3 軸、3+1、5 軸) | 工具機運動鏈 | 工具機 |
| 「程式原點在哪裡?」的說明、工件偏移清單 | 程式原點 + 工件偏移表 | 程式原點對齊 |
| 材料名稱 | 工件材料 + 切削參數 | 專案資料盤點清單 |
Note
CAD 幾何通常以 STEP(.step / .stp)交來。工件與工具機實體則以 STL(或參數化基本體)讀入,所以匯入前請先把 STEP 轉成 STL。刀具表上的直徑與圓角半徑是權威值;刃長、刃數、螺旋角與伸出量常常缺漏,可能得從規格字串推估,再向客戶確認。
Tip
交付物不完整時(沒有毛胚 CAD、工件偏移未知、工具機模型未經驗證),仍可先架起一個粗略的專案:用 NC 中的刀具直徑、指名的材料、一個包住刀具路徑的佔位毛胚方塊,以及一個恆等的工件偏移——然後跑一次粗解析度(見 §3.1),在等待缺漏資料的同時先抓出明顯的過切/碰撞。把每個假設值都記下來,以便日後確認。
1. 設定工具機與控制器¶
工具機與控制器為固定設備,定義仿真的物理環境。
工具機¶
工具機檔(.mt 檔)提供運動模型與 STL 實體。一旦選定,通常仿真之間不會更動。
控制器¶
選擇控制器品牌與型號(如 Fanuc、Heidenhain、Siemens)。此設定決定 NC 碼的解讀方式。詳見 Heidenhain 支援 與 通用 NC 碼支援。
GUI 操作¶
於 HiNC 應用程式中開啟或建立專案,並透過對應面板設定工具機與控制器,再進行作業設定。
2. 設定作業元件¶
設備固定後,配置每次仿真會變動的作業專屬元件。
Tip
建立專案前要蒐集的完整資料清單(以及一份可交付客戶的盤點表),見 專案資料盤點清單。
作業元件¶
| 元件 | 說明 |
|---|---|
| 工件 | 幾何(STL 或參數化)、材料與座標系 |
| 夾具 (選用) | 參與碰撞檢測的夾具幾何 |
| 刀具庫 | 一支或多支切削刀具,含幾何與刃形定義 |
| NC 檔案 | 要仿真的 NC 程式 |
| 控制器補正 | 刀具補正表、工件偏移表與其他控制器專屬預設值 |
Tip
腳本命令中的所有檔案路徑,若未指定絕對路徑,皆相對於專案目錄。
腳本存取¶
工件與夾具物件可透過 SessionShell.Workpiece (API) 與 SessionShell.Fixture (API) 取得。
GUI 操作¶
在「設備」頁面控制樹的「機構」群組下設定工件與夾具(工件、夾具),在「刀具庫」頁面設定刀具(銑刀)。
3. 調整仿真選項¶
仿真選項控制精度與速度之間的取捨。
3.1 工件實體解析度¶
MachiningResolution_mm (API) 設定工件網格的最小立方體寬度。
合法值為 2 的次方(如 4、2、1、0.5、0.25、0.125)。若提供非 2 次方的值,系統會把它取到下一個更細的 2 次方——0.4 會以 0.25 執行(網格解析度)。
Warning
每次將網格寬度減半,計算時間可能增加最多 8 倍,網格本身的記憶體則增加 4 倍或更多。建議從較粗解析度起步,必要時再細化。選擇之前,先由 NC 程式與工件估算這次運行的記憶體:表面大而複雜、程式又短的工件,網格幾乎就是全部,寬度決定這次運行放不放得進;而長程式產生的每步結果不會因為網格變粗而縮小——見記憶體規劃。
Note
變細才是花掉那 8 倍的地方——而在真實 NC 加工所需的細解析度下,幾何移除通常就是瓶頸。變粗只在幾何移除仍是瓶頸時才省時間。一旦網格粗到幾何移除已經很便宜(對 NC 而言 1–2 mm 已經非常粗),每步的固定成本便成為主導,再調大 MachiningResolution_mm 對總時間幾乎沒有影響(這就是為什麼 1.0 mm 與 2.0 mm 可以跑出幾乎相同的速度)。在這種情況下要加速,請透過加工運動解析度減少步數。見仿真 CPU 使用率。
3.2 顯示快取¶
顯示解析度取決於快取大小。建議值不超過 1000 Mb。
3.3 加工運動解析度¶
加工運動解析度決定每個仿真步的間隔。可選模式:
| 模式 | 命令 | 說明 |
|---|---|---|
| 每轉一步 | MachiningMotionResolution = FeedPerCycle; |
每主軸一轉一個步(預設) |
| 每轉縮放 | MachiningMotionResolution = ScaledFeedPerCycle(2); |
每(一轉 × 縮放比例)一個步:比例 > 1 → 步數較少(較快);比例 < 1 → 步數較多(較細) |
| 每刃一步 | MachiningMotionResolution = FeedPerTooth; |
每刃通過一個步(一轉 ÷ 刃數) |
| 固定步進 | MachiningMotionResolution = FixedPace(1, 15); |
固定線性 (mm) 與旋轉 (deg) 解析度;以步與步之間的掃掠進行切削 |
總仿真時間由較慢的一方決定(重要)
總仿真時間由較慢的那一方決定:幾何移除,或每步的固定成本。 幾何移除的成本由網格解析度決定;每步的固定成本(物理計算、熱/磨耗、每步的簿記)則由步數決定——即運動解析度模式加上刀具路徑上的主軸轉數,與網格解析度及工件尺寸無關。在真實 NC 加工所需的細解析度下,幾何移除通常是瓶頸(越細 = 慢很多)。只有當網格粗到幾何移除已經很便宜時,每步的固定成本才成為主導——此時再調大 MachiningResolution_mm 不會加快速度(這就是為什麼 1.0 mm 與 2.0 mm 可以跑出幾乎相同的速度);請改為減少步數——例如 ScaledFeedPerCycle(2) 每 2 轉走一步,步數減半,代價是力曲線的取樣變疏。見仿真 CPU 使用率。
Warning
不要用縮放模型尺寸來代替調整網格寬度。 縮放模型尺寸會使內部演算法門檻(最小可切量、浮點轉分數的範圍)失效,產生不規則的幾何瑕疵。請改用解析度設定。
3.4 XML 配置¶
解析度也可在 .hincproj 檔內設定,或在仿真中途由嵌在程式自己註解裡的腳本調整——@@ 在該單節的運動之前執行,寫在控制器所用的註解符號裡(見 NC 碼中的腳本命令):
4. 執行仿真¶
有四種方式驅動仿真,另有播放器控制。
4.1 PlayNcFile — 從檔案執行¶
PlayNcFile (API) 讀取並執行 NC 檔。
4.2 PlayNc — 從字串執行¶
PlayNc (API) 直接從字串執行 NC 碼,適合程式化或動態產生的命令。
4.3 PlayCsvFile — 由 CSV 資料驅動¶
PlayCsvFile (API) 由 CSV 檔(含軸位置、主軸轉速、進給率)驅動仿真。
必要的 CSV 欄位(預設標頭):MC.X、MC.Y、MC.Z、ToolId、SpindleSpeed_rpm、Feedrate_mmdmin。選用:MC.A、MC.B、MC.C、ActualTime、StepDuration。
標頭與時間戳值可用雙引號包覆,解析器會自動去除。ActualTime 接受 HH:mm:ss.fff 或絕對時間 yyyy-MM-dd HH:mm:ss.ffffff 兩種格式(與 MapSeriesByCsvFile (API) 串接時必須用絕對格式,因其以 TimeTag 比對):
"ActualTime","Feedrate_mmdmin","MC.X","MC.Y","MC.Z","SpindleSpeed_rpm","ToolId"
"2026-03-16 15:57:45.559000",10000.0,-351.745,-244.799,-215.799,1270,1
"2026-03-16 15:57:45.705000",10000.0,-351.745,-244.799,-215.799,1270,1
當真實控制器紀錄含有額外欄位(如 t_receive、cnc_delay_s、status)或使用替代欄名(X/Y/Z、feedrate、spindle_speed)時,請在傳入 PlayCsvFile (API) 前先前處理檔案,刪除或重新命名欄位。
Tip
WriteStepFiles (API) 輸出的 CSV 檔可直接由 PlayCsvFile (API) 讀回。
4.4 PlayClFile — 由刀位檔驅動¶
PlayClFile (API) 直接把 NX 刀位檔(CLSF / APT 原始碼,.cls)當作刀具運動重播——也就是與機台無關的 CAM 刀具路徑,在它被後處理成特定機台的程式之前。
Note
與上面幾種檔案播放器不同,CL 播放驅動的是 ClMillingDevice (API) 鏈——刀位直接套用到刀具上——不是 §1 的工具機鏈。用它來驗證程式路徑本身,不受機台與後處理器影響。支援的記錄集合、由 TLDATA 建立刀具,以及對機構鏈的要求,見刀位 (CL) 播放。
4.5 播放器控制¶
| 命令 | 用途 |
|---|---|
Pace (API) |
插入可暫停的檢查點 |
Pause (API) |
暫停執行 |
Reset (API) |
重置播放器狀態 |
Note
任務的兩次播放之間要先重置。一次執行完成後再開始任務,並不會重置它:新的執行會疊在上一次留下的已加工工件、步與訊息之上播放,而第一次播放時會讀取的記錄網格幾何項目,這次改為寫入。透過 HTTP API 操作時,就是在每一次 POST /api/Execution/start 之前先 POST /api/Execution/reset——見透過 HTTP API 進行重播驗收。
5. 檢視結果¶
5.1 網格幾何¶
仿真後工件幾何為 網格幾何(立方體網格)。可儲存後重新載入,避免重新運算初始形狀:
下一次運行時讀回已儲存的幾何:
5.2 步資料檢視¶
每個仿真步都帶有豐富資料(力、力矩、功率、熱、磨耗)。存取個別步:
總步數:
5.3 匯出資料¶
匯出步級 CSV:
匯出波形(shot)CSV:
5.4 訊息¶
利用訊息記錄與追蹤仿真進度:
疑難排解¶
| 現象 | 可能原因 | 處理 |
|---|---|---|
| 仿真極慢,刀具後方拖著一大段淡粉色軌跡 | 幾何移除是瓶頸(網格過細) | 增大 MachiningResolution_mm(更粗的網格) |
| 仿真極慢,但網格調粗也沒幫助 | 受限於步數(每步物理計算) | 透過 MachiningMotionResolution 減少步數(如 ScaledFeedPerCycle(2)) |
| 幾何上有不規則凸起 | 用縮放模型尺寸代替解析度 | 僅使用解析度設定,見上方警告 |
| 顯示卡頓 | DispCache_Mb 過大 |
降低顯示快取(建議 < 1000 Mb) |
| 無步資料 | 未執行仿真、始終沒有裝上任何刀具,或刀具未接觸工件 | 確認有刀具裝上——沒裝上刀時,NC 訊息往往不留任何痕跡,所以要看有沒有產生加工步——並確認刀具路徑與工件相交 |
延伸閱讀¶
- Heidenhain 支援 — 控制器設定
- 通用 NC 碼支援 — ISO NC 支援
- 刀位 (CL) 播放 — 以
PlayClFile重播 CAM 刀位檔 - 步 (Step) — 步是什麼、如何存取與輸出步資料
- 步階欄位參考 — 步階欄位的參考
- 腳本命令 — 腳本命令基礎
- SessionShell — SessionShell 速查