iT邦幫忙

2026 iThome 鐵人賽

DAY 4
0
AI 自動化

AI × Digital Twin 打造線纜工廠自我進化系統系列 第 4 篇

【Day 4】押出機裡到底發生了什麼事

  • 分享至 

  • xImage
  •  

昨天把資料對齊了。今天要處理一個更根本的問題:對齊之後,我們要對什麼東西建模?

如果直接把 30 個參數丟進 XGBoost,也會出東西,而且準度可能還不錯。但那個模型只會告訴你「這捲大概會不良」,不會告訴你「往哪個方向調、調多少」。

差別在有沒有物理骨架。

今天就來拆這個骨架。

從模頭出來那一刻

先講一件我一開始搞錯的事。

我原本以為,模頭的孔開多大,出來的料就多粗。這個直覺在金屬加工大致成立,但在高分子押出完全不對。

熔融塑料從模頭擠出來的瞬間,會膨脹。

原因是:料在螺桿和模頭流道裡被擠壓、被剪切,高分子鏈被拉直、被定向。一離開模頭,約束消失,那些被拉直的鏈會彈回去,材料就在徑向脹開。這個現象叫 die swell(模頭膨脹),也叫 Barus effect。

膨脹比可以到 1.2~2 倍,而且不是常數——它跟剪切速率有關(押得越快脹越多)、跟溫度有關(溫度越高鬆弛越快、脹越少)、跟材料有關(分子量分布越寬脹越多)。

這件事很關鍵,因為它意味著:同一副模具、同樣的料,你只要改了螺桿轉速或溫度,出模的尺寸就變了。

然後,線材被牽引拉走,又被拉細。

所以最終外徑是這兩件事打架的結果:模頭膨脹把它撐大,牽引拉伸把它拉小。

最重要的一條式子:拉伸比

把整個押出站抽象到最簡,其實就是一個質量守恆。

單位時間內,從模頭出去的料的體積,等於纏到收線盤上的料的體積(忽略密度變化):

Q = A_出模 × v_出模 = A_成品 × v_牽引

其中 A 是包覆層的環形截面積。定義 DDR(Draw Down Ratio,拉伸比):

DDR = A_出模 / A_成品 = v_牽引 / v_出模

拉伸比就是牽引速度比出料速度快多少倍。押出常見的 DDR 大概在 1.5~8 之間,看製程。

把它展開成可以算的形式。設:

模具:模套內徑 D_die、模芯外徑 d_tip
成品:外被外徑 D_od、導體(內層)外徑 d_core

出模的環形面積:

A_die = π/4 × (D_die² − d_tip²)

成品的環形面積:

A_prod = π/4 × (D_od² − d_core²)

由 DDR = A_die / A_prod,反推成品外徑:

D_od = sqrt( d_core² + (D_die² − d_tip²) / DDR )

而 DDR 又可以從流量和線速算:

DDR = A_die × v_die / (A_prod × v_line)

繞了一圈,實務上更好用的是直接從質量流率算。因為押出機的產出量 ṁ(kg/hr)跟螺桿轉速 N 近似線性:

ṁ ≈ k × N (k 由螺桿幾何和料性決定)

那麼包覆層的截面積:

A_prod = ṁ / (ρ_melt × v_line)

D_od = sqrt( d_core² + 4ṁ / (π × ρ × v_line) )

這條式子是整個押出孿生模型的核心。它說的是:

螺桿轉速 ↑ → 出料量 ↑ → 外徑 ↑
牽引速度 ↑ → 拉伸比 ↑ → 外徑 ↓
導體外徑 ↑ → 成品外徑 ↑(直接疊上去)

注意這裡面沒有溫度。

那為什麼 Day 1 的師傅在調溫度?為什麼 Day 3 我們發現溫度跟外徑是負相關?

溫度從哪裡進來

溫度不在質量守恆裡,它從三個地方偷偷進來。

第一,熔體密度。 溫度高,ρ_melt 下降。同樣的體積流量,質量流率會變。但這個效應通常不大。

第二,黏度,再影響實際流量。 這是主要路徑。

高分子是剪切變稀(shear-thinning)的非牛頓流體,黏度隨溫度呈 Arrhenius 型下降:

η(T, γ̇) = η₀ × exp( E/R × (1/T − 1/T_ref) ) × γ̇^(n−1)

溫度升高 → 黏度下降 → 模頭壓力下降 → 在相同螺桿轉速下,漏流(back flow)增加、實際產出量略降。同時黏度低的料更容易被拉細。

第三,die swell。 前面說過,溫度高 → 鬆弛快 → 膨脹比小 → 出模尺寸小。

這三條路的合力,大部分情況下是:溫度 ↑ → 外徑 ↓。

這就對上了 Day 3 那個負係數,也對上了師傅的操作直覺。

物理模型的價值就在這裡:它不只給你數字,它給你一個可以檢驗資料的參考答案。 當模型跟物理不一致的時候,你知道該回去查資料,而不是接受模型。

冷卻:被忽略的那一段

料出了模頭、被拉細之後,還要進水槽定形。這一段常被當成「反正就是冷卻」,但它決定兩件事。

收縮。 從熔融態(~200°C)冷到室溫,體積會縮。半結晶材料(PE、PP)因為結晶會額外收縮,線收縮率可能到 1.5~3%;非晶材料(PVC)小一些。所以熱態外徑 ≠ 冷態外徑,而測徑儀通常裝在水槽之後量冷態。

如果水槽長度或水溫變了,料出水槽時的芯部溫度不同,後續在收線盤上還會繼續縮——這就是「剛量是對的,隔天量變小了」的來源。

應力凍結。 冷太快,表層先固化、芯部後固化,內應力會被凍在裡面。短期看不出來,長期會造成護套收縮、開裂、與內層剝離。

冷卻可以寫成一維徑向熱傳導:

∂T/∂t = α × (1/r × ∂/∂r (r × ∂T/∂r))

配上表面對流邊界條件 h(水溫、水流)。實務上不一定要真的解 PDE,可以用一個集總參數的指數衰減先近似,不夠準再補。

所以物理模型能到哪裡

我把押出站的物理骨架寫成程式碼,大概長這樣:

python
import numpy as np

class ExtrusionPhysics:
"""押出製程的一階物理模型:質量守恆 + 溫度修正 + 冷卻收縮"""

def __init__(self, k_screw, rho_ref=940.0, T_ref=200.0,
             beta_rho=-6.5e-4, beta_swell=-1.2e-3,
             shrink_rate=0.02):
    self.k_screw    = k_screw      # kg/hr per rpm,由試車標定
    self.rho_ref    = rho_ref      # 參考溫度下熔體密度 kg/m3
    self.T_ref      = T_ref
    self.beta_rho   = beta_rho     # 密度溫度係數 (1/°C)
    self.beta_swell = beta_swell   # die swell 的溫度修正 (1/°C)
    self.shrink_rate= shrink_rate  # 冷卻線收縮率

def melt_density(self, T_melt):
    return self.rho_ref * (1 + self.beta_rho * (T_melt - self.T_ref))

def mass_flow(self, screw_rpm):
    """kg/hr → kg/s"""
    return self.k_screw * screw_rpm / 3600.0

def hot_od(self, screw_rpm, line_speed, d_core, T_melt):
    """
    熱態外徑 (m)
    screw_rpm : rpm
    line_speed: m/s
    d_core    : 內層外徑 m
    T_melt    : °C
    """
    m_dot = self.mass_flow(screw_rpm)          # kg/s
    rho   = self.melt_density(T_melt)          # kg/m3
    A_ann = m_dot / (rho * line_speed)         # m2 環形截面積
    od    = np.sqrt(d_core**2 + 4 * A_ann / np.pi)

    # die swell 的溫度修正:溫度高 → 膨脹小 → 外徑再縮一點
    od *= (1 + self.beta_swell * (T_melt - self.T_ref))
    return od

def cold_od(self, *args, **kwargs):
    """冷態外徑 = 熱態 × (1 - 線收縮率)"""
    return self.hot_od(*args, **kwargs) * (1 - self.shrink_rate)

def sensitivity(self, base, delta=1e-3):
    """數值偏微分:每個參數動一單位,外徑動多少 (mm)"""
    out = {}
    base_od = self.cold_od(**base)
    for key in base:
        pert = dict(base)
        step = max(abs(base[key]) * delta, 1e-6)
        pert[key] = base[key] + step
        out[key] = (self.cold_od(**pert) - base_od) / step * 1000
    return base_od, out

---- 使用範例 ----

phys = ExtrusionPhysics(k_screw=1.85) # 由試車資料標定

base = dict(screw_rpm=62.0,
line_speed=3.0,
d_core=0.00420, # 4.20 mm
T_melt=185.0)

od, sens = phys.sensitivity(base)
print(f"predicted cold OD = {od*1000:.3f} mm\n")
for k, v in sens.items():
print(f" d(OD)/d({k:<11}) = {v:+.5f} mm per unit")

輸出大致會是這種形式:

predicted cold OD = 5.412 mm

d(OD)/d(screw_rpm ) = +0.02xxx mm per rpm
d(OD)/d(line_speed) = -0.4xxxx mm per (m/s)
d(OD)/d(d_core ) = +0.8xxxx mm per m
d(OD)/d(T_melt ) = -0.00xxx mm per °C

這組偏微分,就是師傅腦袋裡那張表。

Day 1 那位師傅調三度而不是五度,對應的就是他心裡知道「每度大概動多少」。差別只是他的版本沒有寫下來、沒有辦法傳給別人、也沒有辦法在換料的時候被重新標定。

但物理模型會不準,而且一定會

先誠實講清楚:上面那個模型單獨拿去現場用,會有偏差。原因很多:

k_screw 不是常數,螺桿磨損、料的顆粒形狀、喂料段溫度都會影響
收縮率跟冷卻歷程有關,不是一個固定值
die swell 的建模極度簡化,真實的黏彈行為複雜得多
模具磨損、對心偏差、模頭積料,全部沒進來
環境溫濕度、原料批次差異,完全沒有

所以下一步不是把物理模型做得更複雜,而是接受它不完美,然後用資料補殘差:

OD_實際 = f_物理(參數) + g_資料(參數, 情境)

f_物理 給方向和量級,g_資料 學那些物理抓不到的東西。這個叫殘差建模 / 混合模型(hybrid modeling),是我認為最適合這類製造場景的架構。

好處很直接:

外插安全。 純資料模型遇到沒看過的規格會亂猜,物理骨架會把它拉住。
可解釋。 你可以告訴師傅「物理算出來是 5.41,實際偏大 0.03,殘差模型認為是因為這批料比較稠」。
資料需求低。 不用等三年的資料才能上線。
殘差本身就是診斷訊號。 殘差突然變大,通常代表有物理模型沒描述到的東西在變——模具磨損、原料異常。這比直接預測不良更早。
今天的重點

回到 Day 2 說過的那句話:有物理機制,AI 才能做到「進化」,而不只是「預測」。

今天這篇的價值不在那幾條公式,而在於我們現在有了一組有方向、有量級、可以被驗證的因果關係。它讓我們:

能檢驗資料對不對(Day 3 的負係數,現在有物理依據了)
能給出「往哪調」的建議,而不只是「會不良」
能在資料很少的時候就開始有用
能在模型出錯的時候知道是哪裡出錯


上一篇
【Day 3】第 1,250 公尺的溫度,到底是幾度
下一篇
【Day 5】把物理模型餵進真實資料,然後看它錯在哪
系列文
AI × Digital Twin 打造線纜工廠自我進化系統 共 6 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言