巨集程式 (Macro B) 基礎教學:如何使用變數撰寫高效「防呆程式」

2026/09/23


在 CNC 車床的加工現場,人為疏忽往往是造成撞機、刀具損毀或工件報廢的主要原因。例如:換錯刀號、轉速設定錯誤或是在不正確的狀態下啟動程式。

Fanuc 巨集程式 (Macro B) 不只是用來做複雜的數學運算,它最實用的功能之一就是「加工防呆」。透過變數與邏輯判斷,我們可以讓機台在執行關鍵動作前自動進行「自我檢查」。本文將帶您掌握 Macro B 的核心邏輯,並分享如何在福碩機台上撰寫實用的防呆指令。


一、 認識變數:為什麼選對「編號」很重要?

在 Macro B 中,變數就像是暫存資料的抽屜,但不同編號的抽屜有不同的特性:

1. 共通變數 #100 - #199(揮發性):

  • 特性: 當按下機台的 [RESET] 鍵或關閉電源時,這些數值會被清空(變為 Null)。
  • 用途: 適合用於程式內部的暫時計算或單次加工的邏輯判斷。

2. 共通變數 #500 - #999(非揮發性):

  • 特性: 即使關機,數值也會永久保留,直到被手動修改或程式覆蓋。
  • 用途: 適合儲存「安全限值」,例如:客戶定義的最大轉速限制、零件計數目標值等。

3. 系統變數 (System Variables):

  • 特性: 這是由 Fanuc 系統預留的特定編號,用來讀取機台的即時狀態(如目前刀號、座標位置、時間等)。

二、 實務防呆程式範例

以下是針對常見加工疏忽所設計的防呆邏輯。請注意,涉及硬體信號(如夾頭壓力)的變數通常需對應機台的 PMC 位址。

範例 1:刀號確認防呆(利用模態資訊 #4120)


防止操作者在錯誤的刀號下執行不屬於該刀具的程式。
O9001 (刀號檢查巨集)
#1 = #4120 (讀取目前系統最後執行的 T 碼現值)
IF [#1 NE 0101] GOTO 10 (如果目前不是 0101 刀則跳至 N10)
GOTO 20 (正確則跳至結束)
N10 #3000=1 (WRONG TOOL - PLEASE CHECK) (觸發 1 號警報並顯示訊息)
N20 M99

範例 2:安全轉速上限防呆(利用 #500 長效變數)


防止因程式設定錯誤導致轉速過高,造成工件飛散或刀具崩裂。
O9002 (轉速防呆)
#500 = 2500 (在變數頁面預設此零件的最大安全轉速為 2500 RPM)
#2 = #4119 (讀取目前系統的 S 碼現值)
IF [#2 GT #500] THEN #3000=2 (SPEED TOO HIGH) (轉速超過 2500 則報警)
M99

範例 3:硬體信號防呆(如夾頭/壓力檢查概念)


註:硬體信號(Interface Variables)通常對映在 #1000 以上的變數,具體位址依福碩機台出廠設定(PMC 對映)為準。
O9003 (夾頭狀態檢查)
IF [#1000 EQ 0] THEN #3000=3 (CHUCK UNCLAMPED) (若夾頭未夾緊信號為 0,則報警)
M99


三、 撰寫防呆程式的實務技巧

  1. 善用長效變數: 建議將各機台的「安全邊界」(如 X 軸行程極限、最大轉速)存入 #500 以上的變數,這能讓不同程式共用同一個安全標準。
  2. 放在程式開頭: 所有防呆判斷應放在主程式的 G 碼動作之前,確保在發生任何移動前就先完成攔截。
  3. 單節執行測試: 第一次執行含有巨集判斷的程式時,務必開啟 Single Block。手動檢查變數頁面中的數值是否如預期變動。
  4. 訊息清晰化: #3000 後方的括號訊息請使用簡明易懂的文字敘述,方便不同員工快速理解訊息內容。

透過這些簡單的巨集邏輯,您可以將原本依賴「人為注意」的安全性提升到「系統強制檢查」的層次,讓福碩機台的運作更加穩健、專業!