1 引言
企業制造執行系統(manufacturing execution system,MES)屬于生產過程與裝備信息化領域,是車間級(分廠級)管控系統,是連接執行層(作業設備、PCS)與管理層(ERP為代表)的橋梁。MES國際聯合會(MESA)定義:MES能通過信息傳遞對從訂單下達到產品完成的整個生產過程進行優化管理。具體包括資源分配和狀態管理、工序詳細調度、生產單元分配、文檔控制、數據采集、勞動力管理、質量管理、過程管理、維護管理、產品跟蹤管理、性能分析等11大基本功能以及運輸物流、優化仿真、能源管理、客戶訂單管理、預先計劃功能、數據倉庫、無線通信與可移動訪問等7大支持功能。依據企業生產實際需求不同,各企業開發功能模塊各不相同。
甘肅某企業屬于有色冶煉企業,公司致力于稀有金屬資源的開發和二次資源的再生利用2010年實現營業收入20億元,利潤1億元。2009年以前,生產管理自動化現狀:各生產車間雖然均已具備先進的PCS層控制系統,但各控制系統相互獨立,生產信息分散;電話調度模式,信息傳遞滯后,生產數據人工核算、抄表統計為主,執行效率質量較低。
企業生產規模的不斷擴大、經濟效益及行業地位的不斷提升,迫切需要采用兩化先進技術不斷提高勞動生產率,完善規范化扁平化管理,提升企業核心競爭實力。
2009年筆者所在團隊著手負責該企業MES整體規劃建設項目,該項目通過高速局域網絡實現各級生產管理部門對生產過程狀態信息的監控。建立生產指揮中心,通過對各車間生產設備生產過程數據的實時采集和歷史存儲,將使整個公司的生產管理部門能夠實時監控生產現狀,追溯生產歷史,并可通過Internet/Intranet方式實現企業生產的遠程監管。同時開發企業生產調度管理軟件。建立以生產運行管理為核心,以數據集成平臺為支撐,集物料信息管理,設備運行管理,生產運行管理和質量管理等為一體的生產執行系統(MES)。
2 設計要求
·系統功能滿足用戶實際需求。涵蓋系統管理數據、組織機構、用戶管理、物料數據、質量數據、金屬平衡數據、庫房數據、設備數據、生產過程數據、日志事件數據、產銷存數據、客戶關系數據、銷售數據等基礎數據及反映它們各自關系的相關數據。
·數據存取具備較高的安全性。存儲數據為企業核心業務數據,必須具備較高的安全存儲及災難恢復等級。
·較滿意的訪問速度。生產數據存儲量大,對數據庫性能有較高要求。必須從數據庫選型與技術手段多方面保證數據存取的訪問速度。
·適當的柔性。用戶需求只能隨系統運行逐步明確,后期變化可能性較大。同時考慮后期企業EMS、ERP、CRM等系統接入問題,系統應具備一定的柔性及可拓展能力,數據字典定義合理。
3 關鍵性問題及設計思路
依據項目實際情況,主體數據庫采用企業級Oracle9i關系數據庫系統,同時用戶管理采用基于SQLServer的MicroSoft MemberShip管理機制。系統采用原型開發模式,靈活應對變化。
數據庫柔性設計;數據操作CRUD及統計在數據庫內部完成,系統只負責存取;數據存取訪問速度;
1、數據安全性
①登陸賬號與業務數據分開,分別采用SQLServer和Oracle9i關系型數據庫。登錄系統采用基于MicroSoft Membership Provider的安全存儲機制。相關部分的數據庫設計參考MemberShip建議規范。
②系統采用B/S瘦客戶端三層架構,選用服務器端程序開發語言及工具,同時服務器端程序與數據庫系統分開存放在兩臺服務器上,隔離其他非系統使用訪問,用戶只能通過服務器端程序訪問數據庫。
③數據庫訪問SQL語句盡量不在網絡中傳輸,數據庫操作在數據庫內部完成(可封裝在PL/SQL程序中)。這樣數據庫的訪問,只是調用相應的存儲過程,提高了網絡安全性。
2、訪問速度保證
①CRUD、常用統計、分頁語句、視圖查詢等數據庫操作PL/SQL程序封裝,降低網絡傳輸量的同時,提高批處理執行能力。
②為耗時較多的大數據量計算編寫觸發器及相應PL/SQL程序,選擇服務器閑時自動統計的方式。這樣用戶調用時,就不用再耗費臨時計算的時間了。
③為報表數據建立臨時表,需要調用時,將相應數據先存至臨時表中,然后再統一發送至報表應用程序中。減少網絡交互數據量,提高用戶體驗。
④為Oracle數據庫配置4G以上內存,改善數據庫運行性能。
⑤在檢索數據時,多使用限制條件,明確查詢信息,提高命中率,改善存取性能。
3、適當的柔性
①數據庫模塊化設計,層次化,降低耦合性。每個功能做成單一模塊,模塊內緊耦合,模塊間松散耦合。適當的數據冗余,減少表之間過度的關聯性。
②基礎常量字段采用Sequence自增序列方式建表,便于自拓展。
③部分表存在需求不確定性,設計時適當預留數據位,方便以后增加新的功能。
④使用PowerDesigner、Toad、StarUML等快速建模工具,做好數據庫設計思想及建庫代碼的備份,同時定期備份數據庫數據,便于快速恢復及更新數據庫。
4 數據庫表結構設計
在明確設計思路及方法后,我們嚴格依據數據庫設計一般原則及項目特點,進行了數據庫的整體規范化設計。主要分為表結構及其關聯,視圖、存儲過程、觸發器等幾個主要方面。
涉及基礎物料的表有Tag(物料編號表)、Unit(物料單位表)、Section(物料階段表,原料、產品、中間料等)、Category(物料類別表)、State(物料狀態表)、Frequency(統計頻次表)、Statype(統計類型表)等。涉及化驗指標的表有Quatity(指標編碼表)、Q_unit(指標單位表)、Quacat(指標類別表)、Specifica(合格標準表)、Operator(操作符號表)等。其他關聯表還有Deptaginfo(部門車間物料信息表)、Deptagqua(部門車間指標信息表)、Quarecord(指標數據記錄表)、Tagrecord(物料數據記錄表)等。Deptaginfo表與Deptagqua表定義特定機構的物料及化驗指標數據字典,與基礎數據表存在多項關聯,方便減少冗余數據,保證數據唯一性。Tagrecord表與Quarecord表讀取操作頻繁,而且隨日積月累數據行數量較大,應盡量較少此類表查詢關聯,適當增加字段冗余。同時為常用查詢功能建立關聯視圖,提高訪問效率。
5 存儲過程設計
數據庫表空間的CRUD(創建、檢索、更新、刪除)操作,分頁操作,自動統計(年、月、日頻次。求和、求平均、最大、最小、方差、盤庫等方式)等操作,統一封裝在PL/SQL存儲過程中,這樣不需要在程序中傳遞SQL語句。客戶端調用時,只需要程序傳遞至Oracle數據庫相應的存儲過程名及運行參數信息,PL/SQL程序就會自動以批處理的執行速度進行數據庫操作,并將操作結果統一發送至應用程序。這樣,網絡交互次數及數據量大大減少,最大限度降低網絡傳輸冗余信息量。同時對于問題查找和后期維護都帶來方便。
僅以通過物料類別ID查找部門物料信息的PL/
這樣,應用程序傳遞給數據庫的參數就只有PL/SQL程序名及p_CAT_ID一個參數,數據庫處理后,就可以直接將查詢結果返回給應用程序。數據交互變得簡單和高效率。筆者在該項目中,共建立了400多個不同功能的PL/SQL存儲過程序。降低了持久化層應用程序與底層數據庫之間的耦合關系,使持久化層的編寫以及數據訪問、調用關系變得明了,簡單。其他PL/SQL程序類似,不在贅述。
6 觸發器設計(上圖、上代碼)
對于某些耗時較多的大數據量處理任務,各自采用具備針對性的技術手段。例如大數據量報表檢索交互處理采用臨時表空間的方式,而大數據量計算統計處理,在項目中采用設計觸發器程序,并設定服務器閑時自動執行計算的方式進行處理。這樣,客戶端訪問較為頻繁的時候,盡量使數據庫服務器資源僅供數據交互使用,降低服務器負載。而在基本無用戶訪問需求的時間段(比如凌晨),數據庫服務器在進行相應的自計算、自統計處理,合理高效利用服務器資源。
僅以庫房自動盤點程序為例,首先將相應分操作設計為不同的PL/SQL程序。例如DAILY_CLEAR STORE(V_DATE)負責進行每日庫存增量計算,MONTH_CLEAR_STORE(V_DATE,V_STARTDAY)負責進行每月庫存凈增量計算,MONTHTONOW_CLEAR_STORE(V_DATE,V_STARTDAY)負責進行月初至今庫增量計算,YART_CLEAR_CLEAR_STORE(V_DATE,V_STARTDAY),STORE_BALANCE(V_DATE,V_STARTDAY)負責將最終庫存盤點的結果寫會數據庫指定位置,供用戶調用。然后指定一段存儲過程統領這些PL/SQL程序段執行數據及參變量。
然后就可以設定觸發器JOB程序定時調用DailyJob存儲過程程序。
這樣,每日凌晨四點,觸發器便可以自行調用相應的存儲過程,在用戶早晨上班前,將需要處理的大量統計數據計算生成完畢,供用戶快速調用查看,從而滿足用戶對于較快人機交互體驗的需求。
7 實施效果
在該系統研發過程中,數據庫結構合理,各模塊分工明確,有較好的可拓展性,滿足了原型化開發過程中,用戶需求的易變性與系統開發的連續性、穩定性,收到較好效果。目前該項目已通過驗收,在數據安全性、系統穩定性、訪問速度等方面用戶使用效果良好,項目團隊正在就進一步的推廣應用總結經驗,以期更好的貼合用戶實際需求,最大限度滿足企業用戶的需求。
8 結束語
當今企業越來越多的意識到企業制造執行系統MES實施對于企業發展、扁平管理和效益提升的重要性與必要性。本文以實際MES項目為例,著重闡述了相關項目中關系數據庫設計的若干思路及解決辦法。存在較好的通用性和行業推廣價值,有著一定的實施借鑒意義。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/