0 引言
在企業信息化建設過程中,ERP/MES/PCS三層架構已成為被廣泛接受的企業信息集成問題解決方案。MES提供從訂單投入到產品完成整個生產活動所需的優化信息,運用及時、準確的信息,指導、啟動、響應并記錄工廠活動,從而對條件作出迅速的響應,以減少非增值活動、提高工廠運作過程的效率。
可見MES是提高企業生產制造管理能力行之有效的重要手段。
筆者所在團隊承擔多項國家、省級重點項目建設中信息化、自動化方面的研發、建設任務。在有色企業MES建設過程中,發現用戶普遍對庫房的合理利用和綜合調配、產品的快速出庫、銷售的快速響應、庫存的及時盤點等庫房管理功能有著較高要求。
本文在充分研究了現有庫房管理技術手段及實現方法的基礎上,將PL/SQL過程語言應用到自動盤庫算法中,并通過實際應用驗證了該實現方法的可行性。
1 設計思路及采用技術
根據前期調研需求,本文著重通過以下幾個方面的設計保證庫房管理的先進性、實用性。
①粉體、線板帶類物料庫房,采用基于CODE128碼的無線條碼掃描技術管理原料、產品、中間料及返料的出、入庫信息。條碼信息包括庫房、庫位、名稱、規格、生產日期、質量、班次、質檢信息、供貨商、批號、數量、價格等。該信息便于庫房管理并可作為事故追溯依據,同時為上層MES及ERP應用系統提供自動、實時的數據采集支撐。
②粉體類庫房主要用于存放桶裝粉體,庫房內放置自動堆垛倉庫管理機器人臂,自動進行貨位分配輸送,同時自動采集存儲物品貨位信息。這為上層MES及ERP應用系統提供自動、實時的數據支撐。
③庫存盤點主要分為年、月、季等不同頻次的盤庫操作,同時要求能夠為用戶顯示當前實時庫存詳情?紤]到信息化技術手段、實際系統負載及用戶需求,采用基于.NET的B/S三層架構開發模式,將盤庫算法抽象成公式固定在Oracle數據庫內部的PL/SQL存儲過程中。大數據量計算通過設定觸發器在系統空閑時自動觸發執行,其他耗時較少的操作則主要由客戶端應用觸發執行。這樣既可以充分利用數據庫內部批處理執行能力的快速性以及SQL語句封裝的安全性優點,又可以充分保證一定的靈活性,與客戶端及時響應。
2 相關算法
條碼庫存管理體系的建立,使庫存管理流程變得更加清晰。物料入庫通過條形碼打印機打印該物料條碼信息標志(名稱、供應商、數量、質量、品位等);再通過條碼掃描器進行數據采集,檢驗后入庫;然后利用條碼手持終端機掃描庫位、物料條碼,建立物料與庫位的對應關系;最后更改相應庫存信息。產品出庫根據提示物料的庫位,利用手持終端掃描庫位與條碼,驗證無誤后進行出庫操作,同時將手持終端采集的數據上傳至服務器,以更新庫存記錄。
采用條碼庫存管理體系后,規范的物料出入庫流程如圖1所示。
圖1 物料出入庫流程示意圖
對于庫存盤點,通過調查分析,主要抽象成以下基本公式,具體如表1所示。
表1 自動盤庫基本公式
這樣,需要在Oracle數據庫中設定基本數據表,如表2所示。
表2 Oracle數據庫基本表
在基本表中,表列按照Sequence自增序列定義,數據存儲時,將它們作為屬性字段同時存入。其中,Frequency基表用于描述數據頻次序列值,如班、日、周、旬、月、季、年次數據等。Section基表用于描述物料類別序列值,如原料(投入、庫存)、產品(產出、庫存)、中間料(投入、產出、庫存)以及其他物料類別序列值(如金屬平衡量等)。StatisticsType基表用于描述數據所屬的統計屬性值,如庫存(入庫量、出庫量、庫存基量、凈庫存、階段庫存量)以及其他統計屬性值(如求和、平均、方差、平方、最大、最小、結存、付出等)。這些基本表數據字段均設計為Sequence自增序列屬性。因此,當后期系統升級、屬性拓展時,只需按照Oracle的Sequence序列增加即可,對之前已經設定的屬性值沒有任何影響。
考慮庫存物料量大、出入庫較頻繁、頻次較多的盤點操作耗時較長等特點,設計了Oracle.PL/SQL存儲過程,如表3所示。各存儲過程之間的關系如圖2所示。
表3 PL/SQL主要存儲過程
圖2 盤庫PL/SQL procedures關系示意圖
在特定生產數據存儲表中,通過Daily—Clear—Store檢索并自動計算出特定日期的日凈庫存完成量,并將其寫回數據庫中。Month—Clear—Store利用Daily—Clear—Store計算出的日凈庫存值,計算出某月月凈庫存數據,并將其寫回數據庫。MonthToNow—Store利用Daily—Clear—Store計算出的日凈庫存值,計算出月初至當月某日的凈庫存累積量,并將其寫回數據庫中。Year—Clear—Store、YearTo Now—Store等設計功能類似。最后Daily—Store—Balance依據上述各存儲過程提供的中間數據,計算出庫存盤點的實際數據,并將其寫回數據庫供前臺調用。
這樣,各存儲過程之間就會存在一定的順序性關聯,因此需要定義名為Daily_Job的PL/SQL程序,統領各存儲過程的執行順序。最后,通過定義Oracle數據庫的全局Job工作,就可以定時觸發Daily—Job程序,實現數據庫定時自動盤庫的工作任務。
3 實施效果
自系統投入運行以來,該企業的庫房管理達到了較高的自動化水平。庫存數據實時顯示在各級管理層用戶桌面系統中,使出入庫操作、貨位擺放、庫存信息、庫房盤點等操作都變得方便快捷。尤其是原來需手工統計的盤庫工作,當存儲數據量增大時,采用計算機實現也會耗費大量時間,影響用戶體驗;現在則由系統選擇每日訪問量最少的時刻(一般凌晨)自動計算生成。
在降低人力成本、提高數據準確性和及時性以及滿足用戶較好的交互體驗等方面,該方法均體現出明顯的優越性。
在該企業MES生產信息化項目建設過程中,通過庫房管理子系統的實施,一方面減輕了生產人員及調度人員的工作量,較大程度地提高了企業庫房管理效率;另一方面也為企業節約了管理費用、提高了服務質量,從而以信息化手段切實提高了企業的核心競爭實力。該系統多次受到用戶和各相關部門的好評。
5 結束語
如今的倉庫作業與庫存控制作業十分復雜多樣,傳統的靜態管理模式已無法保證企業資源的高效利用。本文以在某有色企業MES項目實踐過程中庫房管理系統的設計與實現為例,詳細闡述了庫房管理系統實現中的若干問題及實現方法。該設計思路在實際應用中收到較好的效果,具有一定的參考價值及推廣意義。
轉載請注明出處:拓步ERP資訊網http://www.guhuozai8.cn/