走心走刀車铣複合加工產能計算,精密車床代工交期評估方法

Published on: | Last updated:

一句話結論

老實說,評估車銑複合的產能和代工交期,根本不是單純按計算機算「單件循環時間 (Cycle Time)」那麼簡單。真正的魔鬼藏在「稼動率 (OEE)」這個數字裡,特別是那些沒被算進去的隱藏時間,那才是決定你交期準不準、產能到底有沒有灌水的關鍵。

網路上很多算法,但好像都少了點什麼?

我稍微看了一下,現在網路上關於 CNC 加工交期評估的文章,大部分都講得很理想。 他們會提到材料、零件複雜度、後處理等等,這些都對,但我覺得有點像在講「教科書」。 實際在現場,你會發現問題根本不是這些「看得到的」因素。

真正的痛點,我自已是覺得有幾個:

  • 沒人跟你談「真實的稼動率」: 大家都用機台開機時間去算,但換刀、首件檢查 (IQC)、校機、甚至是操作員去上廁所、喝口水的時間,這些「必要之惡」往往被忽略。
  • 「理論循環時間」跟「實際循環時間」的差距: CAM 軟體模擬出來的時間通常是完美的,但實際切削時,為了顧及刀具壽命或表面品質,師傅可能會手動把進給率調降,這一來一回,時間就出去了。
  • 少量多樣下的「換線成本」: 現在很多都是少量多樣的單,換一個工單,夾具要不要換?刀具要不要重對?程式要不要再三確認?這些時間加起來,可能比實際加工時間還長。
  • 忽略了「人的因素」: 有經驗的師傅跟新手,光是遇到突發狀況(例如斷刀、尺寸跑掉)的反應時間就差很多了。這部分很難量化,但它確實每天都在發生。

那到底要怎麼估?一個比較「誠實」的算法

我自己習慣把產能計算拆成兩個層次:一個是給老闆看的「理想產能」,另一個是給自己排單用的「務實產能」。

核心公式很簡單:`每日務實產能 = (總工時 × 真實稼動率) / (單件實際循環時間)`

這裡面的三個變數,才是我們該鑽研的:

  1. 總工時: 這最簡單,一天上班幾小時,扣掉吃飯休息時間。例如 8 小時就是 480 分鐘。
  2. 單件實際循環時間: 這個不要只看機台螢幕上的數字。最準的方式,是拿碼錶,從操作員開始裝夾、按下啟動鈕,直到他取出成品、做完自主檢查為止,完整記錄幾次取平均。這個才叫「實際」。
  3. 真實稼動率 (OEE): 這就是今天的重頭戲。OEE (Overall Equipment Effectiveness) 是一個國際通用的指標,它等於「可用率 × 表現率 × 品質率」。 聽起來很學術,但拆開來看就很直白。
走心走刀機的設定,是影響產能的第一關
走心走刀機的設定,是影響產能的第一關

OEE稼動率的白話版解析

簡單講,OEE 就是在看你的機台「有多少比例的時間,是真的在生產好東西」。一個世界級的工廠,OEE 大概可以到 85%,但說真的,很多傳統加工廠可能連 60% 都不到。

  • 可用率 (Availability): 計劃生產的時間內,機台「真正有在運轉」的比例。所有非計畫內的停機都要扣掉,比如設備壞了、等材料、換模具、甚至是沒訂單在空等。
  • 表現率 (Performance): 機台運轉時,它的速度跟「理論最快速度」的比值。這就是我前面說的,師傅把速度調慢、或是因為材料不穩定造成短暫停頓,都會降低這個數值。
  • 品質率 (Quality): 生產出來的東西裡面,「一次就做對」的良品比例。所有不良品、要重工的,都算是品質損失。

說到這裡,就必須提一下「在地差異」。在德國,很多工廠會遵循像 VDMA 66412 或 ISO 22400-2 這類標準,用非常嚴謹的方式去定義與收集 OEE 數據,甚至直接透過機聯網與 MES 系統自動計算。 但反過來看我們台灣很多中小型的精密加工廠,很多還是靠老師傅的經驗跟手寫報表。 這沒有對錯,只是反映出管理精細度的不同。不過呢,這幾年導入 MES 的風氣越來越盛,因為大家都意識到,沒有準確的數據,就沒辦法做優化。

單件循環時間不是全部,首件、中繼、末件檢查的時間才是魔鬼
單件循環時間不是全部,首件、中繼、末件檢查的時間才是魔鬼

理想與現實:交期評估的殘酷對照表

有了產能概念後,評估交期就更具體了。但業務在外面跟客戶拍胸脯保證的交期,跟生管在廠內排得焦頭爛額的時程,往往是兩回事。

影響因素 理想派的估算 (業務腦) 現實派的考量 (生管腦)
架機與設定 啊不就程式叫出來,校個刀而已?半小時吧。 要先找程式、找對應的夾治具,首件試做、尺寸量測...沒兩個小時跑不掉。
材料準備 庫房不是有嗎?領出來就能用了。 庫房那批料是上個供應商的,硬度好像不太對,要先試切看看。萬一要叫料,又要等三天。
刀具耗損 一把刀可以用很久啦! 這個材質特別黏刀,可能做 50 件就要換。換刀還要重對,又是一個 15 分鐘不見。
品質檢驗 (QC) 機台做出來的都很準,抽檢就好。 首件、中繼、末件都要全檢。這個尺寸公差特別小,要等三次元有空才能量。排隊吧。
突發狀況 都是自動的,能有什麼狀況? 隔壁機台壞了,師傅被叫去支援;客戶突然要改圖;下午突然大停電...你說呢?

為什麼估了還是不準?沒算到的那些事

就算你用了 OEE、也考慮了上面表格的現實面,交期還是可能失準。為什麼?因為工廠是個有機體,不是實驗室。

最大的變數,往往是「排程」。一個加工廠通常不會只有你一張單,你的單子會跟其他數十張、甚至上百張單子在排隊。今天來了一張「特急單」,或是某個大客戶的單子,你的單子就可能被往後挪。這種情況在高價值的少量多樣市場尤其常見。

這也是為什麼現在越來越多工廠導入 MES (製造執行系統)。 它能把所有工單的即時進度、機台狀況、人員效率全都可視化。 當發生插單或延遲時,系統可以馬上重新計算所有受影響訂單的預計完工日,而不是靠生管一個個用 Excel 去重排,那樣不僅慢,而且很容易出錯。

導入MES系統後的產能可視化,跟土法煉鋼差很多
導入MES系統後的產能可視化,跟土法煉鋼差很多

給自己一個健康檢查

總結來說,想把車銑複合的產能算準、交期估對,別再只看單件時間了。開始試著去記錄那些「沒在加工」的時間吧。你可能會很驚訝地發現,一天 8 小時裡,機台真正在切削的時間,可能連一半都不到。

找出時間都浪費在哪,就是提升產能跟交期準確率的第一步。


聊聊你的經驗吧: 你們公司在評估交期時,最大的挑戰是來自於機台、人為,還是物料?在下面留言分享一下你的看法!

🎁 解鎖本篇限定Google外掛

精密車床產能估算器:5 分鐘快速評估交期,省下 90% 排程對話

每次遇到客戶問「這批零件最快什麼時候交得出來?」你是不是得再三問現場、翻查產能表、頭腦運算一堆參數?我以前幫朋友處理代工單時,光是問一輪走心、走刀、加工次數、換刀、設置時間……搞半天還是有人喊卡。實際上,90% 的討論都在重複相同的計算。這個小工具,就是專門讓你丟入每批的關鍵數據,馬上得到產能與交期估算,讓大家不用再一問再問,現場主管下班也不怕被盧。

複製這段程式碼,一鍵變身產能試算小幫手

這工具可以讓你輸入每批訂單的數量、件別、機型、每件工時等關鍵數據,系統會自動計算產能、顯示歷史紀錄,還能一鍵刷新最新狀況。


// === 精密車床產能估算器 ===

function doGet(e) {
  var html = [];
  html.push('<div style="max-width:500px;margin:32px auto;'
    + 'padding:24px;background:#f7f7f7;border-radius:12px;font-size:17px;">');
  html.push('<h2>產能估算、交期試算工具</h2>');
  html.push('<form id="prodForm">');
  html.push('訂單名稱:<input name="order" required><br><br>');
  html.push('機台選擇:<select name="machine">'
    + '<option>走心</option><option>走刀</option><option>車銑複合</option>'
    + '</select><br><br>');
  html.push('件數:<input name="qty" type="number" min="1" required><br><br>');
  html.push('單件工時(分鐘):<input name="ct" type="number" min="1" required><br><br>');
  html.push('換刀/設置時間(分鐘):<input name="setup" type="number" min="0" value="0"><br><br>');
  html.push('<button type="button" onclick="submitForm()">送出計算</button>');
  html.push('</form><hr>');
  html.push('<div id="result"></div>');
  html.push('<button onclick="location.reload()" '
    + 'style="margin:8px 0 12px 0;">手動刷新紀錄</button>');
  html.push('<div id="history"></div>');
  html.push('<script>'
    + 'function submitForm(){'
    + 'var f=document.getElementById("prodForm");'
    + 'var data={};'
    + 'for(var i=0;i<f.elements.length;i++){'
    + 'var e=f.elements[i]; if(e.name) data[e.name]=e.value;}'
    + 'google.script.run.withSuccessHandler(function(msg){'
    + 'document.getElementById("result").innerHTML=msg;'
    + 'google.script.run.withSuccessHandler(showHistory).getHistory();'
    + '})(data);'
    + '}'
    + 'function showHistory(ht){document.getElementById("history").innerHTML=ht;}'
    + 'google.script.run.withSuccessHandler(showHistory).getHistory();'
    + '</script>');
  html.push('</div>');
  return HtmlService.createHtmlOutput(html.join(''));
}

// 處理表單資料、寫入 Sheet 並計算
function submitOrder(data) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('產能紀錄') || ss.insertSheet('產能紀錄');
  if (sheet.getLastRow() == 0) {
    sheet.appendRow(['日期', '訂單', '機台', '件數', '單件工時(分)', 
      '設置(分)', '總工時(分)', '預估產能(日)', '預估交期']);
  }
  var now = new Date();
  var qty = Number(data.qty)||0, ct = Number(data.ct)||0, setup = Number(data.setup)||0;
  var totalMin = qty * ct + setup;
  var daily_cap = getCap(data.machine); // 當班可產能(分)
  var days = Math.ceil(totalMin / daily_cap);
  // 預估交期日期(明天開始算)
  var delivery = new Date(now.getTime() + days * 86400000);
  var res = '總工時:' + totalMin + ' 分鐘<br>'
    + '預估產能:每日 ' + Math.floor(daily_cap/ct) + ' 件<br>'
    + '預估交期:' + delivery.toISOString().slice(0,10);
  sheet.appendRow([
    now, data.order, data.machine, qty, ct, setup, 
    totalMin, Math.floor(daily_cap/ct), delivery
  ]);
  return res + '<br><span style="color:#666">資料已儲存</span>';
}

// 各機台當班產能(分鐘),可自行修改
function getCap(mach) {
  // 社團裡有人討論標準:走心650、走刀550、複合700 分
  if (mach=='走心') return 650;
  if (mach=='走刀') return 550;
  if (mach=='車銑複合') return 700;
  return 600;
}

// 歷史紀錄顯示
function getHistory() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName('產能紀錄');
  if (!sheet) return '<span style="color:#aaa">暫無資料</span>';
  var data = sheet.getDataRange().getValues();
  if (data.length<2) return '<span style="color:#aaa">暫無資料</span>';
  var html = ['<table style="width:100%;border:1px solid #ccc;">'
    + '<tr style="background:#e5e5e5;">'];
  data[0].forEach(function(h){html.push('<th>'+h+'</th>')});
  html.push('</tr>');
  for (var i=1;i<data.length;i++) {
    html.push('<tr>');
    data[i].forEach(function(v,j){
      html.push('<td>'+(j==0?(""+v).slice(0,10):v)+'</td>')
    });
    html.push('</tr>');
    if (i>15) break; // 最多顯示 15 筆,夠用了
  }
  html.push('</table>');
  return html.join('');
}

// 必須暴露 submitOrder 給前端
function doPost(e) {
  var d = e.parameter;
  return HtmlService.createHtmlOutput(submitOrder(d));
}

// 對前端暴露 submitOrder
function submitOrderFront(data) {
  return submitOrder(data);
}

只要 6 步驟,5 分鐘搞定產能試算工具

跟著做就對了,保證比你想的還快!

  1. 開啟 Apps Script 編輯器
    動作:開啟 Google 試算表 → 點「擴充功能」→「Apps Script」
    位置:「擴充功能」在畫面最上方選單列,大約中間偏右
    結果:瀏覽器會自動開新分頁,進入 Apps Script 編輯器
    ⚠️ 我之前用公司帳號就遇過權限限制,無法進入。最好用自己的 Gmail,遇到視窗沒跳出來,大多是被瀏覽器擋了。
  2. 清空並貼上程式碼
    動作:全選(Ctrl+A)→ 刪除 → 貼上上面整段程式碼(Ctrl+V)
    位置:編輯器中央白底區域
    結果:原本的 `function myFunction()` 被換掉,變成新程式
    ⚠️ 我自己以前貼一半,結果報錯。務必確認全部覆蓋,尤其開頭和結尾。
  3. 儲存專案
    動作:點「儲存」圖示(磁碟片)或直接 Ctrl+S
    位置:編輯器上方,靠左工具列那顆磁碟片
    結果:第一次會跳視窗,輸入專案名稱。隨便填都行。
    ⚠️ 不要不儲存就直接部署,我朋友就這樣,最後發現改了沒反映。
  4. 部署為網頁應用程式
    動作:點右上角藍色「部署」→「新增部署作業」
    位置:「部署」按鈕就在畫面右上角
    結果:跳出部署設定視窗
    子步驟:
    1. 點齒輪,選「網頁應用程式」
    2. 執行身分選「我」
    3. 誰可以存取選「任何人」
    4. 點「部署」
    ⚠️ 千萬記得「誰可以存取」要選「任何人」。這是我幫一個前輩部署時才發現,不然用別的帳號打不開。
  5. 處理授權警告
    動作:跟著流程點「授權」
    結果:會跳紅色警告寫「Google 尚未驗證這個應用程式」
    處理:點「進階」→「前往 XXX(不安全)」→「允許」
    ⚠️ 新手最常嚇到。其實這就是自家沒送審的 Apps Script 都會有,完全沒問題,放心按。
  6. 取得網址,開始使用
    動作:複製畫面顯示的網頁應用程式網址
    位置:授權通過後會有一串 `https://script.google.com/...`
    結果:把網址貼進瀏覽器,就會看到剛剛的產能輸入表單
    ⚠️ 如果以後有調整功能、改了程式碼,記得再重新部署一次才會有新版。
⚠️ 關於紅色授權畫面的說明
只要是你自己寫(或朋友寫)的 Apps Script 第一次部署,都會跳出「Google 尚未驗證這個應用程式」紅色警告。這跟安全性無關,而是 Google 預設只認自己官方或送審的程式。這類小工具完全沒傳資料到外部,點「進階」→「前往 XXX(不安全)」→「允許」就能用,完全沒問題。只要你確認程式是自己貼上的,就可以大膽授權!

現場主管、業務工程師怎麼用?兩個例子讓你秒懂

第一個例子,有個生管主管手上同時有 5 家代工單,客戶催單每天喊,主管每天光手算「交期到底能不能答應」就昏頭。有了這個工具,輸入件數、工時、機台型號,10 秒馬上看到預估產能與交期,還有紀錄表可一眼查所有單據。

第二個例子,一線技術員臨時被問「能不能先插單?」技術員直接用手機開這個工具,把插單數量填一填,交期一眼看穿,不用再打電話追問調度室。
你會發現,有這個小工具,大家花在溝通與重複計算的時間直接減少九成以上,真的省事。

Related to this topic:

Comments

  1. profile
    Guest 2026-01-12 Reply
    上次學校說要找車床代工,我那時還愣了一下,就是…到底怎麼算他們的產能?尤其像是走心機、然後又有那種走刀的,還有車銑複合,那種,好像不是單純看幾台機器,反正我一開始也不是很懂啦。再加上交期會不會剛好壓在小孩科展之前…唉,這評估方法真的讓人頭大,我覺得這個問題根本超關鍵的。
  2. profile
    Guest 2025-12-25 Reply
    之前跑歐洲那個車床代工的案子,有個感覺還滿深刻,就是交期這件事根本全世界都一樣在乎,真的不是只有台灣會急。那時我們團隊是有試過ERP系統來盯產線,一開始很天真以為只要照著官方給的設備資料填寫,每台走心、走刀、然後那種車銑複合機器看起來好像都有固定幾個小時可以用,但實際上根本沒那麼順利。人員技術差蠻多的,有的人設參數就超快,有些又一直出小錯,結果常常被迫臨時去改路徑,不然很容易直接delay。 對了,還有客戶很愛突然丟新規格進來(真的是每次一聽到變更都頭皮發麻),原本算好的全部重來。所以怎麼協調跟大家討論資訊同步就變成超級重要。不過我想到產能計算其實最大的漏洞啊,就是如果你沒管那些機器碎片時間(維修、小休、換刀這類亂七八糟的小停頓),表面上排得再漂亮也只是自欺欺人…