上一篇我們從一個 Lot 出發,看了一次它可能經歷的生命週期。
從建立 Lot、進站、出站,到 HOLD、Rework、Split,最後完成生產、包裝與出貨。
但其實我們跳過了一個很重要的問題:
MES 怎麼知道這個 Lot 應該怎麼生產?
系統不可能憑空知道:
這是什麼產品?
是替哪個客戶生產?
要經過哪些製程?
每一道製程可以使用哪些機台?
生產完成後又要去哪裡?
所以在真正開始建立工單、生產 Lot 以前,我們必須先告訴 MES 一些最基本的資訊。
這些資訊,就是 MES 的:
基礎資料(Master Data)。
我自己在開發 MES 的過程中,慢慢覺得基礎資料其實很像是在:
告訴系統,這間工廠的世界長什麼樣子。
例如今天我們要生產:Product-A
系統首先要知道:
Product-A 是什麼?
接著可能要知道:
Product-A 要經過哪些製程?
例如:組裝 → 測試 → 檢驗
這三個製程又可能分別使用不同的機台。
最後完成生產之後,產品可能先進入完工倉,再經過包裝與出貨。
如果連這些基本資料都不存在,MES 當然也沒有辦法管理後面的生產流程。
第一個很好理解:
產品(Product)
MES 至少要知道目前工廠有哪些產品。
例如:PRODUCT-APRODUCT-BPRODUCT-C
當我們建立工單時,就可以指定:
這張工單要生產的是 PRODUCT-A。
後面建立出來的 Lot,也就能知道自己正在生產什麼產品。
所以產品資料回答的是一個非常基本的問題:
「我們現在到底在做什麼?」
看起來很簡單,但它會一路跟著後面的工單、Lot 與生產歷史。
第二個是:
客戶(Customer)
在我們目前的 MES 中,工單可以綁定客戶。
例如:Customer-A
今天建立:WO-20261007-001
我們就可以知道:
這張工單是替 Customer-A 生產 Product-A。
因此後面建立出來的 Lot,也能跟這張工單產生關係。
從生產管理的角度來看,這樣未來在查詢資料時,就不只是知道:
「這批產品做了什麼?」
也能進一步知道:
「這批產品是替誰生產的?」
再來開始進入生產本身。
我們需要建立:
製程(Process)
例如一個產品可能需要:組裝測試檢驗
這些都是獨立的製程。
但這裡有一個很容易搞混的地方。
建立了製程,不代表我們已經知道產品要怎麼走。
因為「組裝」、「測試」、「檢驗」目前都只是三個獨立存在的製程。
系統還不知道:
到底誰先?
誰後?
是不是每個產品都要走一樣的流程?
這時候就需要另一個很重要的東西。
途程(Route)
可以把前面建立好的製程按照生產需求串起來。
例如:Route-A
裡面的流程可能是:組裝 → 測試 → 檢驗
另一條:Route-B
可能是:組裝 → 檢驗
所以「製程」跟「途程」其實是不同的概念。
製程比較像是在定義:
工廠有哪些生產步驟。
途程則是在定義:
這一次生產,要按照什麼順序走這些步驟。
這也是後面 Lot Control 非常重要的基礎。
因為 MES 要判斷:
LOT-001 做完組裝之後,下一站到底是哪裡?
答案通常就會跟它所使用的途程有關。
知道要做什麼製程之後,還有一個問題:
在哪裡做?
所以我們還需要:
機台(Machine)
例如:Machine-001Machine-002Machine-003
當 Lot 要進入某一道製程時,我們就可以進一步管理它所使用的機台。
這樣未來查看生產紀錄時,就不只是知道:
LOT-001 在 10:00 進入「測試」製程。
還能進一步知道:
LOT-001 是在哪一台機台進行這次生產。
對生產履歷來說,這些資訊就開始慢慢串起來了。
最後還有一個比較容易被忽略的基礎資料:
倉庫(Warehouse)
我們目前的 MES 將倉庫區分成不同用途,例如:
暫存倉
完工倉
包裝倉
報廢倉
使用者也可以依照實際需求建立自己的倉庫。
為什麼 MES 需要知道這些?
因為 Lot 並不是完成最後一道製程之後就突然消失了。
它可能完成生產後進入完工倉。
經過包裝後準備出貨。
或者因為某些原因進入報廢倉。
所以除了:
「Lot 現在在哪一道製程?」
我們還可能需要知道:
「Lot 完成生產之後去了哪裡?」
現在我們已經有:
產品
客戶
製程
機台
途程
倉庫
單獨看,每一個都只是很普通的資料。
但是當它們開始組合之後,MES 才真正有辦法理解一個生產需求。
例如:
Customer-A
Product-A
Route-A
而 Route-A 裡面定義:組裝 → 測試 → 檢驗
各個製程再搭配現場可以使用的機台。
最後產品完成生產後,進入:完工倉
這時候我們才有足夠的資訊去建立一張真正的:
工單(Work Order)
接著再由工單產生需要管理的 Lot。
看到這裡可能會有一個問題。
既然建立工單的時候都要選這些資料,那為什麼不直接在工單裡面全部填一填就好了?
這其實也是我覺得 MES 基礎資料設計很重要的地方。
假設每建立一張工單,都重新輸入:
產品名稱、客戶、製程、機台、途程……
不只很麻煩,也很容易發生:
同一個東西,每個人填出來卻不一樣。
例如有人輸入:Product A
另一個人輸入:Product-A
甚至有人輸入:產品A
對人來說可能知道這三個指的是同一個東西。
但對系統來說:
它們就是三筆不同的資料。
所以我們會先建立好基礎資料,再讓後續的工單、生產流程去使用這些資料。
剛開始做系統時,我其實會覺得:
產品管理、客戶管理、機台管理……
這些頁面好像都只是很普通的 CRUD。
C:新增。
R:查詢。
U:修改。
D:刪除。
但真正開始把 MES 串起來之後,才會發現:
後面的生產流程,其實全部建立在這些看起來最普通的資料上。
基礎資料如果定義得不清楚,後面的工單會開始混亂。
工單混亂,Lot Control 就會跟著混亂。
Lot Control 一旦混亂,最後連 Lot History 都可能很難解釋。
所以我現在反而會把 Master Data 看成:
MES 用來描述工廠的共同語言。
先讓系統知道:
「我們有哪些東西。」
後面才有辦法告訴系統:
「這些東西要怎麼一起生產。」
下一篇,我們就先從這些基礎資料裡最基礎的開始:
「第一個功能為什麼我選擇從機台開始?」
看起來只是機台資料的設定,卻是所有資料的起點。