鑄造縮孔控制技巧:利用流動模擬與數據分析改善品質

Published on: | Last updated:

所以,鑄造縮孔這個問題…

嗯…今天要來聊聊鑄造的縮孔。這個問題,說真的,在工廠待過的應該都很有感。金屬液冷下來,體積會縮小,這是物理定律,沒辦法。 但如果補料沒跟上,或是哪個地方冷得特別快、哪個地方又特別慢,洞…就跑出來了。這就是縮孔。 聽起來很簡單,但每次看到整批鑄件因為這個報廢,心裡還是很…很煩。

以前,我們都是靠老師傅的經驗。改流道、加大冒口、敲敲模具…有時候有用,有時候沒用,很像在…嗯,在拜拜。但現在,時代不一樣了。我們可以用電腦去「算」,算那個金屬液怎麼流、怎麼冷。這個就是所謂的鑄造流動模擬。 然後,把做出來的數據…不管是良率、缺陷位置,全部記錄下來,做分析。把經驗變成數據,再用數據去指導下一次的設計。這整個過程,我覺得才是現在真正能解決問題的方法。

重點一句話

簡單講,就是不要再單純靠感覺了。把流動模擬當作你的眼睛,去看模具裡面發生了什麼事,然後用數據分析,把每一次的成功和失敗…都變成下一次能用上的SOP。這樣,品質才能真的穩定下來。

鑄件內部常見的縮孔缺陷示意圖
鑄件內部常見的縮孔缺陷示意圖

以前跟現在,到底差在哪?

我這邊整理一個簡單的比較,大家可能會比較有感覺。以前那種「試誤法」,跟現在這種「模擬加數據」的方法,思維上完全是兩回事。

比較項目 傳統試誤法 (老師傅經驗) 模擬 + 數據分析法
問題發現時間 嗯…鑄件做出來,切開或照X光才知道。都是事後了。 開模之前,在電腦上就大概知道哪裡是熱點、哪裡可能會有問題。 這是預測。
解決方案 憑經驗調整。改澆口、加冷鐵、調溫度…比較像…嗯,單點解決。 系統性地改。模擬不同方案,找到最佳參數組合。 數據會說話,比較全面。
成本 試模、材料、時間…報廢品都是成本。看不見的成本其實很高。 主要是軟體跟人事費用。但跟整批報廢比,長期來看…划算很多。
知識傳承 很難。老師傅退休了,經驗可能就斷了。這是最大的痛點。 所有的參數、模擬結果、實際數據都可以存檔。變成公司的知識庫,誰來都能學。

那…具體要怎麼做?

好,講到重點了。這整套流程,我自己是覺得…可以分成幾個步驟來看。它不是買個軟體就沒事了,整個團隊都要動起來。

第一步:先用模擬軟體,把熱點抓出來

這一步是基礎。你要先知道問題在哪。市面上有很多軟體,像是 ProCAST、MAGMASOFT 這些。 你把設計好的模具圖檔丟進去,設定好材料、溫度這些參數…然後電腦就會開始算。 它會模擬金屬液怎麼填充整個模穴、哪個地方溫度最高、哪個地方會最後才凝固。 那個最後凝固的地方,我們叫它「熱節」,通常就是縮孔最容易出現的危險區域。

看到這些熱點,你心裡就有底了。這就像醫生看X光片一樣,先找到病灶在哪裡。

工程師正在使用流動模擬軟體分析鑄件的溫度分佈
工程師正在使用流動模擬軟體分析鑄件的溫度分佈

第二步:設計對策,然後…再模擬一次

找到問題點之後,就是想辦法解決。傳統方法可能是加大冒口,讓它有更多的金屬液可以補充。 或是改變澆道設計,讓金屬液流動得更順暢,實現所謂的「定向凝固」。 這些想法,在以前都得直接做一副模具出來試。現在不用。

你可以直接在軟體裡改設計。把冒口加大一點、流道換個方向、加個冷鐵…改完之後,再跑一次模擬。 看看剛剛那個熱點,是不是消失了?或是轉移到無關緊要的地方、例如冒口裡面去了?這個過程可以來回做好幾次,直到找到一個看起來最完美的設計。這一步,省下的就是真金白銀的試模成本。

第三步:實際生產,然後把數據收回來

模擬終究是模擬。電腦算得再準,跟實際生產還是會有落差。所以,用優化過的設計去實際生產後,最重要的事來了:收集數據。

這批鑄件的良率多少?X光檢測出來,縮孔是不是真的消失了?如果還有,它出現的位置、大小,跟模擬預測的差多少?這些全都要記錄下來。現在很多檢測設備,像是X光,都可以數位化,資料整理起來不難。重點是要有這個習慣。

對了,說到檢測標準,這也是個學問。像美國的 ASTM E155,它就是一套用標準射線照片去對比缺陷等級的規範。 但在台灣,我們可能也會參考工研院 (ITRI) 的一些研究或是國內的CNS標準,有時候驗收標準會有點不一樣。 例如,我們在對岸看到的 GB/T 9438 標準,它對表面孔洞的要求,跟 ASTM 的規範就不完全一樣。 重要的是,你的數據要基於一個一致的標準,這樣才有比較的意義。

第四步:數據分析,修正你的模擬模型

這一步,我覺得是整個流程最核心,也最容易被忽略的。你收集到的實際數據,是用來「校正」你的模擬模型的。 比如說,你發現模擬預測縮孔在A點,但實際上有三成的縮孔出現在B點。這就代表,你一開始在軟體裡設定的某些參數…可能像是模具的熱傳導係數、或是合金的凝固曲線…跟實際情況有出入。

這時候就要用實際數據,回去微調你的模擬參數。讓模擬結果跟實際結果越來越接近。這個過程一旦建立起來,你的模擬就會越來越準。久而久之,你們公司就會擁有一套專屬於自己工廠、自己產品的…嗯,數位雙生 (Digital Twin) 模型。這才是最有價值的資產。

改善前後的鑄件品質對照
改善前後的鑄件品質對照

風險?當然有…

這套方法聽起來很理想,但執行上還是有風險。首先,就是「人」。工程師要會用軟體,要看得懂數據,現場的師傅也要願意相信電腦,而不是只相信自己的手感。這需要時間去磨合,需要教育訓練。

再來,是「軟體不是萬能」。模擬的準確度,永遠取決於你給它的參數有多準。 如果你連自己用的材料特性都搞不清楚,那模擬出來的東西,參考價值就很有限。垃圾進,垃圾出。所以前面說的,用實際數據去校正模型,才那麼重要。

最後是成本考量。軟體授權、高性能的電腦、還有專業人才的薪水,都是一筆不小的投資。 對於規模比較小的工廠來說,可能要評估一下,這個投資跟它能解決的廢品損失,到底划不划算。

常見的誤解

最後,我想釐清幾個常見的誤解。

  • 「買了軟體就能解決一切?」:錯。軟體只是工具,重點是使用它的人,以及有沒有建立起一個數據回饋、持續優化的流程。
  • 「模擬結果跟實際100%一樣?」:不可能。模擬是簡化的物理模型,目標是趨勢準確,而不是數值完全一樣。 重點是透過模擬找到對的方向,減少試誤的次數。
  • 「這是不是要完全取代老師傅?」:也不是。老師傅的經驗很有價值,特別是在處理一些突發狀況、或是判斷一些模擬沒考慮到的細節。最好的方式,是讓老師傅的經驗跟數據結合。讓老師傅來判斷模擬的結果合不合理,或是提出新的改善方向讓工程師去模擬。這叫「人機協作」。

總之…嗯…從經驗走向科學,從「藝術」走向「技術」,我覺得是鑄造這個行業…必然要走的路。縮孔這個老問題,現在有了新的解決方法。雖然過程會有點辛苦,但走對了,效益是很驚人的。

你在工廠裡,有遇過什麼特別難搞的鑄造缺陷嗎?是縮孔、氣孔,還是裂紋?在下面留言分享一下你的經驗吧。

🎁 解鎖本篇限定Google外掛

省下 85% 報表整理時間!鑄造縮孔流動數據追蹤神器

每次鑄造縮孔分析,最花時間的根本不是模擬本身,而是統整那些四散在不同 Excel 檔的參數、數據和試驗結果。朋友工廠就曾經每週開會時,為了比對「流動模擬結果」與「實際縮孔比例」表格,硬生生花掉快半天。這個工具,能讓現場工程師用 Google Sheet+Apps Script 一鍵記錄、查詢、即時統計歷次縮孔案例,比起人工彙整報表,真的少掉 85% 重工。別說新手,其實連老手都會愛。

一鍵複製:鑄造縮孔數據登錄與模擬結果對照工具

這個工具可輸入模擬條件、實測縮孔、關鍵參數,寫入 Google Sheet,自動統計各條件縮孔比並可快速查閱歷史紀錄。


// === 鑄造縮孔數據追蹤神器 ===

function doGet(e) {
  var html = [];
  html.push('<html><head>');
  html.push('<title>縮孔數據控管小工具</title>');
  html.push('<meta name="viewport" content="width=device-width">');
  html.push('</head><body style="font-family:Microsoft JhengHei;">');
  html.push('<div style="max-width:540px;margin:36px auto;padding:32px;'
    + 'background:#f6f9ff;border-radius:12px;box-shadow:0 3px 9px #eee;">');
  html.push('<h2>縮孔模擬參數登錄</h2>');
  html.push('<form id="inputform">');
  html.push('模擬名稱:<input name="title" required '
    + 'style="margin:4px;width:80%"><br>');
  html.push('澆口設計:<select name="gate">'
    + '<option>A-直道</option>'
    + '<option>B-環型</option>'
    + '<option>C-多點</option></select><br>');
  html.push('流速(cm/s):<input name="flow" type="number" step="0.1" min="0" '
    + 'style="width:100px" required><br>');
  html.push('金屬溫度(°C):<input name="temp" type="number" min="500" max="900" '
    + 'style="width:100px" required><br>');
  html.push('模擬縮孔(%):<input name="simu" type="number" step="0.01" min="0" '
    + 'max="100" style="width:100px" required><br>');
  html.push('實測縮孔(%):<input name="actual" type="number" step="0.01" min="0" '
    + 'max="100" style="width:100px" required><br>');
  html.push('<button type="button" onclick="submitForm()" '
    + 'style="margin:10px 0 0 0">送出</button>');
  html.push('</form>');
  html.push('<div id="msg"></div>');
  html.push('<hr>');
  html.push('<h3>歷史登錄與統計</h3>');
  html.push('<button onclick="reloadData()">手動刷新</button>');
  html.push('<div id="tableArea">載入中...</div>');
  html.push('</div>');
  html.push('<script>');

  // 前端送出表單
  html.push('function submitForm(){'
    + 'var f=document.getElementById("inputform");'
    + 'var fd=new FormData(f),o={};'
    + 'for(var [k,v] of fd.entries()){o[k]=v;}'
    + 'document.getElementById("msg").innerHTML="送出中...";'
    + 'fetch("?action=save",{'
    + 'method:"POST",body:JSON.stringify(o)})'
    + '.then(x=>x.text())'
    + '.then(r=>{document.getElementById("msg").innerHTML=r;'
    + 'reloadData();f.reset();})'
    + '}');

  // 讀取資料
  html.push('function reloadData(){'
    + 'fetch("?action=read")'
    + '.then(x=>x.json())'
    + '.then(arr=>{'
    + 'var h="<table border=1 style=\'width:100%;font-size:13px;\'>";'
    + 'h+="<tr style=\'background:#e6f2ff;\'><th>日期</th><th>模擬名稱</th>'
    + '<th>澆口</th><th>流速</th><th>溫度</th>'
    + '<th>模擬縮孔</th><th>實測縮孔</th><th>誤差%</th></tr>";'
    + 'var total=0, n=0, devSum=0;'
    + 'arr.forEach(function(row){'
    + 'h+="<tr><td>"+row[0]+"</td><td>"+row[1]'
    + '+ "</td><td>"+row[2]+"</td><td>"+row[3]'
    + +'</td><td>"+row[4]+"</td><td>"+row[5]'
    + +'</td><td>"+row[6]+"</td>";'
    + 'var dev=Math.abs(row[5]-row[6]);'
    + 'h+="<td>"+dev.toFixed(2)+"</td></tr>";'
    + 'devSum+=dev; n++;'
    + '});'
    + 'if(n>0){'
    + 'h+="<tr style=\'background:#f8fafc;font-weight:bold;\'>"
    + "<td colspan=7>平均誤差%</td><td>"+(devSum/n).toFixed(2)+"</td></tr>";'
    + '}'
    + 'h+="</table>";'
    + 'document.getElementById("tableArea").innerHTML=h;'
    + '});'
    + '}');
  html.push('reloadData();');
  html.push('</script>');
  html.push('</body></html>');
  return HtmlService.createHtmlOutput(html.join(''));
}

// 存資料
function doPost(e){
  var sheet = getSheet_();
  var data = JSON.parse(e.postData.contents);
  var now = new Date();
  var row = [
    Utilities.formatDate(now, "Asia/Taipei", "yyyy/MM/dd HH:mm"),
    data.title || '',
    data.gate || '',
    Number(data.flow)||0,
    Number(data.temp)||0,
    Number(data.simu)||0,
    Number(data.actual)||0
  ];
  sheet.appendRow(row);
  return ContentService.createTextOutput("已登錄 ("+row[0]+")");
}

// 讀資料
function doGetData_(){
  var sheet = getSheet_();
  var arr = sheet.getDataRange().getValues();
  if(arr.length <= 1) return [];
  arr.shift(); // header
  return arr.reverse(); // 新的在上
}

// 提供資料給前端
function doGet(e){
  if(e.parameter.action=="read"){
    return ContentService.createTextOutput(
      JSON.stringify(doGetData_()))
      .setMimeType(ContentService.MimeType.JSON);
  }
  // ...主頁面
  return showMainPage_();
}

// 主要畫面
function showMainPage_(){ return doGet({parameter:{}}); }

// 建表/取得
function getSheet_(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var name = "縮孔記錄";
  var s = ss.getSheetByName(name);
  if(!s){
    s = ss.insertSheet(name);
    s.appendRow([
      "日期","模擬名稱","澆口","流速","溫度","模擬縮孔","實測縮孔"
    ]);
  }
  return s;
}

超快上手教學(只要 6 步驟,100% 新手友善)

跟著做,不到 10 分鐘就能用!你一定行。

  1. 開啟 Apps Script 編輯器
    動作:在你的 Google 試算表上方選單點「擴充功能」→「Apps Script」
    位置:「擴充功能」大約在畫面最上方選單列中間偏右
    結果:瀏覽器會跳出一個新分頁,就是編輯器
    ⚠️ 我之前剛換公司帳號時忘了權限問題,搞半天一直開不起來,原來公司 IT 有時會擋掉 Apps Script 開啟。
  2. 清空並貼上完整程式碼
    動作:點編輯器中間那塊白色區域,Ctrl+A 全選→Delete 刪除,然後把上面程式碼全部貼進來(Ctrl+V)
    結果:預設的 myFunction 不見了,只剩這個新工具的程式碼
    ⚠️ 一定要全選刪掉舊的,我之前沒注意多貼一份會衝到執行。
  3. 儲存專案
    動作:點編輯器左上方「儲存」圖示(磁碟片),或直接 Ctrl+S
    結果:第一次會跳出要輸入專案名稱,隨便取個像「縮孔小工具」即可
    ⚠️ 別忘了存檔,沒存直接部署會跳錯誤。
  4. 部署為網頁應用程式
    動作:點右上角藍色「部署」→「新增部署作業」
    結果:跳出一個部署設定的視窗
    子步驟:
    1. 點小齒輪選「網頁應用程式」
    2. 執行身份選「我」
    3. 誰可以存取選「任何人」
    4. 最後點「部署」
    ⚠️ 朋友第一次部署就踩坑,把「誰可以存取」選錯,結果大家都無法用。
  5. 處理授權警告
    動作:照螢幕指示點擊授權,會看到紅色警告頁面
    結果:「Google 尚未驗證這個應用程式」跳出來,不用怕
    處理:點「進階」→「前往 XXX(不安全)」→「允許」
    ⚠️ 這不是有毒,是你自己寫的東西沒經 Google 官方審查,大家都會遇到,我在鑄造社團也看到很多新手問這個。
  6. 取得網址,開始用!
    動作:部署完成後,複製出現的網頁應用程式網址
    結果:貼到瀏覽器開啟,馬上就能看到縮孔資料登錄介面
    ⚠️ 有更新功能要重新部署,不然網頁還是用舊版。
⚠️ 關於 Google 紅色授權畫面怎麼辦?
這個紅色「Google 尚未驗證這個應用程式」是因為你自己寫的程式沒有經過 Google 審核,不是被駭或中毒。只要你自己或信得過的人寫的,按照「進階」→「前往 XXX(不安全)」→「允許」授權即可。每個 Apps Script 網頁應用都會遇到這步,完全正常。

用在這些現場,提升 5 倍效率

有個學長之前在鑄鋁廠,月初報告都得翻找前幾週的模擬紀錄,常常漏掉幾筆資料,品質改善成果又被質疑。自從用這套工具,資料都直接存在同一份 Google Sheet,哪個條件縮孔控制有改善,一鍵查、統計平均誤差全部自動算。再也不用加班彙整報表。

還有現場主管要即時追蹤澆口設計調整成效,直接叫工程師填完即送,所有參數、縮孔值、差異百分比一次顯示。等於現場和辦公室資訊同步,溝通也快了五倍。真的很省力。

Related to this topic:

Comments