跳轉到

程式原點對齊 (Program Zero Alignment)

程式原點是 NC 程式視為 X0 Y0 Z0 的那個點。工具機把工件偏移——G54、G55 等等——加到機械零點上來找到它,所以只有模型上的程式原點與控制器裡的工件偏移一致時,仿真才會切在真實機台切的地方。讓兩者一致就是本任務,而它依建立仿真的目的不同,朝兩個方向之一進行。

該朝哪個方向對齊

你在做的是 要對齊的是 原因
規劃一件工作:從 NC 檔出發,零件尚未在機台上架好 把工件偏移對到程式原點上 工件與夾具可以擺在任何方便的位置;偏移值多半還沒量測,模型也不必對應到一張真實的工作臺
重現一次切削:從控制器紀錄、機械座標饋送,或一件已經在跑的工作出發 把程式原點對到工件偏移上 記錄下來的資料是絕對機械座標,所以零件必須擺在它真實所在的位置,否則碰撞、過切與嚙合都不會與實際發生的相符

兩個方向都要求工件已經擺在夾具上、夾具已經擺在工作臺上——那是錨點與角色的事,而且要先做。

程式原點在工件上的位置

程式原點就是工件的程式原點錨點角色,而從工件幾何到它的偏移,則是工件那條由工件的幾何錨點通到該錨點的連接上的變換器。它在「設備」頁面的拓樸欄裡編輯:選取控制樹的工件項目(/equipment?tree=equipment/mechanism/workpiece),再到拓樸欄——第四欄,位於畫布右側;視窗寬度小於 1280 px 時它起初是隱藏的,要靠選單列那排欄位按鈕中的第四顆(切換拓樸欄)把它顯示出來——在圖中帶著工件徽章的群集裡,點選那條通到帶著工件 · 程式原點錨點徽章的錨點的連接。圖下方的編輯卡就承載該連接的變換器。把它設成 NC 程式當初據以編寫的那個點:對多數銑削程式而言,那是毛胚頂面的某個角或中心。這個點還沒落在程式設計者所定的位置之前,本頁其餘內容都談不上意義。哪個錨點擔任這個角色,是在工件項目編輯器底部的角色區段裡繫結的。

以 CAM 工具匯出的網格形式進來的工件,通常還在該工具自己的座標系裡——往往是機械座標——所以程式設計者的那個點並不在網格的原點上,必須先在網格裡把它找出來,才能設定這個變換。那是由參照網格建立工件。

規劃:依工件所在的位置寫入偏移

控制器分支的工作座標 (G54…) 葉節點(/equipment?tree=equipment/controller/program-data/work-coordinates)存放執行時解析 G54 所依據的那張表,每個座標 id 一列。

  1. 把工件與夾具擺在場景裡方便作業的任何位置。
  2. 選取工作座標葉節點,找到程式使用的那一列——多數程式是 G54。
  3. 按下該列的 P0。它會把工件的程式原點錨點目前所在的機械座標寫進該列,這正是機台操作員對刀之後會鍵入的那個數字。旁邊的 M0 則改寫入機械零點,這是把一列恢復成完全沒有偏移的方法。

示範專案上的這個葉節點,路由 /equipment?tree=equipment/controller/program-data/work-coordinates。表格上方那行灰字說明這個廠牌把偏移存在哪裡——Fanuc 是存在它自己的參數表,G59.1–G59.9 則存於其後的品牌中立座標表——下方各列則是這些表所持有的 G54 系列,這裡只有 G54 帶有值;那行灰字旁的顯示全部切換鈕會再加上 G54.1P 各列。P0 與 M0 位於每一列的最右端;若它們被切掉了,就把編輯器欄拉寬。

設備頁面的編輯器欄,選取了「工作座標 (G54…)」葉節點,標題為「控制器 / 程式資料 / 工作座標 (G54…)」:一行灰字說偏移儲存於 Fanuc 參數表(#5221+/#7001+)、G59.1–G59.9 存於其後的品牌中立座標表,旁邊是「顯示全部」切換鈕;下方的表格有 Id、X (mm)、Y (mm)、Z (mm) 與「操作」欄,列出 G54 到 G59 以及 G59.1 到 G59.9 各列,每一列最右端的「操作」欄裡是 P0 與 M0;G54 帶有值、其餘為零

P0 需要一台工具機,而且它信任它所看到的任何擺放。 它算出程式原點錨點在哪裡的方法,是在每根軸都位於機械零點的狀態下,從工具機出發走過設備的組合體直到那個錨點;所以一個沒掛上工具機的專案會回報無法取得程式原點處的機械位置,並且什麼也不寫。但它不檢查擺放:一個變換器還停在預設值的工件,寫出的就是它的程式原點錨點剛好所在之處;一個沒有工件的專案,寫出的是工具機床台安裝點的位置。兩種情況都會寫進一個數字,也沒有任何東西會說那是錯的——按 P0 之前先把工件擺好。

偏移值已經從機台得知時,也可以直接把數字鍵入該列。點選列的任何位置會在畫布上標出該座標,讓偏移不只能讀、還看得到。

重現真實切削:把工件擺到偏移上

「設備」頁面上沒有做這個方向的控制項。工作座標葉節點的兩個列動作都是寫入該列——P0 從程式原點所在的位置寫、M0 寫成機械零點——兩者都不會移動零件。這項操作本身存在於頁面之外,以一個 HTTP 呼叫與一個任務腳本 (mission script) 呼叫的形式存在:兩者都會以靜態平移改寫夾具那條從它的幾何錨點直通它的床台安裝點的連接上的變換器,使程式原點落在一個記錄下來的偏移上——而在下列任一情形下,兩者都會拒絕、什麼也不改:夾具的拓樸裡沒有這樣一條連接、那條連接帶的是動態變換器、各部件並未接合,或那條連接不是夾具幾何與床台之間唯一的連結。它們讀取偏移的來源是工件偏移表另一份獨立的 legacy 副本,而不是這個葉節點,所以那一列也必須在那裡寫一份;專案建構裡有這些呼叫。在頁面上,零件是靠手動擺放的,而一個備用列用來核對擺放:

  1. 把記錄下來的偏移值鍵入程式使用的那一列——數值可以直接輸入,如上所述——再點選該列,讓畫布標出該座標。
  2. 改變夾具在工具機床台上的位置,把零件移到標記上:在拓樸欄裡,點選帶著夾具徽章的群集中那條從帶著夾具 · 幾何錨點徽章的錨點通到帶著夾具 · 床台安裝點徽章的錨點的連接;它的變換器就在圖下方的編輯卡裡——見錨點與角色。(那兩個角色是在控制樹的夾具項目、/equipment?tree=equipment/mechanism/fixture 上繫結的。)工件是坐在夾具上的,所以它的程式原點錨點會跟著一起移動。畫布的角色錨點顯示選項(在它的錨點群組裡)會把每一個已繫結的角色錨點的軸都畫出來,程式原點錨點也在其中,所以移動的過程可以對著標記邊看邊調。
  3. 程式原點錨點一落在標記上,就用一個程式永遠不會選到的列來核對——程式只用 G54 時,G59 是常見的選擇。在那個備用列上按 P0,再與記錄的那一列比較:擺放正確時兩者會一致,任何差異就是偏了多少。之後再用 M0 把備用列恢復成機械零點。不要在執行時會讀到的那一列上按 P0——那會用場景的值取代記錄下來的偏移,而執行時解析的是該列當下持有的值。

零件這樣對齊之後,記錄的偏移裡有錯,已經不會改變 NC 程式切出什麼——刀具仍然會碰到程式原點——但它會讓整套設置在機械座標裡整體位移,而行程檢查與機台碰撞都看得到這個位移。以機械座標記錄下來的資料則是另一回事:對著一個擺錯位置的零件播放,它就會切在錯的地方,這正是偏移必須是真實那一個的原因——見下面。

幾件零件、幾個偏移

一支把幾件相同零件並排加工的程式——一套夾具、同一支子程式每件零件呼叫一次、每次呼叫各自套用自己的工件偏移:第一件用 G54、第二件用 G55,依此類推——在模型上仍然只有一個程式原點錨點。把它放在第一個偏移所服務的那件零件上,並把所有零件都建模成同一份工件幾何。

P0 不論按在哪一列,寫出的都是那唯一一個錨點的位置,所以它只能填第一列。其餘每一列都是第一列加上各件零件的程式原點之間的間距,沿機台各軸表示:

  1. 依上面的方法對齊第一列,方向視情況而定。
  2. 其餘各列由記錄下來的偏移填入;規劃時則填第一列加上零件間距——兩件零件沿 X 相距 90 mm,G55 就是 G54 的 X 加上 90。不要在後面那些列上按 P0:那會再寫一次第一件零件的位置,於是每次呼叫都切在第一件零件上。
  3. 拿間距與幾何核對:機台的線性軸與零件平行時,兩列之間的差值就等於模型上兩件零件的程式原點之間的距離。

參照網格顯示各件零件的高度略有不同、而記錄的偏移卻說它們等高時,要決定信哪一個。保留偏移是重現機台,執行後的幾何比對會把差異顯示出來;把後面每一列的 Z 各依量到的高度差平移,則是重現網格,並讓每件零件有相同的預留量。把這個選擇與專案一起記下來。

一件零件切在錯的地方,本身不會發出任何訊息。未接觸警告 Play-Touch--None 只有在整趟播放連一步都沒有碰到工件時才發出,而第一件零件仍然是切到的。執行後每一件都要檢查——在「程式」分支上,被呼叫的檔案每次呼叫顯示一趟——或把每件零件的區塊各自單獨播放一次,確認它有切到。

檢查是否成功

對齊錯誤——偏移值錯了,或工件的高度不對——會表現為過切 (overcut)、碰撞 (collision) 或未切到 (nocut),而且出現得很早:通常在 NC 程式的前一百行左右之內。在投入完整執行之前,先用便宜的方式檢查一次。

  1. 在工件的網格項目上設一個粗的初始解析度——大約刀具直徑的八分之一就足以看出明顯的大錯,而且跑得快。那是工件。任務的加工解析度那一列也給同樣的值:一刀切削是按兩者之中較細的那個網格化的,所以那一列留著細的值,這次檢查依舊會很慢。
  2. 執行,並觀察開頭的 Z 下刀。錯誤的偏移最先在這裡露出來。
  3. 正式完整執行之前,把兩者都設回這件工作需要的寬度。若任務在第一支程式之前的第 0 階段有一筆記錄網格幾何把毛胚快取起來,那筆項目也要按重設、或把它的檔案刪掉:檢查期間它是以粗的寬度把毛胚快取起來的,而之後每一次執行都會一聲不響地把那份粗毛胚讀回來——見能接續的任務。

Tip

若刀具下刀遠比程式深度深得多、刀把鑿進毛胚,那工件偏移的 Z 幾乎可以確定是錯的——工件被建模得比它真實所在更高或更低。

有一種偽陽性值得知道:在難切削材料上以螺旋進刀的粗加工,可能在設置完全正確的情況下合理地超出所建模的切削條件。這種情況不常見,早期出現的過切、碰撞或未切到通常確實代表對齊錯了。

當規劃的偏移不是真實的偏移

在重現方向上,對齊所依據的偏移必須是機台實際使用的那個偏移,而不是規劃這件工作時所用的那個。操作員會在不同設置之間重新歸零——手動換刀之後、重切毛胚之後——所以規劃的 G54 與真實的 G54 可能相差一個無法事先假定的量。

資料來自控制器紀錄時,要由紀錄自身的機械座標推導偏移,而不是信任規劃值:一個經得起操作員修改的不變量——已知的切削深度、某個特徵的跨距——對應到記錄下來的座標上,就能還原那些軸上的真實偏移。操作員可能移動過、卻沒有任何可供比對依據的軸,無法用這個方法還原。Z 錯了最傷:它把工件擺離真實高度,刀具從第一個單節起就下刀過深或過淺。

有兩種慣例會改變一個記錄下來的數字所代表的意思,而且兩者都必須在把它鍵入某一列之前先釐清:

一列量到的是刀具安裝點,不是刀尖。 在仿真控制器裡,一個工件偏移是主軸的量規線 (gauge line)——工具機的刀具端錨點,也就是它的刀具安裝點角色所繫結的那一個——在每根軸都位於機械零點時,與程式原點相遇的那個機械位置。刀具長度另外經由 G43 H 所選的長度補正進入執行,該補正涵蓋刀把與刀具伸出的長度。一個拿刀具對刀得出的偏移,若所在機台的程式不套用長度補正,它的 Z 裡就帶著那把刀的長度,鍵入之前必須先換算。

外部偏移被併進每一列裡。 Fanuc 系的控制器可以在每一個工件座標系之上再加一個共用的外部工件偏移 (EXT)。仿真控制器沒有這樣一列,所以要把外部偏移加進程式會用到的每一列。零件一旦對齊到它那一列上,外部偏移就不會改變 NC 程式切出什麼——刀具仍然會碰到程式原點——但漏掉它會讓整套設置在機械座標裡整體位移,而行程檢查、機台碰撞,以及任何與機械座標紀錄的比對,都看得到這個位移。

一個讓這件事更容易的擺放慣例

在預設拓樸裡,夾具的各條連接從它的幾何錨點分別通往它的各個安裝點,工件的則從它的幾何錨點通往它的夾具安裝點與程式原點錨點;每條連接都以它所通到的錨點命名。除了夾具那條通往床台安裝點的連接——擺放與這項對齊寫的就是它——另有三條連接的變換器把組合體固定在一起。它們可以放在任何位置,但「塊料置於平板上」的設置,在每個變換器都位於它所接觸那一面的中央時最容易推理:

連接 合適的預設位置
夾具,幾何錨點 → 工件安裝點(WorkpieceMount) 夾具幾何的頂面中心
工件,幾何錨點 → 夾具安裝點(FixtureMount) 工件幾何的底面中心
工件,幾何錨點 → 程式原點錨點(ProgramZeroAnchor) 工件幾何的頂面中心,或程式當初據以編寫的任一頂面上的點

上面的內容都不依賴這個慣例——P0 是照組合體的現況走的,不管各變換器裡放的是什麼——但這樣建出來的場景用眼睛核對容易得多,在重現方向上用手擺放也容易得多。

延伸閱讀

  • 錨點與角色 — 把工件、夾具與刀具相對於工具機擺好,是本任務的前置步驟
  • 組裝錨點 — 這項對齊所解析的那些具名安裝點錨點
  • 工件 — 以它的程式原點錨點角色與幾何錨點界定出本任務所設那條連接的項目,以及上面那個檢查所用的網格解析度
  • 夾具 — 在重現方向上,以它的「幾何錨點 → 床台安裝點」連接把零件移到記錄偏移上的項目
  • 夾具頁面 — 「夾具」項目背後的元件,以及對齊呼叫對夾具的「幾何錨點 → 床台安裝點」連接做了什麼(英文,未鏡像)
  • 控制器 — 執行時所解析的那張工件偏移表所屬的分支
  • 工具機 — 每一個工件偏移都是從它的刀具安裝點量起的那台機器
  • 能接續的任務 — 粗略檢查留下的第 0 階段毛胚快取,以及何時該重設它
  • NC 方言 — 各廠牌的程式碼如何稱呼這項對齊所依據的工件偏移
  • 工作流程:透過 Web API 建構專案 — 把零件對齊到記錄偏移、並填寫工件偏移表的那些 HTTP 呼叫
  • 由參照網格建立工件 — 在以 CAM 工具座標系匯出的網格裡找出程式原點
  • 專案資料盤點清單 — 這項對齊所收尾的那個蒐集步驟
  • 工作流程:基礎加工仿真 — 由 NC 檔或控制器紀錄驅動仿真
  • 工作流程:銑削力參數訓練 — 銑削力訓練,仰賴正確的設置
  • 設置 — 仿真前配置的其餘部分