跳轉到

NASA HECC 離心葉輪:依公開葉片座標進行的五軸同動加工

一個 AI 代理 (agent) 拿到一個 NASA 壓縮機葉輪公開的葉片座標——沒有單位,也沒有模型、毛胚、機台或刀具路徑——在 HiNC 中仿真它的加工。它用 Python 腳本放樣出零件,做出一個車削過的毛胚和一台通用五軸機,並寫出五軸刀具路徑。透過 HiNC 的 Web API,HiNC 以一把裝在熱縮刀把上的錐度球頭端銑刀播放這條路徑、加以檢查、算出切削負載、把結果與設計比對,並把它後處理成帶 G43.4(刀尖點控制)的 Fanuc NC。HiNC 的物理計算預測第一版路徑會斷刀,代理因此重寫了它;HiNC 的產品擁有者在 3D 視圖上質疑了一次抬刀,隨之而來的修正省下了十分之一的仿真加工時間。

本頁的一切都是仿真:沒有任何零件在真實機台上切削過。下面每個難題都寫明它的風險、怎麼浮現、如何解決,以及證明解法成立的證據。建好的專案是代理的工作素材,不對外發佈。

HiNC 仿真:加工完成的葉輪放在一台通用五軸機的旋轉台上,裝在熱縮刀把上的錐度球刀傾斜著伸進一條流道

整件加工完成後的葉輪:從熱縮刀把伸出 92 mm 的錐度球刀,正在入口附近重描一面已完成的牆面。以 0.5 mm、在加入就地銜接之前的路徑上渲染(切削點相同),出自一次什麼都沒切的執行。畫面擷取自 HiNC 3.2.39。

案例

來源是 NASA 承包商報告 CR-2014-218114/REV1 High Efficiency Centrifugal Compressor for Rotorcraft Applications(G. Medic 等人,United Technologies Research Center,為 NASA Glenn Research Center 撰寫)的附件。附件中的資料夾 AppendixE.4_HotCoordinates/ 給出一條輪轂線(葉片所立的本體)與一條罩殼線(葉片上方的機殼輪廓),兩者都是 x r 兩欄;以及兩種葉片形狀各十一個截面,每個截面是 X, R*THETA, R 三欄。零件有 15 片主葉片與 15 片分流葉片(較短的葉片,從流道——兩片葉片之間的通道——的中途開始)。沒有任何檔案寫明單位。

NASA 的表照原樣、以檔案本身的數字畫出:左邊是子午面視圖,輪轂線 C.1(實線)與罩殼線 C.2(虛線)往上游延伸到入口管、往下游接到擴散器,兩線之間是主葉片(藍)與分流葉片(橘)各十一個截面,從 X = 0 的前緣到 R 8.494 的出口;右邊是從入口沿軸向看,全部 15 片主葉片與 15 片分流葉片的截面 1,依 THETA 轉到定位、每 24 度重複一次

資料夾給的 24 張表,以檔案本身的數字畫出(單位是英吋,見第一個難題):輪轂線 350 點、罩殼線 310 點,每個葉片截面 201 點,從輪轂(截面 1)到罩殼線(截面 11)。右圖的 THETA 取從入口看的逆時針方向,與代理的模型相同;檔案沒有寫明它往哪個方向。

報告說的比檔案多:真實零件是 Ti-6Al-4V,葉片與輪轂之間是複合圓角;0.012 in 的葉尖間隙不在截面裡;而座標是設計轉速 21,789 rpm 下的熱態形狀,製造用的冷態形狀並未提供。THETA 的方向、零件放在哪裡、怎麼夾持、控制器與刀具都沒有寫明,也沒有實體模型、毛胚或刀具路徑。HiNC 沒有 CAM,所以代理自己擔任 CAM 程式設計者,寫出刀位 (CL) 檔——帶刀軸向量的刀尖點,也就是 CAM 系統交給後處理器的東西——並把 HiNC 當作機台、檢驗者與後處理器來用。

代理建了什麼

一切都經由 HiNC 的 Web API 完成,依循的是專案建構、透過 HTTP 驅動網頁服務(英文,未鏡像)、刀位 (CL) 播放與透過 HTTP API 進行重播驗收。每個值都標明出處:讀取(來源寫明的)、推得(由來源推算的)、自選(來源沒說、由代理決定的)或量測(在 HiNC 3.2.39 上的一次執行中量得的)。

項目 值 依據
單位、尺寸 英吋,以 1:1 使用;葉尖外徑 431.8 mm;15 + 15 片葉片 單位與尺寸推得;1:1 自選;葉片數讀取(Figure 58)
設計模型 以各截面放樣出葉片,立在旋轉出來的輪轂上,並修齊到罩殼線 截面讀取,放樣推得;輪轂鼻部、12 mm 背盤、Ø30 mm 軸孔自選:資料只給流路
毛胚 把罩殼線旋轉成形,以入口平面與半徑 215.9 mm 的外緣封閉,就像車削過一樣;毛胚與設計模型的範圍都是直徑 431.8 mm、台面上方 60 至 212.11 mm(高 152.1 mm) 自選,讓銑削只需開出流道
夾具 Ø280 × 60 mm 的夾持盤,Ø29.6 mm 的凸台插在軸孔裡、頂端在台面上方 85 mm;1,080 個三角形 自選
機台 通用機:旋轉台 C 軸、擺頭 B 軸;X ±900、Y ±600、Z −1000 至 +400 mm、B ±110°、C 無限旋轉 自選
程式原點 台面中心,Z 沿葉輪軸線向上;G54 (0, 0, −700) 自選;G54 量測
控制器、材料、主軸 Fanuc(HiNC 把 CL 後處理成 Fanuc NC);AA7075;通用主軸 24,000 rpm,以 12,000 rpm 運轉 自選;真實零件的鈦合金讀取
刀具 錐度球刀 R3、半錐角 2°、刃長 70 mm、從 88.9 mm 起為 Ø12 刀柄;3 刃、碳化鎢 自選:刀尖細、上段剛性高;88.9 mm 推得
刀把、伸出量 熱縮刀把,鼻端 Ø24,量規長度 102 mm;伸出 92 mm,刀長 194 mm 自選;194 mm 量測
工序 粗加工分層、層距 2.5 mm、留 0.5 mm、1,800 mm/min;先精修所有葉片牆面(等高輪廓相距 1 mm、刀軸偏離牆面 3°、側刃離其他葉片 0.55 mm),再精修任何輪轂,因為一道輪轂精修會沿著兩面牆走;每個輪轂沿流線精修,線距至多 1 mm;精加工 2,400 mm/min 自選
刀軸 粗加工與輪轂精修在不干涉之處往下游側傾 12°;精加工時相鄰切削點之間刀軸至多轉 4° 依 HiNC 的物理計算結果自選
刀具路徑 粗加工 621,840 個移動;牆面與 14 個輪轂 848,914 個;最後一個輪轂 13,901 個 量測
任務 階段 A 粗加工、B 牆面與 14 個輪轂、C 最後一個輪轂(開啟物理),各以一筆零件記錄結束;碰撞偵測開啟;運動解析度 1 mm 與 15°;之後做差異比對與 NC 轉換;另有三個清單在整件執行時不勾選:重播後處理出的 NC(D)、碰撞探測(Z)與試跑(T) 自選(能接續的任務);2,298,853 步量測
解析度 參考執行用 1 mm,拍圖用 0.5 mm(仿真毛胚的立方體邊長) 自選(網格解析度)

HiNC 中的通用五軸機與加工完成的葉輪:左邊是立柱,右上是帶著擺頭與主軸的滑枕,圓形的旋轉台裝在方形的十字滑台上,葉輪放在夾持盤上,錐度球刀裝在熱縮刀把上,斜著停在入口上方

代理的腳本用方塊、圓柱與圓錐建出的機台:立柱、帶著擺頭 B 與主軸的滑枕,以及裝在 X、Y 滑台上、帶著 Ø280 mm 夾持盤的旋轉台 C。與本頁開頭那張圖出自同一次執行,以 0.5 mm 渲染。畫面擷取自 HiNC 3.2.39。

照比例畫的 T1 刀具與熱縮刀把:刀尖球 R3、半錐角 2°、刃長 70 mm、刃部頂端 R5.34,無刃錐段到 88.9 mm 處成為 Ø12,3 mm 的光面刀柄,刀把鼻端 Ø24、伸出 92 mm,刀把的 4.5° 錐面、Ø42 本體與 Ø63 凸緣,直到離刀尖 194 mm 的量規線;旁邊是放大 20 倍的刀尖:錐面往下延伸到刀尖平面時半徑為 2.897(D = 5.794),球頭則是 Ø6

照下表數字以比例畫出的 T1 刀具,以及放大 20 倍的刀尖:2° 的錐面往下延伸到刀尖平面時半徑為 2.897,所以 D = 5.794 mm,而球頭寬 6 mm。D = 6 對這個輪廓不合:HiNC 在換刀時會拒收,並指出它要的是 D = 5.794。

代理在 HiNC 刀具庫中輸入的刀具與刀把:

項目 值
輪廓 刀尖球 R3、半錐角 2°、刃長 70 mm;輸入 D = 5.794133 mm,即錐面線延伸到刀尖平面的寬度
刃部以上 無刃的錐段延續到 88.86 mm 處接上 Ø12 刀柄;刀柄建模伸入刀把 40 mm
刃形 3 刃、等螺旋角 30°、徑向前角 8°、徑向後角 8°
刃口 刃口半徑 15 µm
材料 碳化鎢,HiNC 的 WC-Co10-600nm 刀具材料,刃部與刀柄都用它
刀把 Ø12 刀柄用的通用熱縮刀把,從鼻端起的 (Z, R) 輪廓:(0, 12)、(70, 17.51)、(70, 21)、(82, 21)、(82, 31.5)、(102, 31.5);也就是鼻端 Ø24、4.5° 錐面、Ø42 本體與 Ø63 凸緣,量規長度 102 mm
伸出量、刀長 92 mm;102 + 92 = 194 mm
刀補表(重播後處理出的 NC 時用) 第 1 列取自刀具庫:刀長 194 mm、半徑 5.3415 mm(輪廓的最大半徑,在刃部頂端)

代理的腳本寫出的刀具路徑:先列一條流道各工序的切削點,再列整件的各支程式;每條流道都是第一條轉 24° 而得:

工序 一條流道 程式:行數(移動數)
粗加工 41,161 個切削點,37.6 m 流道 1–15 的粗加工:627,472(621,840)
牆面精修,繞一片主葉片與一片分流葉片 43,206 個切削點,30.1 m 全部 30 片葉片的牆面,再加流道 1–14 的輪轂:852,646(848,914)
輪轂精修 13,804 個切削點,14.6 m 流道 15 的輪轂:13,963(13,901)
試跑 流道 1 的粗加工、牆面與輪轂精修 在整件之前單獨播放:99,611(98,977)

代理怎麼管理這件工作

  • 先小後大。 在五軸機上播放 CL(由 HiNC 解出全部五軸)、後處理成 G43.4 NC 再重播,這整條管線先在一個小的圓錐台測試上乾淨地跑通;接著以 1、0.5 與 0.25 mm 為一條流道計時,並在整件之前先試跑流道 1。
  • 通過標準。 重播驗收的各項檢查(步數、執行的行數、切到材料、已建立差異比對);訊息依 id 與次數列出,沒有碰撞、快移切入材料或超出行程極限;產生器沒有丟掉任何刀具位置;開啟物理的那條流道,其負載逐步對照 HiNC 的斷刀規則判讀。參考數字接著在剛重新啟動的 HiNC 上量得,並固定下來供重建時對照。
  • 沒有盲建。 沒有另一個代理重建這個案例;最接近的檢查,是一個審查代理以「只拿到案例檔案的代理」的眼光去讀建案指示。
  • 對抗式審查。 早期的一次審查迫使路徑與匯出改了三處(見下面的難題)。之後的三輪審查,每個審查代理都配一個反駁代理,在建案指示與來源筆記中確認了 48 項發現(39、5 與 4 項),全部已更正;最重的兩項:一個數字無法重現的探測,以及從試跑到整件之間缺了一步。
  • 共用的伺服器。 代理在一台與他人共用的 32 核伺服器上跑自己的 HiNC 實例,每次量測執行之前都重新啟動它,讓記憶體峰值只屬於那一次執行;參考執行用 1 mm、拍圖用 0.5 mm,沒有任何整件執行細於 0.5 mm。
  • 人在哪裡介入。 指派這項工作的 HiNC 產品擁有者裁定:每把刀都要裝在合乎實際的刀把上、用剛好夠用的最短伸出量,所以代理定義了一個熱縮刀把,並在每張圖中都畫出它;排除客戶的素材與未獲授權的資源,所以代理自己產生機台;要求依公開文件建案;並在畫布上點出一次抬刀(〈擁有者看到奇怪的抬刀〉)。

難題

除非難題中另有註明,數字都是在一台 32 核伺服器上的 HiNC 3.2.39 以 1 mm 量得。

座標沒有單位

  • 情況。 檔案給出的出口半徑是 8.49376,沒有單位。
  • 風險。 零件小了或大了 25.4 倍。
  • 怎麼發現。 一開始就知道:沒有任何檔案寫明單位。
  • 解法。 與報告的 Table 2 對照,座標是英吋;以 1:1 使用。
  • 證據。 三個直徑都與該表一致到最後一位:2 × 1.5949 = 3.190、2 × 2.6574 = 5.315 與 2 × 8.49376 = 16.988 in。

為了 0.2 MB 的資料下載 4.93 GB

  • 情況。 附件是一個 4.93 GB 的 zip;案例只需要其中 25 個檔案,約 0.2 MB。
  • 風險。 為了它們下載 4.93 GB。
  • 怎麼發現。 紀錄頁上的檔案大小。
  • 解法。 伺服器沒有宣告支援範圍請求,卻對帶範圍的請求回了部分內容,所以代理依位元組範圍讀出 zip 的目錄與那 25 個項目。
  • 證據。 實際只下載約 5 MB;每個項目都通過 CRC 檢查,來源筆記列出每個檔案的 SHA-256。

授權允許什麼

  • 情況。 紀錄上寫著 Public Use Permitted,但資料屬於一份承包商報告,不是美國政府著作,而紀錄既沒有界定範圍,也沒有指名任何授權或權利人。
  • 風險。 誇大使用與再散布這些檔案的權利。
  • 怎麼發現。 代理最初的筆記說這些資料不受著作權保護;紀錄的 API 欄位(belongsToUsGov: false、licenseType: NO)並沒有這麼說。後來的一次審查讓筆記寫明這項判定有哪些未界定之處。
  • 解法。 逐欄引用紀錄,以一行固定文字標示作者,而備份副本以這種解讀為依據,並會依權利人要求移除。
  • 證據。 案例只取寫明「not subject to the EAR or the ITAR」(不受 EAR 或 ITAR 管制)的那個資料夾,附件中帶有出口管制標示的檔案一個也沒用。

用哪一台五軸機?

  • 情況。 HiNC 的資源庫只有一條三軸的通用機構鏈;資源庫中的五軸機型都是未獲此用途授權的第三方機台,而唯一的刀把檔帶著第三方的名稱。
  • 風險。 公開頁面上出現廠商的機台,或者根本沒有機台。
  • 怎麼發現。 建案之前把資源庫看過一遍。
  • 解法。 一支腳本用方塊、圓柱與圓錐產生一台 C 軸在台上、B 軸在主軸頭的機台,每次執行產生的檔案都逐位元組相同;刀把則是專案中的一條 Z–R 輪廓(建立虛擬工具機)。
  • 證據。 HiNC 綁定了全部五軸,程式原點的呼叫得出主軸鼻端位於台面上方 700 mm,與建造時一致,而整件加工沒有發出任何行程極限訊息。

伸出量可以多短?

  • 情況。 擁有者要求剛好夠用的最短伸出量;熱縮刀把只夾得住圓柱形的刀柄,而錐段要到 88.9 mm 處才接上刀柄。最深的流道深 67.5 mm,沿 12° 的側傾量約 69 mm,刀軸傾斜更多的地方還要更長。
  • 風險。 刀把夾到錐段或擦到葉片,或是一段沒有工廠會用的懸臂。
  • 怎麼發現。 計算路徑之前,先拿刀具對著最深的流道比劃。
  • 解法。 92 mm,留下 3 mm 的光面刀柄。產生器在刀把以下每隔 2–3 mm、沿刀把每隔 5–20 mm 的高度上,讓無刃的錐段、刀柄與刀把和每一片葉片及輪轂保持 1 mm;它不會拿沿著大幅傾斜之刀軸量得的深度,去和 70 mm 的刃長比較。
  • 證據。 沒有丟掉任何刀具位置;HiNC 讀回的刀長是 194 mm。

刀具離葉片多遠?

  • 情況。 代理的產生器以 110 萬個葉片取樣點檢查間隙,取樣點間距最大 1.4 mm。
  • 風險。 最近取樣點的距離會高估間隙約 0.1 mm,足以切進葉根。
  • 怎麼發現。 一次對抗式審查。第一個修法——改用每個取樣點的切平面——在越過葉片邊緣處反而低估了間隙:丟掉 35,271 個位置,葉片精修從每條流道 30.1 m 掉到 11.5 m。
  • 解法。 切平面只在它所屬取樣點的那一小片(±0.75 mm)之內採信。
  • 證據。 沒有丟掉任何位置,精修長度回到 30.1 m,而且整件加工的比對顯示流道與葉面都在 ±0.1 mm 之內。

沒有封閉的設計模型

  • 情況。 代理用的 Python 布林運算函式庫 manifold3d(負責聯集與修剪實體)以 32 位元浮點數運算;從 STL 重新載入後,設計模型有 86 個零面積三角形,並不水密。
  • 風險。 幾何比對底下是一個開放的模型。
  • 怎麼發現。 一次對抗式審查重新載入了這個檔案。
  • 解法。 匯出之前先合併頂點、剔除退化面;兩個網格都重新載入驗證。
  • 證據。 重新載入後都封閉:設計模型 461,378 個三角形、5,653.8 cm³,毛胚 68,400 個、10,593.7 cm³。

擦到零件的退刀,進給太快的下刀

  • 情況。 HiNC 在每次退刀的起點都回報 Play-RapidCut--Detected(快移碰到零件),此時刀具仍碰到約 0.00001 mm³。而下刀的最後 3 mm——其中 2.5 mm 在材料裡——是以 1,800 mm/min 的切削進給走的。
  • 風險。 快移一開始就帶著接觸,真正的一次會混在其中被漏掉;端銑刀以切削進給被軸向推進材料。
  • 怎麼發現。 HiNC 的訊息;一次對抗式審查。
  • 解法。 退刀先沿刀軸以進給走 5 mm,再升到毛胚外 8 mm;若這一跳在毛胚外不淨空、長於 80 mm 或讓刀軸轉動超過 10°,則退滿 100 mm(這樣的跳躍中刀軸一轉,刀尖雖走直線,刀柄與刀把仍會掃過流道)。下刀則快移到毛胚外 8 mm,再以 900 mm/min 進給切入。
  • 證據。 整件加工沒有發出任何 Play-RapidCut--Detected,也沒有碰撞。

HiNC 的物理計算預測會斷刀

  • 情況。 最後一條流道的輪轂精修開啟物理後,刀具的降伏應力比(切削力在刀身中造成的最大主應力,除以刀具材料的抗拉強度)在入口處尖峰到 3.5。依 HiNC 的規則,超過 1.0 持續多於一步,或單一步超過約 2.0,就預期會斷刀(評估製程可加工性)。
  • 風險。 斷刀留在零件裡。
  • 怎麼發現。 HiNC 的降伏應力比時序圖,接著是它的逐步數值。
  • 解法,分三步:
    1. 球刀以刀尖切削,而刀尖的切削速度為零;往下游側傾 12° 讓它改以側面切削。
    2. 橫越流道切削時,輪轂精修在靠近牆面處 0.4 mm 內讓刀軸擺動 15–20°,於是離刀尖 30–60 mm 高的側刃掃過材料的速度是刀尖的好幾倍。輪轂改沿流線重切,並加上一道刀軸平滑:超過 6° 的跳動從 303 處降到 23 處。
    3. 第 99 百分位數降到 0.34,但在刀軸仍會跳動的地方,尖峰升到 4.2。現在精加工在相鄰切削點之間刀軸至多轉 4°;更大的轉動在空中完成。
  • 證據。 在 0.5 mm 下,這條流道的 26,995 個切削步:中位數 0.108、第 99 百分位數 0.344、最大 0.944,切削力至多 483 N(在加入就地銜接之前量得,就地銜接沒有改變切削點)。在 1 mm 下,下刀之後的某一步讀到 1.26——單單一步,低於 2.0——那裡較粗的毛胚高估了接觸。

最後一個輪轂降伏應力比隨路徑修改的圖:四列各是一版路徑,橫軸 0 到 4.5,1.0 與 2.0 畫虛線;第一版只讀過尖峰 3.5;往下游側傾 12°、沿流線、刀軸平滑後中位數 0.108、第 99 百分位數 0.344、最大 4.2、5 步超過 1.0;精加工相鄰切削點刀軸至多轉 4° 後最大 0.944、沒有一步超過 1.0;加上就地銜接在 1 mm 下中位數 0.147、第 99 百分位數 0.397、最大 1.26、一步超過 1.0

最後一個輪轂的降伏應力比隨路徑修改而變:每一列是一版路徑,點是中位數、菱形是第 99 百分位數、方塊是最大值。HiNC 的規則是超過 1.0 持續多於一步,或單一步超過約 2.0,就預期斷刀。HiNC 3.2.39,逐切削步讀取。

最後一個輪轂的切削步隨路徑修改的變化,在 HiNC 3.2.39 上逐步讀取:

最後一個輪轂的路徑 解析度 切削步 降伏應力比:中位數 / 第 99 百分位數 / 最大 超過 1.0 的步數 切削力:第 99 百分位數 / 最大
最初的寫法:球刀以刀尖切削,輪轂從一面牆橫越到另一面牆 — — 最大 3.5 — —
往下游側傾 12°、沿流線、刀軸平滑 0.5 mm — 0.108 / 0.344 / 4.2 5 —
精加工相鄰切削點之間刀軸至多轉 4° 0.5 mm 26,995 0.108 / 0.344 / 0.944(第 90 百分位數 0.261) 0 175 / 483 N
同樣的切削點,加上就地銜接 1 mm 25,935 0.147 / 0.397 / 1.26 1 201 / 647 N

看起來嚇人、其實沒事的數字

  • 情況。 若照字面讀,時序圖顯示的進給是程式進給的八倍、切屑厚達 0.88 mm(而每刃進給只有 0.067 mm:2,400 ÷ 12,000 rpm ÷ 3 刃),而且在 0.5 mm 下,輪轂有 13 % 的切削步切深為無限大。
  • 風險。 為了追一個讀值去改寫一條沒問題的路徑,而真正的過載卻藏在同一張圖裡:第一版路徑就同時帶著這類讀值(0.4–0.9 mm 的切屑、30–60 mm 的切深)和它真正的毛病。
  • 怎麼發現。 這些數字與路徑本身的進給互相矛盾。
  • 解法。 數值逐步讀取,只看刀具有接觸的步(觀看執行):時序圖在一段顯示範圍內的最大值由快移與下刀主導;在 0.5 mm 下,切屑讀值以 0.12 mm 為一階跳動,輪轂約四分之一的切削步讀到 0.39、0.51、0.63 或 0.75 mm;每一個無限大的切深都是單獨一步,前後相鄰的步是 1–3 mm。判斷切削的是降伏應力比與切削力,也正是它們分辨出了第一版路徑的毛病。
  • 證據。 C 階段的 25,935 個切削步,進給的中位數、第 99 百分位數與最大值都是 2,400 mm/min;抽查的厚切屑步都是 130–170 N 的穩定切削。

記憶體用到哪裡去了

  • 情況。 早期路徑的一條流道,在 0.5 mm 下峰值 24.4 GB、在 0.25 mm 下 88.5 GB,兩者都發生在幾何比對階段,而在 0.5 mm 下切削時只有 3.3 GB(在 HiNC 3.2.39 量得,這種大件沒有再量過)。重新載入或重新啟動會清掉該次執行的結果。
  • 風險。 記憶體耗盡的執行、把上一次執行也算進去的峰值,以及再也讀不到的數值。
  • 怎麼發現。 每 30 s 記錄一次記憶體;有一次整件執行的結果被重新載入清掉,只好再播一次。
  • 解法。 解析度依用途而定,整件工作也可以逐階段執行、差異比對放在最後。每次量測執行之前都重新啟動 HiNC,每個數值都在同一個工作階段中讀取。預算:每百萬步約 4.6 GB,之後 1 mm 的差異比對約再加 10 GB、NC 轉換約 3 GB(記憶體規劃)。
  • 證據。 各階段的峰值是 7.2、9.1 與 12.1 GB,而整件一次跑完是 23.5 GB:階段之間重新啟動的話,可以壓在 16 GB 之內,雖然沒有在 16 GB 的電腦上試過。

早期路徑的一條流道(135,162 步)在三種解析度下,於 HiNC 3.2.39 量得:

解析度 實際耗時 切削時的記憶體 峰值(差異比對時)
1 mm 317 s — 11.8 GB(這個 HiNC 先前已跑過別的執行)
0.5 mm 504 s 3.3 GB 24.4 GB
0.25 mm 1,143 s 約 13 GB 88.5 GB

整件以拍圖用的 0.5 mm 執行:

執行 步數 實際耗時 記憶體峰值
早期路徑的整件,不做差異比對 2,108,965 5,338 s 15.4 GB
從 B 接續:B、C 與拍圖姿態,在加入就地銜接之前的路徑上,不做差異比對 1,422,277 3,651 s 18.2 GB
各階段都讀取記錄、只播拍圖姿態,接著做整件的差異比對 42 207 s 40.4 GB

悄悄從頭開始的接續執行

  • 情況。 分階段的任務必須能憑前面各階段的記錄,從 B 或 C 階段接續。
  • 風險。 接續的執行在沒有任何訊息的情況下重切原始毛胚。
  • 怎麼發現。 從 HiNC 的原始碼推敲記錄在什麼時候會被讀取;取消勾選整個階段,也會連它的記錄一起跳過。代理對這條規則的第一次說明是錯的;第二輪審查抓到了它。
  • 解法。 「首次讀取,否則寫入」的記錄,只有在它的檔案存在、而且這次執行還沒有播放任何東西時才會被讀取,所以接續時只取消勾選前面各階段的程式檔案列;STL 毛胚需要一筆第 0 階段的記錄(能接續的任務)。
  • 證據。 先從 B、再從 C 接續,執行都以整件的零件結束;各階段步數加總比整件少 99 步。

擁有者看到奇怪的抬刀

  • 情況。 兩道精加工之間的直線移動被拒時,刀具就離開毛胚,抬高最多 95 mm:為了跨過一小段間隔,這樣做了 1,406 次,抬刀中位數 55 mm。
  • 風險。 約 1 h 25 min 的仿真時間白白浪費,以及一條沒有機械加工師會接受的路徑。
  • 怎麼發現。 擁有者在 HiNC 的畫布上點出其中一次——為了橫越 10.7 mm 而升降 30 mm;代理數出了其餘的。
  • 解法。 就地銜接,只用在精加工:離開表面抬 1.5 mm(必要時最多 12 mm),以 1 mm 與 2° 的步距橫移,以 900 mm/min 下降,每個姿態都經過檢查。第一版沿較近那一面的法向抬起,在擁有者點的那個位置失敗了——那是牆面與輪轂的夾角,離兩者分別 3.00 與 3.01 mm;改沿角平分線抬起後通過。
  • 證據。 1,380 次銜接改成就地銜接;C 階段的逐步物理沒有改變;仿真時間從 49,139 s(13 h 39 min)降到 44,002 s(12 h 13 min)。

擁有者在畫布上點出的那段抬刀,照比例的側視圖:左邊是第一版連接,沿刀軸退 30 mm、橫移 7.1 mm、再進 30 mm,共 67 mm 的動作;右邊是就地銜接,抬 3 mm、在 12 步內橫移 11.5 mm、再下 3 mm,共 17 mm;10.7 mm 跳刀的兩端各畫一個 R3 的球頭

同一段兩種連接,照比例畫在同一個側視平面上(通過兩個切削端點與刀軸;座標取自案例的最終 CL):兩道精加工在牆面與輪轂的夾角相隔 10.7 mm(刀尖到刀尖)結束與開始,刀軸相差 7.4°。第一版沿刀軸以進給退 5 mm、快移 25 mm,橫移 7.1 mm,再以 900 mm/min 進 30 mm;就地銜接抬 3 mm,在 12 步內橫移 11.5 mm,再以 900 mm/min 下 3 mm。切削點沒變,最後一個輪轂的逐步物理讀值不變。

改完之後,各程式從一道切削移到下一道的方式(不計每道工序最初的進刀與最後的退刀):

程式 直線進給 就地銜接 升到毛胚外 8 mm 退滿 100 mm
粗加工,流道 1–15 32,685 無:粗加工從不就地銜接 315 855
全部 30 片葉片的牆面,再加流道 1–14 的輪轂 3,208 1,380 14 147
流道 15 的輪轂 77 15 1 3

如實呈現零件的圖

  • 情況。 本次執行切出的表面會渲染成粉紅色,已建立的差異比對會一直留在畫面上直到下一次執行,而在時序圖上選一步並不會讓機台移過去。
  • 風險。 一個粉紅色的零件、一個帶著比對色彩的零件,或一把停在遠離加工處的刀。
  • 怎麼發現。 最初的幾張渲染圖。
  • 解法。 圖來自一次讀取各階段記錄、只播放一段重描已完成牆面之短姿態路徑的執行,以 0.5 mm、在加入就地銜接之前的路徑上進行。
  • 證據。 那次執行在 15 s 內什麼都沒切;開啟差異比對時則花了 207 s 與 40.4 GB。

哪片分流葉片屬於哪條流道

  • 情況。 這份資料裡,主葉片 0 與主葉片 1 之間的分流葉片是分流葉片 1,不是分流葉片 0:每片分流葉片的 THETA 比同號主葉片的小約 12°。
  • 風險。 照編號挑分流葉片,流道的邊界就落在錯的葉片上,路徑隨後穿過葉片。
  • 怎麼發現。 從各截面的 THETA 值看出。
  • 解法。 路徑腳本不寫死分流葉片:流道 1 取球心所沿的圓上、主葉片 0 到主葉片 1 之間的自由區間,裡面的分流葉片是兩者之間的那一片標籤(這份資料是分流葉片 1)。
  • 證據。 流道 1 取到分流葉片 1;整件加工的比對顯示流道與葉面都在 ±0.1 mm 之內,也沒有發出碰撞訊息。

看起來像讀錯記錄的摘要

  • 情況。 代理的播放腳本印訊息摘要時,每種訊息 id 只印一則文字,所以在從 B 階段接續的那次執行中,兩則 ReadMeshedGeom 訊息都顯示 A-init.wct。
  • 風險。 誤以為接續的執行讀錯了記錄。
  • 怎麼發現。 讀執行摘要。
  • 解法。 HiNC 的原始碼顯示,每次讀取用的都是它自己那一列的檔名。
  • 證據。 兩次讀取的是 A-init 與 A-done,而且那次執行以整件的零件結束(見上面〈悄悄從頭開始的接續執行〉)。

重新啟動後關閉專案回 400

  • 情況。 重新啟動之後 HiNC 沒有載入任何專案,POST /api/Project/close 回 400 No project is currently loaded。
  • 風險。 重建腳本還沒建出任何東西就卡在這個錯誤上。
  • 怎麼發現。 每次量測執行都從重新啟動開始,接著重建專案。
  • 解法。 重建腳本容忍這個 400,刪掉舊的專案檔並照樣建出專案。
  • 證據。 重新啟動之後直接重建的那一步照常建完。

結果與效益

全部都是仿真:在一台 32 核伺服器上的 HiNC 3.2.39 以 1 mm 量得,每次執行之前都重新啟動 HiNC。

執行 步數 實際耗時 記憶體峰值
試跑,流道 1:99,611 行全部執行,一則檔案行數提示(差異比對開、NC 轉換關) 153,128 357 s 8.0 GB
整件,兩次執行(差異比對與轉換都開) 2,298,853 4,181 與 4,145 s(70 min) 23.5 與 22.4 GB
階段 A / B / C(每段都轉換自己的程式,只有 C 建立差異比對;B、C 為接續;A 取自同一檔案較早的一次執行) 1,031,477 / 1,239,043 / 28,234 1,642 / 2,347 / 131 s(27 / 39 / 2 min) 7.2 / 9.1 / 12.1 GB
重播後處理出的 NC(差異比對開) 2,299,229 4,073 s(68 min) 20.7 GB(最後一步時 11.1 GB)
碰撞探測,一支 13 行的程式:球刀在 x = 240 mm 處——半徑 215.9 mm 的外緣之外——往下插進旋轉台 3 mm,刀具與刀把離毛胚至少 18 mm;一則檔案行數提示、七則 Collision--Detected 錯誤,都是旋轉台撞上刃部,發生在插下與退回的路上,另有一則 Play-Touch--None 警告,因為完全沒碰到毛胚(差異比對與轉換都關) 551 5 s 1.6 GB
整件 值
執行的行數 627,472 + 852,646 + 13,963,每一行都執行了
碰到毛胚、建立比對 兩者都有:IsTouched 峰值為 1,比對的疊色已建立
仿真時間 44,001.72 s(12 h 13 min)
訊息 三則檔案行數提示;沒有碰撞、快移切入材料或超出行程極限
幾何比對 流道與葉面在 ±0.1 mm 之內
開啟物理的最後一個輪轂,25,935 個切削步 進給全程 2,400 mm/min;切削力中位數 75 N、第 99 百分位數 201 N、最大 647 N;降伏應力比中位數 0.147、第 99 百分位數 0.397、最大 1.26 只出現在一步(0.5 mm 下為 0.94)
後處理出的 G43.4 NC 621,853 + 848,924 + 13,911 行,每一行都執行了;比 CL 播放多 376 步;只有它的三則檔案行數提示

給加工工程師。 代理能寫出示範品質的五軸葉輪路徑,而 HiNC 的檢查在動用任何機台之前就找出了其中真正的毛病:起點仍帶著接觸的快移,以及一條預測會斷刀的路徑。它還沒有經過生產驗證:只有一道輪轂精修做過負載檢查,而且是以鋁材計算。

給老師或學生。 拿一個已知尺寸核對單位;錐度球刀的直徑;為什麼球刀不該用切速為零的刀尖切削,以及為什麼擺動的刀軸會讓側刃上段過載;為什麼被解析度量化的讀值不是負載。

給評估這種做法值不值得的人。

  • 由人提供的:這項工作、擁有者的裁決,以及一次觀察。
  • 交付的:全部 15 條流道的路徑,通過 HiNC 的各項檢查,以及一支每一行都能重播的 G43.4 程式;降伏應力比尖峰從 3.5 降到 0.94;省下十分之一的仿真時間。
  • 代價:約 1,400 行 Python,其中約 840 行用於刀具路徑,產生一次約 5 分鐘;每次整件執行 70 min 與 23.5 GB,或分階段、每段至多 12.1 GB;NC 重播 68 min;一次重新載入之後重跑了一次執行。
  • 依賴的:審查代理。
  • 無法告訴你的:這條路徑實際切金屬時如何,更不用說切鈦合金。

誠實的限制

  • 示範品質。 路徑是代理自己的 CAM,從未在金屬上試過。
  • 做過負載檢查的。 只有最後一個輪轂,2,298,853 步中的 28,284 步。每條流道都是同一條路徑轉 24°,而每個輪轂都在所有牆面之後加工,所以它代表其他輪轂,卻不代表刀具接觸最多的粗加工,也不代表牆面。負載假設材料為 AA7075、刀具為代理選的那一把。
  • 刀把間隙是代理自己的檢查。 產生器在取樣的高度上(沿刀具每 2–20 mm 一點)讓錐部、刀柄與刀把離葉片與輪轂至少 1 mm,不比較沿著大幅傾斜的刀軸的深度與刃長;播放乾淨的碰撞訊息不當成比這更多的證據。
  • 較簡化的零件。 鼻部、背盤與軸孔是自行設計的;葉尖修齊到罩殼線(最多修掉 0.34 mm),沒有葉尖間隙;沒有圓角;用的是熱態形狀,而且可能是鏡像的,因為 THETA 的方向沒有寫明;通用機台;沒有夾持。
  • 仿真時間是刀尖路徑長除以進給(以旋轉軸 36,000°/min 的快移速率為上限),再加上 20,000 mm/min 的快移,沒有加減速:不是週期時間。
  • 後處理出的 NC 是以它的計數、訊息與它自己的比對來判斷,沒有逐數字與 CL 播放對照;它多出的 376 步沒有追查。
  • 只在一個版本上量過。 執行時間、記憶體峰值與幾何比對都只出自 HiNC 3.2.39。
  • 圖拍於加入就地銜接之前(切削點相同)。沒有做盲建。

讀者可以帶到自己案例的

  • 先拿一個已知尺寸確認單位。
  • 讀回 HiNC 建出的刀具,與原本想要的那一把比較。
  • 先在小案例上證明整條管線,並在整件之前先跑一段(刀位 (CL) 播放)。
  • 把物理放在能代表其餘部分的地方,逐步判讀,並說明它沒有涵蓋什麼(觀看執行)。
  • 在信任一項安全檢查的沉默之前,先用一次刻意的碰撞證明它會發聲。
  • 把長的工作分階段,並把差異比對當成另一次執行來規劃預算(記憶體規劃、幾何驗證)。
  • 在任何東西重新載入專案之前,讀完每一個數值。
  • 盯著畫布看:看起來奇怪的動作,通常真的有問題。

來源與授權

  • 來源。 G. Medic, O. P. Sharma, J. Joo, L. W. Hardin, D. C. McCormick, W. T. Cousins, E. A. Lurie, A. Shabbir, B. M. Holley 與 P. R. Van Slooten(United Technologies Research Center),High Efficiency Centrifugal Compressor for Rotorcraft Applications,NASA/CR-2014-218114/REV1,NASA Glenn Research Center,2017——https://ntrs.nasa.gov/citations/20180001471;它的附件,含 AppendixE.4_HotCoordinates/——https://ntrs.nasa.gov/citations/20180001472。連結若搬移,可搜尋 High Efficiency Centrifugal Compressor for Rotorcraft Applications 或 NASA/CR-2014-218114。請使用 REV1(2017),而不是已被取代的 2014 原版。
  • 授權與條款。 NASA Technical Reports Server 紀錄上的著作權判定是 Public Use Permitted;它不附任何授權、不指名權利人,並標明這不是美國政府著作,所以這些資料不屬於公共領域。本頁的使用,建立在把這項判定解讀為涵蓋這些座標上,而不是建立在法律意見上。NASA 的科學與技術資訊使用條款適用。資料夾寫明它「not subject to the EAR or the ITAR」(不受 EAR 或 ITAR 管制)。
  • 出處標示。

    Impeller geometry from NASA/CR-2014-218114/REV1, "High Efficiency Centrifugal Compressor for Rotorcraft Applications", G. Medic et al., United Technologies Research Center, for NASA Glenn Research Center; supplement https://ntrs.nasa.gov/citations/20180001472 (Appendix E.4 hot coordinates; NTRS copyright determination: Public Use Permitted). Tech Coordinate lofted the surfaces and made the blank, tool path, tool, holder and machine set-up; NASA does not endorse Tech Coordinate, HiNC or this case.

    依 NASA 的條款,資料依現狀提供,不附任何保證。本頁沒有使用任何 NASA 標誌。

  • 修改之處。 25 個檔案逐位元組原樣使用;其餘一切都出自代理之手,如設定表所記錄。從報告取用的只有數字。

  • 備份。 本頁不提供下載。公司網站保留那 25 個檔案的備份,以防連結失效,並會依權利人要求移除。

從附件取得的檔案,可以用 SHA-256 與這裡用的檔案比對;來源筆記列出的值如下(即 NASA 提供的檔案,含 CRLF 行尾):

檔案 內容 SHA-256
README_ExportControlClassification.txt 出口管制聲明(〈授權與條款〉引用的那一句) 0767de94b01705294ab73f52de876d66954fe4145690feecc90440271a015a27
table_C_1_flowpath_hub.txt 輪轂線,350 點,x r 兩欄 21de8671e5dd649986a182499d0cce45e3e4e12347594a7275fdb0930cd3a3e5
table_C_2_flowpath_shroud.txt 罩殼線,310 點,x r 兩欄 252e39b26c151929ed4fcc778487eef404c154aa32e4d08cea5a2af03fed909e
table_C_3_impeller_main_blade_section_1.txt 主葉片,截面 1(輪轂) bc0ebeec00a0a0d8a8d68dc668b5fed9f8ca01ce89b5388c9dfb04d0bf57e68d
table_C_4_impeller_main_blade_section_2.txt 主葉片,截面 2 50d33e8f687217ba8024faba7b6fda39e0cde87a1a72369fa5e8263795434ce4
table_C_5_impeller_main_blade_section_3.txt 主葉片,截面 3 f8d1f6759c719110ac5591db0bf13ec7d2c93af4b255f5d784f371780e471707
table_C_6_impeller_main_blade_section_4.txt 主葉片,截面 4 4fadf10126118f579173a95314bc9914e41e0351c2035cd955721b35774fd1bc
table_C_7_impeller_main_blade_section_5.txt 主葉片,截面 5 7770b1e37704db91e698a91b13edbb3b68b89356b4734a4de313e4ecedbdeeed
table_C_8_impeller_main_blade_section_6.txt 主葉片,截面 6 8b1baf77991b7f6b17fe82796333c996cd5d69ec007b999ffcfb8779530b4510
table_C_9_impeller_main_blade_section_7.txt 主葉片,截面 7(原檔沒有標題列) 203a8ac02d2c03765079767c78fc449c70a49a203fecd73a3dc88f11704d35a0
table_C_10_impeller_main_blade_section_8.txt 主葉片,截面 8 4b147950463587c35bdface9b20c645aa10c46402c8407f7672a46ef9f691491
table_C_11_impeller_main_blade_section_9.txt 主葉片,截面 9 dad49d72a4e353df41238fe228bd9650d56c6ac3e91b20003ce429660511ece5
table_C_12_impeller_main_blade_section_10.txt 主葉片,截面 10 62e8d39e0bae6162083b59bf4b51b50f8df7db3c487daf327dc473f0ab45e2ef
table_C_13_impeller_main_blade_section_11.txt 主葉片,截面 11(罩殼線) 264b520bb549e0a61176b95c7cc0f9a74014960896e2b0d507d3a48ffd283b61
table_C_14_impeller_splitter_blade_section_1.txt 分流葉片,截面 1(輪轂) 50e935d4dd8fea75b061a99fd97a1977fa067da8a4b4d214c3018b1611612412
table_C_15_impeller_splitter_blade_section_2.txt 分流葉片,截面 2 3bc2962aa35758d990898262b062590b05d1d4d91a678ce0ddb0a0cbd8acbd4e
table_C_16_impeller_splitter_blade_section_3.txt 分流葉片,截面 3 13470e3abff314281bd67df78d586f73258cf6d00b789d5bec93dce3441ed1b4
table_C_17_impeller_splitter_blade_section_4.txt 分流葉片,截面 4 076b0635d13e2a59f5cfbfcc92e5fe3c8ffcb9e25721f04785239b929c88dcfd
table_C_18_impeller_splitter_blade_section_5.txt 分流葉片,截面 5 d81afb3c67126c932583f0b763874657c52b185346336a0f4f25de283d512912
table_C_19_impeller_splitter_blade_section_6.txt 分流葉片,截面 6 7afa5b38d0fa05edf1584d9c8937d3422160219abfff86ad50c7f3b72a675444
table_C_20_impeller_splitter_blade_section_7.txt 分流葉片,截面 7 d74d1288f053b0a34b143bc08135240473a1e9156dc2614167a190d1c1251591
table_C_21_impeller_splitter_blade_section_8.txt 分流葉片,截面 8 ec05dd5f59f15f4d596a7e07c32780d55f77b1a209f85daab0ea52124876986e
table_C_22_impeller_splitter_blade_section_9.txt 分流葉片,截面 9 73ffa548204fc027b55b3c7414187d48dde4f489a60e0f83f6286c60a82e6c12
table_C_23_impeller_splitter_blade_section_10.txt 分流葉片,截面 10 4ca4b956137cb7a8835e300d77b3784ea92d45f2b84dad7925c1c32b5df8be50
table_C_24_impeller_splitter_blade_section_11.txt 分流葉片,截面 11(罩殼線) 3f12174fa42f80dac07eaf45f9e5a43abc09326852d47c6727aa5aff503171cd

同一個資料夾還有擴散器與出口導葉的截面(table_C_25 至 table_C_30)以及 AppendixC.pdf;葉輪用不到它們,這裡也沒有使用。