0 引言
20世紀90年代初,工業界開始認識到需要一個可以將業務系統和控制系統集成在一起的中間層。同時,企業信息化建設的過程又是變革管理思想、改進管理模式、優化管理流程、提高員工素質的過程.是提升企業經營管理水平、縮小企業目標與資源能力之間缺口的有力手段。在基于ERP/MES/PCS的三層體系結構中,ERP完成從銷售訂單到生產訂單的轉化,而從生產訂單投入到產品完成的整個生產過程中生產訂單信息在各級系統中流動,經各級系統的不同處理,直到產品完成的整個訂單在制造執行階段的管理任務由MES實現”。MES介于ERP與底層控制和自動化系統之間,起著承上啟下的作用,是ERP系統數據基礎和保證。本文介紹的生產訂單管理系統是汽車發動機生產線制造執行系統(MEs)的一個子系統。該系統承擔MES所賦予的生產訂單管理業務,同時MES實現與ERP系統集成的關鍵,是MES正常運行的前提和基礎。
本系統運用Visual C#編程語言編寫,采用SQLserver 2008作為后臺數據庫。目前,本系統正在某汽車發動機生產線投入使用,運行穩定。
1 生產訂單管理系統結構
本系統主要由訂單信息導入,訂單信息下達,計劃調度,查看訂單狀態等部分組成。
訂單信息導入模塊是負責把sAP生成的生產訂單信息(包括發動機訂單計劃、發動機裝配指南、操作指導等信息)自動導入到sQL server 2008數據庫。通過訂單信息下達模塊把生產訂單信息自動下達到各個工控機的MES中。查看訂單信息模塊可以查詢和維護訂單信息并且可以查詢歷史訂單的執行狀況,如果發現訂單執行出現異常可以手動管理這些訂單信息。通過計劃調度調模塊調整生產訂單的執行順序。
根據現場的設備情況和要求,網絡結構采用圖1所示的結構。本信息系統服務器和SAP服務器放置在不同的地理位置,通過光纖進行連接。所有裝配線上的工控機通過100M以太網卡與交換機連接,與本信息系統服務器實時通訊。
圖1 系統結構
該企業信息系統中存在著異構數據庫。異構數據庫系統是指異構的多數據庫系統,即組成它的成員數據庫的硬件、系統軟件(如操作系統)不同,或成員數據庫具有不同數據庫管理系統(DBMS),例如該企業SAP系統的后臺Oracle數據庫與MES系統的后臺SQL Server2008數據庫。那么在進行系統之間的數據整合過程中,將不可避免的涉及到異構數據庫之間的無逢的數據訪問。因此在導人訂單信息之前先解決不同數據庫之間數據交互問題是實現整個系統的第一步。
在Oracle數據庫訪問SQL Server2008數據庫中需要利用Oracle中提供的透明網關技術。針對Oracle與其他異構平臺之間的數據訪問,Oracle通過異構服務實現對異種數據源的連接,根據代理程序的不同,分為透明網關和普通連接2種技術。普通連接是一種使用ODBC或者OLEDB驅動程序訪問任何ODBC或OLEDB兼容的非Oracle系統的通用解決方案。透明網關是一種為非Omcle系統特別編碼、量身定制的解決方案,它提供一種比普通連接擁有更多功能和更好性能的優化解決方案。普通連接依賴于業界標準,而透明網關使用它的本地接口訪問非Oracle系統。其關鍵配置如下:
(1)安裝Oracle中提供的透明網關組件。
(2)配置網關初始參數文件。
HS_FDS_CONNECT_INF0=”SERVER=10.10.135.6;
DATABASE=MES”
HS_FDS_TRACE_LEVEL=0FF
HS_FDS_RECOVERY_ACCOUNT=RECOVER
HS_FDS_RECOVERY_PWD=RECOVER
(3)為透明網關配置網絡監聽器。
(4)配置tnsname.ora配置文件。
CON=
(DESCRIPTI0N=
(ADDRESS_LIST=
(ADDRESS=(PROTOCOL=TCP)(HOST=10.10.135.11)(PORT=1521)))
(CONNECT_DATA=
(SID=SAP))
(HS=0K)
)
(5)建立數據庫連接。
Creat public database link MES connect to sa identifid by 126 using CON’
2 訂單信息自動導入模塊
2.1 SQL Server2008中的CLR集成技術
SQL Server2008引入了Microsoft Windows的.NET Framework的公共語言運行庫(CLR) Common LanguageRuntime組件的集成。CLR是Microsoft .NET Framework的核心,為所有. NET Fmmework代碼提供執行環境。這意味著可以使用任意.NET Fmmework語言編寫存儲過程、觸發器、用戶定義類型、用戶定義函數、用戶定義聚合函數以及流處理表值函數。
2.2 基于UDP協議的網絡通信技術
用戶數據報協議(UDP)是ISO參考模型中一種無連接的傳輸層協議,提供面向操作的簡單非可靠信息傳送服務。UDP協議在數據傳輸之前,通信雙方不需要建立連接,因此不需要維護連接狀態,UDP信息包的標題很短,只有8個字節,相對于TCP的建立連接并20個字節信息包的額外開銷很小,因此本系統采用UDP協議來實現通訊。C#中UDP的編程有兩種方式:直接使用Socket類和使用uDP類。UDPCIient類對基礎的Socket進行了封裝、發送和接受數據時不必考慮底層套接字收發時必須處理的一些細節問題,開發簡單、效率較高。因此本系統利用.NET中的UDP.Client類對UDP協議進行編程,實現網絡通訊。
2.3 自動導入訂單模塊設計與實現
建立SQL Server2008數據庫與Oracle數據庫之間的連接后,本系統會監測到Oracle數據庫中的新生成的訂單信息并把訂單信息自動導人到本系統的后臺SQL server2008數據庫中,訂單信息導人到本系統的SQL Server2008數據庫時,需要檢測該訂單在本系統數據庫中的合法性(包括訂單計劃是否已經存在,發動機號是否存在,工位號是否存在,裝配指南的訂單號是否有重號,發動機類型是否正確等),因此并沒有實際導人到實際表中,而存儲在數據庫所在的計算機內存中的臨時表里,此過程由數據庫來負責檢測。如果檢測成功數據庫把訂單信息導人到實際表中,同時把訂單導入成功結果反饋給Oracle數據庫。如果檢測失敗則把導人失敗信息反饋給Omcle數據庫以便于SAP計劃員根據此信息維護訂單信息。如圖2所示。
圖2 生產訂單流程圖
為了實現自動化,SQL Server2008數據庫成功導入訂單信息后,需要主動通知生產訂單管理系統。此功能通過SQL Senrer 2008中的CLR集成技術和基于UDP協議的網絡通信技術來實現的。主要步驟如下。
(1)編寫客戶端UDPclient通訊類并生成一個動態鏈接庫。主要代碼如下:
UdpClient myUdp=new UdpClient();
IPEndPoint iep=new IPEndPoint(IPAddress.Broadcast,41121);
Msg=System.Text.Encoding.UTF8.GetBytes(Message);
myUdp.Send(Msg,Msg.Length,iep);
myudp.Close();
(2)把通訊類生成為動態鏈接庫后,需要在SQLServer2008數據庫上注冊程序集。
(3)在數據庫SQL senrer2008中建立自定義函數準備調用程序集。代碼如下:
CREATE FUNCTION dbo.Func_SAPSend
(@Msg as nvarchar(20))
RETURNS nvarchar(20)AS EXTERNAL NAME SAPSend.[MYSAPCIient.MySAPsqlSend].[send]
(4)在數據庫SQL Senrer2008中定義觸發器來自動調用已經寫好的自定義函數,把通訊信號發送給訂單管理系統。
3 訂單信息自動下達模塊
訂單管理系統接收到SQL Server2008數據庫的導人成功信號后,自動把生產訂單信息通過UDP通信協議下達到各個工控機的MES中。各個工位的工控機接收訂單信息后,把收到信息結果寫入到數據庫中,以便管理員查出訂單下達的執行情況。
4 查詢訂單狀態模塊
系統在自動導入并下達訂單時,不可避免出現異常,導致自動訂單導人失敗、訂單下達失敗,因此需要管理員查詢訂單的執行狀態,并手動管理訂單信息。
4.1 查詢歷史生產訂單導入狀態信息
管理員可以查詢歷史生產訂單導入狀態,訂單導人狀態分別為導人成功,導人失敗,可以導入。導入成功:訂單信息成功導入到本系統的SQLServer2008數據庫。
導入失敗:訂單信息沒有成功導人到本系統得sQL Server2008數據庫。
可以導入:SAP系統根據本系統反饋的導入失敗信息,修改相應的錯誤信息后把導入狀態從導入失敗改成可以導入,本系統管理員根據此狀態手動導入。
單擊界面上的SAP導入按鈕把SAP中的訂單信息顯示在界面上。管理員查看訂單狀態,如果其中訂單狀態為【可以導入】,就說明此訂單可以從SAP系統的Oracle數據庫手動導人到本系統的后臺SQLSenrer2008數據庫中。
4.2 查詢歷史訂單下達信息
管理員根據訂單號查詢各個工位的訂單下達情況,該界面可以查詢哪個工位下達成功,哪個工位下達失敗。如果有下達失敗的工位,選擇要下達的訂單信息和工位號后單擊下達按鈕,把訂單信息重新下達到各個工控機中。下達過程中界面上實時顯示訂單下達狀態信息。訂單下達界面如圖3所示。
圖3 訂單下達界面
4.3 查詢和維護訂單信息
此外此模塊可以查詢和維護已經導人的訂單信息,包括訂單號、發動機號、裝配指南等信息。
5 計劃調度模塊
計劃調度模塊主要功能是通過時間和訂單下達狀態進行篩選訂單,選定訂單后調整生產訂單的執行順序。訂單下達狀態分別為未下達,已下達,已完成。未下達:表示生產訂單信息沒有下達到各個工控機當中。
已下達:表示生產訂單信息已經下達到各個工控機當中。
已完成:表示已經下達的訂單號正常完成生產。
當訂單狀態為未下達時這個訂單沒有下達到各個工控機只在本系統的數據庫中,因此只需調數據庫上的訂單順序即可,不需要計劃同步到各個工控機。當訂單狀態為已下達時這個訂單已經下達到各個工控機當中,因此調整完訂單順序后必須同步到各個工控機中。
此外此模塊可以工位訂單管理功能,工位訂單管理是對生產訂單中的每臺發動機生產順序進行管理。
6 結束語
生產訂單管理是制造業信息化的重要組成部分,是提升制造企業生產管理水平和制造效率的重要途徑。訂單管理系統使MES系統與SAP系統進行信息交互的功能,其運行狀況直接影響到兩個信息系統的集成和整體運行效果。盡管本文主要以汽車發動機生產線為背景,但是其內容對其他類型的制造業MES的生產訂單管理系統開發與應用也有一定的參考和借鑒作用。
轉載請注明出處:拓步ERP資訊網http://m.hanmeixuan.com/
本文網址:http://m.hanmeixuan.com/html/consultation/1082009530.html