技術交流

結合 ciMes 面向物件,完成 MES 系統導入開發

王永正 王永正

工廠內負責維運的人員,不時會接到管理階層對於品質、效率及交期的要求,或是廠內生產之產品,客戶期望依循自訂的生產準則來執行;此時當原有的 MES 系統作業程序,或者操作介面無法達到上述需求時,就會透過聯繫工廠的資訊部門來進行 MES 系統功能改變,以滿足各方的期望!

而 MES 進行導入時,一樣需面對客戶對於系統效益的殷切期盼,ciMes 系統顧問能夠採用引導的方式,將廠內製造管理所遇到的真正困難與瓶頸詳實反映出來;當彼此都了解真正的需求之後,ciMes 開發顧問會根據需求面向進行系統分析。

  • 蒐集各製程中的作業對象,例如生產批號、作業機台、操作人員、使用物料等。
  • 定義製程中發生的 MES 事件,例如要進行上機、出站、換料、保養、加工資料收集等。
  • 確認這些事件衍生的需求,例如:
    1. 上機前檢查對應的機台加工圖檔是否到位?
    2. 出站良率不足,可能需記錄缺點、進行重工,並將出站資訊拋轉至 ERP 系統。
    3. 資料收集完畢後,項目值將異動批號的屬性,以方便即時查詢等。
  • 多方了解使用者對於作業介面上的需求,例如:上述異動後的屬性,最好能呈現在過帳的畫面上。
  • 分析各作業功能彼此之間的協調、勾稽等一致性。

在完成上述分析之後,系統設計人員將依循標準程序,落實系統功能開發作業:

對應作業對象清單與 ciMes 作業平台中的物件

  • 批號 → LotInfo Object
  • 機台 → EquipmentInfo Object
  • 人員 → UserInfo Object
  • 資料蒐集參數 → EDCParameterInfo Object
  • 機台參數 → RecipeInfo Object
  • 料號 → DeviceInfo Object

對應製程中的作業行為

  • 生產前需要檢查機台狀態,運用 ciMes 作業平台中系統函式來對應:if(CurrentEquip.CurrentState == EquipmentState.IDLE)(判定機台目前的狀態是否可生產。[狀態為 "IDLE"])透過 ciMes 提供的標準 MES 系統物件,充分了解當前的狀態。
  • 檢查過關後,批號轉換狀態為加工中(Run),運用 ciMes 作業平台中批號交易來對應:WipTransaction.CheckIn(LotInfo….)(將 LotInfo 物件中所記錄的生產批號,執行進站作業)透過 ciMes 內建的交易行為,所有生產對象都可以透過對應的交易函式庫來完成資料的紀錄。
  • 機台觸發 START 事件,運用ciMes作業平台中機台交易來對應:EMSTransaction.TriggerEvent(EquipInfo,Event("START"), LotInfo…)(記錄 EquipInfo 物件中的機台,開始生產 LotInfo 物件中的生產批號)透過設定,在事件發生之後,機台不僅狀態改變,連批號也被關聯在機台之上。因此就算是單純的交易行為,也可以透過系統設定,達成多個目標。

完成衍生的需求

MES 中所強調的生產作業行為,通常是一連串不可分割的交易行為,例如:批號的狀態變更,是與機台 "START" 的狀態變更同時發生的,也就是說當生產批號狀態由 "Wait" 變更為 "Run" 時,機台狀態也必須由 "IDLE" 變更為 "RUN"。若是其中的任何一個交易行為發生異常,則之前的交易也必須一律取消。

所以當上述一連串的作業發生當中,如何加入客戶期盼的衍生需求呢?不論是資料的檢查或是額外的紀錄。又如何在檢查發現異常時,終止並還原作業呢?

ciMes 提供交易區塊的程式寫作觀念,搭配 CimesTransactionScope 之運作,可以將需要同時完成的交易包裝為一個交易區塊,保證其完成的一致性。比起單純用資料庫交易的 Commit、Rollback 方式要來的容易及安全。

只要是在交易宣告的 CimesTransactionScope{ } 中,可加入所需的額外檢查,不論是檢查檔案系統,外部服務皆可,設計師可以交易區塊中適當的時機提出 Rollback 及 Commit 的請求。

而每一個 ciMes 內建的交易除了可以搭配上述交易區塊作業外,更貼心提供了交易前、交易後的事件觸發,提供程式設計師進行自訂邏輯嵌入功能,將 ciMes 的交易控制和彈性擴充到極致!

  • 批號進站作業(CheckIn)開始之前(Before Transaction),加入我們對於機台檔案的檢查。一旦不成立,毫不遲疑,終止交易!
  • 批號在工作站作業完成(EndOperation)之後(After Transaction),加入我們對於批號良率的計算;若是過低,則直接呼叫重工交易(Rework)。
  • 並且一併將相關資料寫入 ERP 資料交換表,或是呼叫 ERP 所提供的服務。
  • 批號工程資料收集(EDC Transaction)之後(After Transaction),取得資料蒐集的明細,並依定義去呼叫變更批號屬性(ModifyLotAttribute)交易,將重要資訊留在身上,直到完工。

對於使用者在操作介面上的要求

由於 ciMes 作業平台中所提供的工廠資訊物件(Factory Information Objects),可轉換為 JSON(JavaScript Object Notation;輕量級的資料交換語言)的格式,傳遞到網頁前端。因此不論是搭配前端工程風行的 MVC(Model-View-Controller)架構,如 AngularJS,或是透過傳統的 ASP.NET 網頁(WebForm)設計模式,搭配 jQuery,都是綽綽有餘。

考量到傳統網頁開發的方便性,ciMes 仍然提供使用者伺服器控制項物件 - ciMesUI,包含常用的複雜 UI 控制項,例如:Grid、Tab、MultiPanel,以及標準的 Button、DropDownList 等,讓使用者在前台 UI 的設計一致性及後台交易的寫作上,有更大的彈性。

系統開發本身是一門藝術,透過一個好的 MES 軟體架構,可以幫助 MES 專案成員在進行 MES 系統導入時,轉移關注的焦點;把系統分析的重心自動分散在以下四個面向上:

  • 作業的對象
  • 發生的事件
  • 衍生的行為
  • 畫面的呈現

後續不論專案時程的評估,人力資源的分派以及測試驗證的執行上,都可做更精確的控管。進而面對專案的殺手"需求變更",也能在一致的基礎上,衡量出成本與時程影響的大小。

MES 產品的選擇除了在適用性、功能上的考量之外,架構是否健全不可不慎。