程式原點對齊 (Program Zero Alignment)¶
程式原點 (program zero)(ProgramZeroAnchor)是 NC 程式視為 X0 Y0 Z0 的點。它與工具機的工件座標偏移(G54/G55/…)相關:當機械座標等於工件偏移時,主軸即位於程式原點。
設置仿真時,必須把程式原點與工件偏移建立關係。採用哪個對齊方向,取決於情境。
兩種對齊方向¶
NC 檔情境(規劃)—— 把 G54 對齊到程式原點¶
當你以 NC 檔驅動仿真做 規劃 時,通常會把工件與夾具擺在方便的位置,再設定工件偏移去配合。此時 G54 值可能尚未取得,佈局也 不需要 反映真實機台。
- 維持工件/夾具的擺放原樣。
- 以 GetMachinePositionAtProgramZero (API) 讀取程式原點處的機械座標,並存入 ISO 座標表(
IsoCoordinateTable.SetCoordinateOffset("G54", ...))。
CSV / 即時 / 線上機械座標情境(高還原度)—— 把程式原點對齊到 G54¶
當你以 控制器 CSV 紀錄(見 PlayCsvFile (API))或即時/線上機械座標饋送驅動仿真時,資料是 絕對機械座標。要忠實重現真實切削(高還原度),工件 + 夾具必須擺在其 真實位置,使碰撞、過切與嚙合都與現實相符。
// 將工件 + 夾具擺放,使 ProgramZeroAnchor 與「機械座標等於 G54 時主軸抵達的
// 世界座標位置」重合。
AlignWorkpieceProgramZeroToIso("G54");
同樣的動作也可在 web UI 的控制器頁面 ISO 座標表上執行(每列的 Align P0,搭配一次性的 Revert Align)。
AlignWorkpieceProgramZeroToIso 只會變動 Fixture.GeomToTableTransformer。三個 buckle transformer 必須已依下方規則擺好。
Buckle 一般規則¶
工件/夾具組合由 buckle 錨點構築(見 元件組裝與錨點)。典型的「塊料置於平板」設置會把它們擺在幾何 bounding-box 中心:
| Transformer | 位置 |
|---|---|
Workpiece.WorkpieceGeomToFixtureBuckleTransformer |
工件幾何底面中心 |
Workpiece.WorkpieceGeomToProgramZeroTransformer |
工件幾何頂面中心(或任一選定的頂端點) |
Fixture.GeomToWorkpieceTransformer |
夾具幾何頂面中心 |
AlignWorkpieceProgramZeroToIso 接著會由實際組合拓樸(錨點對錨點的向量)推導出最終的 Fixture.GeomToTableTransformer,因此適用於任何鏈結 —— 它不假設 buckle 位於 bounding-box 中心。
驗證設置¶
錯誤的設置(工件偏移錯誤或工件位置錯誤)會表現為 過切 (overcut)、碰撞 (collision) 或 未切到 (nocut)。這些在 早期 即可觀察到 —— 通常在前 ~100 行 NC 或 ~1 分鐘內 —— 因此在完整跑完前,先用一次快速、便宜的試跑來驗證:
- 設定粗略的 MachiningResolution (API) ≈ 刀徑的 1/8,以取得快速回饋。
- 執行並觀察 開頭的 Z 下刀。當工件偏移或工件 Z 設錯時,過切/碰撞最常出現在此處。
Tip
若刀具下刀遠深於程式深度、且刀把撞進工件(渲染出的素材上出現可見的鑿痕),那麼工件偏移 Z 幾乎可確定是錯的 —— 工件被建模得比真實位置更高(或更低)。
Note
罕見的偽陽性:在 硬材上以螺旋下刀 進行粗切,可能合理地超出建模的切削條件,但設置其實是 正確 的。這種情況不常見 —— 多數時候,早期的過切/碰撞/未切到代表設置有誤。
高還原度注意事項:工件偏移必須反映真實機台¶
在 CSV / 線上機械座標情境中,你對齊用的工件偏移(G54/G55/…)必須是 機台上實際使用的偏移,而非規劃/名目值。操作員經常在不同設置之間重新歸零(手動換刀、重切素材),因此規劃的 G54 可能與真實值不同 —— 差距無法事先假定。
以控制器紀錄驅動時,應由紀錄自身的機械座標推導偏移,而非信任規劃值:用那些能在操作員編輯後仍存續的不變量 —— 已知切深、某段特徵跨距 —— 對應到紀錄下的機械座標,即可還原這些軸上的真實偏移。(操作員可能位移過的位置無法以此還原。)錯誤的工件偏移 Z 會把工件擺離真實高度,使刀具過深或過淺下刀;若太高,刀把會在開頭下刀時撞上素材 —— 正是上述粗解析度檢查所能抓到的失效。