射出模具精度不良改善:用模流分析找出問題、透過參數調整解決誤差

Published on: | Last updated:

重點一句話

老實說,射出件尺寸跑掉、翹曲變形,先別急著敲敲打打改模具。問題八成出在你看不到的塑料流動、壓力傳遞和冷卻速度上,而模流分析,就是能讓你透視這一切的X光片。

一個你可能也遇過的案例:縮水變形的遙控器外殼

我們來想像一個狀況。假設你正在開發一個新的遙控器,外殼是用ABS塑膠做的。來回試模好幾次,尺寸總是不對,特別是長邊的末端,總是會往內縮一點點,有點像香蕉那樣微微彎曲,而且表面還有點不平整的凹陷,我們叫它「縮水痕」。 現場的老師傅們憑經驗調了半天,一下說要增加射出壓力,一下又說要延長保壓時間,搞得大家團團轉,但問題還是沒解決,不良率一直降不下來。

這時候,與其繼續盲目地試下去,不如停下來做個模流分析。這就像醫生看診,不會頭痛醫頭、腳痛醫腳,而是先照個X光或CT,看清楚問題到底在哪。透過軟體模擬,我們很快就發現了幾個「兇手」:

  • 壓力傳遞不均: 模擬顯示,從澆口進來的塑料,流到外殼末端時壓力已經掉了很多。這導致末端區域的塑料在保壓階段沒有得到足夠的壓力來填補收縮,自然就會往內縮。
  • 冷卻不均勻: 產品的中心區域比較厚,散熱慢;而邊緣比較薄,冷得快。這種冷卻速度的差異,就像一塊肉,外面烤焦了裡面還是生的,內部應力拉扯之下,產品不翹才怪。
  • 澆口位置不佳: 原本的澆口設計在短邊的中央,塑料要走最長的路才能填滿整個模穴,這讓壓力損失和冷卻不均的問題更嚴重。

找到問題根源後,解決方案就很明確了。我們把澆口從短邊改到長邊側,縮短了塑料的流動距離。接著,根據模擬的熱點區域,請模具廠稍微調整了冷卻水路的設計,讓產品整體的降溫速度更一致。 最後,微調了保壓壓力跟時間。結果,產品的翹曲變形量從原本的0.8mm降到0.2mm以內,表面的縮水痕也幾乎消失了。這就是模流分析的價值:它把「猜測」變成了「診斷」。

模流分析軟體中顯示的翹曲變形模擬圖
模流分析軟體中顯示的翹曲變形模擬圖

怎麼做:用模流分析抓出問題的四個步驟

好,聽起來很神奇,但具體要怎麼做?其實流程並不複雜,我自己是覺得,關鍵在於解讀數據,然後把它跟現實世界的參數對應起來。大致上可以分成這幾步:

步驟一:建立正確的數位模型(Garbage In, Garbage Out)

這是最基本也最重要的一步。你需要把產品的3D圖檔、模具的流道和冷卻系統設計,都匯入到分析軟體裡,例如 Moldex3DAutodesk Moldflow。 但最常被忽略的是「材料物性資料」。 如果你用的塑膠材料資料不準確,比如黏度、PVT(壓力-體積-溫度)關係、熱傳導係數是錯的,那後面跑出來的分析結果基本上就是一堆沒用的垃圾數據。 所以,一定要用材料商提供的官方數據,或是花錢去量測,千萬不能隨便找個性質相近的材料來替代。

步驟二:設定貼近現實的成型條件

再來,你要在軟體裡設定射出成型機的參數,盡可能跟你實際上試模的參數一樣。 這包括:

  • 熔膠溫度與模具溫度: 這兩個溫度是影響流動與冷卻的關鍵。
  • 射出速度: 射太快可能產生噴流痕,射太慢又可能提早冷卻填不滿。
  • 保壓壓力與時間: 保壓是為了補償塑料冷卻時的體積收縮,壓力不夠或時間太短,就容易出現凹陷跟縮水。
  • 冷卻時間: 這直接關係到生產週期和產品的定型效果。

設定得越接近現實,模擬出來的結果才越有參考價值。

分析結果中的壓力分佈圖,紅色代表高壓區
分析結果中的壓力分佈圖,紅色代表高壓區

步驟三:解讀分析結果,找出可疑點

跑完分析後,軟體會給你一大堆五顏六色的圖。別怕,重點看這幾個就好:

  • 充填時間圖: 可以看到塑料是怎麼填滿模穴的,有沒有哪個地方比較慢(可能產生結合線或短射)。
  • 壓力分佈圖: 看壓力傳遞是否順暢,從澆口到末端的壓力降了多少。壓力降太大就是警訊。
  • 溫度分佈圖: 看產品脫模時的溫度是否均勻。如果有的地方紅通通(高溫),有的地方卻是藍色的(低溫),那翹曲的風險就很高。
  • 翹曲變形圖: 這是最重要的,軟體會直接預測產品會怎麼翹、翹多少。 你可以把它跟實際量測到的變形趨勢做比對,如果趨勢吻合,代表你的模擬是可信的。

步驟四:對症下藥,調整參數或設計

這就是把分析轉為行動的關鍵。舉例來說:

  • 如果發現是壓力降太大,你可以考慮:加大澆口尺寸、改變澆口位置、或者換一個流動性更好的材料。
  • 如果看到明顯的冷卻不均,你應該檢查冷卻水路設計,看是不是離熱點太遠,或者流量不足,需要調整水路位置或加大管徑。
  • 如果翹曲主要是由分子排列方向(纖維配向)引起的,特別是在加了玻璃纖維的材料中,調整澆口位置來改變塑料的流動方向,往往會有奇效。

這個過程可能需要來回幾次,不斷優化,直到模擬出來的翹曲量在可以接受的範圍內,再回頭去修改模具或調整生產參數。這樣做,遠比在射出機旁邊盲目地試誤要有效率得多。

傳統試誤 vs. 模流分析,差在哪?

我知道,很多工廠還是習慣靠老師傅的經驗。經驗很重要,但面對越來越複雜、精密的產品,有時候真的會碰到瓶頸。我整理了一個簡單的比較表,可以看看兩者的差異。

項目 傳統試誤法 (Trial and Error) 模流分析輔助法 (Simulation-Assisted)
問題判斷 靠經驗猜。欸,是不是壓力不夠?還是溫度太高?一個一個試。 看數據說話。模擬顯示末端壓力降了50%,而且A、B兩點溫差30度,問題很明確。
解決方案 通常是調整機台參數。改模具?那是最後的大絕招,又貴又慢。 從源頭思考。也許改個澆口位置,或是優化產品肉厚,就能解決80%的問題。改參數只是微調。
時間成本 很難說。運氣好,半天搞定;運氣不好,試一個禮拜還在原地踏步,浪費一堆機台時間跟原料。 前期分析需要時間(幾小時到幾天),但通常第一次或第二次試模就能成功,總體時程更短。
知識累積 比較像是個人技藝,很難傳承。老師傅退休了,功夫可能就帶走了。 所有分析的過程和結果都可以被記錄、存檔,變成公司的數位資產,新人也能參考學習。
工程師正在比對分析結果與實際的塑膠成品
工程師正在比對分析結果與實際的塑膠成品

模流分析不是萬靈丹:它的限制與常見錯誤

講了這麼多好處,也要平衡一下。模流分析不是按個按鈕就天下太平的神器,它也有它的限制,而且用錯了比不用還糟糕。

最大的問題就是前面提過的「Garbage In, Garbage Out」(垃圾進、垃圾出)。 很多人為了省錢或省事,用不準確的材料資料,或是隨便設定成型參數,結果分析結果跟實際狀況差了十萬八千里,最後就得出「模流分析不準」的結論。這真的不是軟體的錯。

另外,有些問題模流分析也抓不到。例如,模具本身加工的誤差、射出機性能不穩定(例如壓力響應慢)、或是環境溫濕度的劇烈變化,這些都可能導致尺寸不良,但它們並不在軟體的模擬範圍內。 歐洲有些研究,像是奧地利Leoben礦業大學的一篇論文就提到,即便用了蒙地卡羅方法去模擬各種變因,長期生產中出現的一些量測值跳動,還是很難在模擬中重現。 這點跟我們在台灣的經驗蠻像的,模擬能解決大部分系統性的問題,但對於偶發的、機台性的波動,還是得靠現場的品管監控。

所以,最健康的心態是把模流分析當成一個非常厲害的「顧問」或「導航」,它能幫你指出最可能正確的方向,但最後開車的人還是你自己。你需要結合分析結果跟現場的實務經驗,才能發揮最大的效益。

好了,今天就先聊到這裡。希望這些想法能給你一些啟發。下次當你又為了產品變形頭痛時,或許可以試試看,用數位的方式,透視一下模具裡到底發生了什麼事。


互動一下: 在你的經驗中,處理射出件翹曲變形最頭痛的是什麼問題?是材料收縮不均、冷卻問題,還是結構設計本身就很難搞定?在下面留言分享你的看法吧!

🎁 解鎖本篇限定Google外掛

專業級射出模具參數誤差紀錄與調整追蹤工具

射出成型現場最怕的狀況之一,就是明明有做模流分析,實際量產時卻還是出現精度誤差。現場調整參數靠經驗寫在白板,過幾天就消失。這種資料分散、無法對照模流分析建議和現場修正紀錄的問題,很多人其實遇過。像我在協助一間工廠導入模具最佳化時,現場工程師天天抱怨「到底誰調了什麼,什麼時候改的?」

複製這段 Apps Script 程式碼到你的專案

這工具能讓你輸入每一筆模流分析建議參數、實際生產修正值、對照差異,並統計修正幅度,直接在 Google Sheet 自動存檔和查詢歷史紀錄。


// === 射出模具精度誤差追蹤工具 ===

function doGet(e) {
  var html = [];
  html.push('<html><head>');
  html.push('<title>射出模具參數誤差追蹤</title>');
  html.push('<meta charset="utf-8">');
  html.push('<style>body{font-family:sans-serif;background:#eef1f5;}'
    +'.wrapper{max-width:470px;margin:30px auto;'
    +'background:#fff;padding:24px;border-radius:8px;box-shadow:0 2px 7px #aaa;}'
    +'input,select{margin:8px 0;width:100%;padding:6px;border-radius:3px;}'
    +'.btn{padding:8px 16px;margin-top:10px;background:#005aa7;'
    +'color:#fff;border:none;border-radius:3px;cursor:pointer;}'
    +'.tablewrap{margin-top:28px;overflow-x:auto;}'
    +'table{width:100%;border-collapse:collapse;font-size:13px;}'
    +'th,td{border:1px solid #aaa;padding:6px;}'
    +'th{background:#dde6ed;}'
    +'.err{color:#c00;font-size:12px;}' 
    +'</style>');
  html.push('</head><body>');
  html.push('<div class="wrapper">');
  html.push('<h2>射出模具參數誤差紀錄表</h2>');
  html.push('<form id="myForm">');
  html.push('模穴編號: <input type="text" name="cavity_id" required><br>');
  html.push('品名: <input type="text" name="part_name" required><br>');
  html.push('模流建議值 (mm): <input type="number" step="0.001" name="mfv" required><br>');
  html.push('實際量測值 (mm): <input type="number" step="0.001" name="actual" required><br>');
  html.push('現場修正值 (mm): <input type="number" step="0.001" name="adj" required><br>');
  html.push('修正人員: <input type="text" name="operator"><br>');
  html.push('<button class="btn" type="button" onclick="submitData()">儲存紀錄</button>');
  html.push('<span class="err" id="msg"></span>');
  html.push('</form>');
  html.push('<button class="btn" onclick="reloadTable()" style="margin-bottom:10px">'
    +'刷新歷史紀錄</button>');
  html.push('<div class="tablewrap"><div id="dataTable"></div></div>');
  html.push('</div>');
  html.push('<script>');

  // 表單送出 AJAX
  html.push('function submitData(){'
    +'var f=document.getElementById("myForm");'
    +'var form={};'
    +'for(var i=0;i<f.elements.length;i++){'
      +'var el=f.elements[i];'
      +'if(el.name)form[el.name]=el.value;'
    +'}'
    +'document.getElementById("msg").textContent="";'
    +'google.script.run.withSuccessHandler(function(res){'
      +'if(res==="OK"){reloadTable();f.reset();}else{'
        +'document.getElementById("msg").textContent=res;}'
    +'}).saveRecord(form);'
  +'}');

  // 讀取歷史紀錄
  html.push('function reloadTable(){'
    +'google.script.run.withSuccessHandler(drawTable).getTableData();'
  +'}');

  html.push('function drawTable(arr){'
    +'var html="";'
    +'if(!arr||arr.length<2){html="<p>暫無紀錄</p>";'
    +'}else{'
      +'html+="<table><tr>";'
      +'for(var j=0;j<arr[0].length;j++){html+="<th>"+arr[0][j]+"</th>";}'
      +'html+="</tr>";'
      +'for(var i=1;i<arr.length;i++){'
        +'html+="<tr>";'
        +'for(var j=0;j<arr[i].length;j++){'
          +'html+="<td>"+arr[i][j]+"</td>";'
        +'}'
        +'html+="</tr>";'
      +'}'
      +'html+="</table>";'
    +'}'
    +'document.getElementById("dataTable").innerHTML=html;'
  +'}');
  html.push('reloadTable();');
  html.push('</script>');
  html.push('</body></html>');
  return HtmlService.createHtmlOutput(html.join(""));
}

// 資料寫入 Sheet
function saveRecord(obj) {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('紀錄表')||ss.insertSheet('紀錄表');
  // 標題列
  if(sh.getLastRow()===0){
    sh.appendRow(['時間','模穴編號','品名','模流建議(mm)',
      '實際量測(mm)','現場修正(mm)','修正幅度(mm)','修正人員']);
  }
  // 驗證
  var mfv = parseFloat(obj['mfv']||'');
  var actual = parseFloat(obj['actual']||'');
  var adj = parseFloat(obj['adj']||'');
  if(isNaN(mfv)||isNaN(actual)||isNaN(adj)){
    return '數值格式錯誤';
  }
  var fix_gap = Math.round((actual-adj-mfv)*1000)/1000;
  var dt = new Date();
  sh.appendRow([dt,obj['cavity_id'],obj['part_name'],mfv,
    actual,adj,fix_gap,obj['operator']||'']);
  return "OK";
}

// 取得所有資料
function getTableData() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sh = ss.getSheetByName('紀錄表');
  if(!sh) return [['尚無資料']];
  var data = sh.getDataRange().getValues();
  // 最近 20 筆
  var out = [data[0]];
  for(var i=data.length-1; i>0 && out.length<=20; i--){
    out.push(data[i]);
  }
  return out;
}

標準化導入流程:新手完整部署步驟

照著這個流程,從零開始也能建出穩定的紀錄系統。第一次會稍微繞一點路,但之後每次只要填表單就好。

  1. 開啟 Apps Script 編輯器
    先打開你的 Google 試算表,然後點畫面上方中間偏右的「擴充功能」,選「Apps Script」。
    進去後會自動開新分頁。
    ⚠️ 有一次我幫朋友弄,結果他用公司帳號直接卡住,因為 IT 有鎖自定義程式,記得要用個人帳號或確定有權限。
  2. 清空並貼上程式碼
    點到中央白色區塊,全選(Ctrl+A),全部刪除,再貼上剛剛那段程式碼(Ctrl+V)。
    會看到原本的 myFunction() 變成這一長串新程式碼。
    ⚠️ 千萬記得全刪再貼,我以前有遇過貼進去下面還殘留舊程式,結果跑起來怪怪的。
  3. 儲存專案
    點工具列靠左的磁碟片(「儲存」),或直接按 Ctrl+S。
    第一次儲存時會跳出命名視窗,名字可以隨意填,例如「模具參數追蹤」。
    ⚠️ 沒存檔直接部署會出現錯誤,我有一次卡超久才想到要先存。
  4. 部署為網頁應用程式
    右上角點藍色「部署」,選「新增部署作業」。
    會彈出設定視窗。請依下列順序操作:
    1. 點選齒輪圖示選「網頁應用程式」
    2. 執行身分選「我」
    3. 誰可以存取要選「任何人」
    4. 按「部署」
    ⚠️ 存取權限如果不是「任何人」,現場同事根本打不開。這是新手超容易忽略的細節。
  5. 處理授權警告
    這步很多人一看到紅色畫面就慌了。其實照步驟來:
    點「前往 XXX(不安全)」然後再點「允許」。
    畫面會顯示你剛才寫的 Apps Script 程式要存取 Google Sheet。
    ⚠️ 這不是病毒!我剛入門那時也是看了很緊張,問前輩才知道自己寫的東西沒送審都會這樣。
  6. 取得網址,開始使用
    授權完成後,畫面會跳出一個 https://script.google.com/xxx 網址。
    複製那串網址,貼到瀏覽器打開就會看到專業版的模具誤差紀錄介面。
    ⚠️ 如果你之後有改程式,一定要重新部署一次,不然同事打開還是舊版。我之前就曾經搞錯,結果現場填的全是錯表格。
⚠️ 關於 Google 的紅色授權畫面
每次第一次部署 Apps Script,都會看到一個寫著「Google 尚未驗證這個應用程式」的紅色警告畫面。這只是因為你是用自己帳號寫的程式,Google 不知道內容安全性,所以自動提醒你小心。只要是你自己寫、自己管的專案,按「進階」再點「前往(不安全)」允許權限就可以。現場很多人看到就慌,真的沒什麼問題。只要你不是亂複製別人來路不明的程式就安全。

現場管理者與工程師的標準應用場景

一個典型的情境:品管工程師每天早上巡線,現場用這工具掃過每一穴的最新修正資料,馬上能看到哪些位置調整最大、哪些持續有偏差,可以直接拿來跟模流分析報告做比對。不用再找紙本紀錄,也不會有「這一批的調整紀錄被某人帶回家」這種狀況。另外,現場工程師夜班交接時,直接填一筆,主管隔天用手機瀏覽就能即時掌握參數變化與修正幅度。對生產穩定度管理,這工具真的省力。

Related to this topic:

Comments