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