引言
上世紀90年代以來,信息技術(shù)不斷的發(fā)展和成熟,同時,在經(jīng)濟全球化趨勢不斷加強的背景下企業(yè)競爭的市場環(huán)境已經(jīng)發(fā)生了根本的變化,市場的主要特征表現(xiàn)為以顧客的需求和企業(yè)的需求創(chuàng)造為主要特征,市場競爭的要素涉及到了工控時間、質(zhì)量、價格、服務(wù)、環(huán)境和產(chǎn)品的更新率。為了提高企業(yè)的競爭能力,企業(yè)必須重視把制造技術(shù)與信息技術(shù)、自動化技術(shù)、現(xiàn)代管理技術(shù)和系統(tǒng)科學(xué)技術(shù)有機的融合在一起。
MES(Manufacturing Execution System)即“制造執(zhí)行系統(tǒng)”同企業(yè)資源計劃(ERP)一樣從理念發(fā)展到軟件平臺,是信息技術(shù)發(fā)展的必然產(chǎn)物。然而,目前在國內(nèi)許多企業(yè)尤其是工廠企業(yè)對MES的重視程度遠不及ERP,事實上在工廠型的企業(yè)里應(yīng)用MES不僅能夠迅速的提高該企業(yè)的市場競爭能力,同時也能迅速的為企業(yè)現(xiàn)有的信息網(wǎng)絡(luò)投資獲取回報。
1 MES的架構(gòu)設(shè)計
MES在整個企業(yè)的信息化系統(tǒng)中處于承上啟下的地位,是獲取生產(chǎn)實時信息的接口。如圖1所示

1.1 傳統(tǒng)的MES
在我國,現(xiàn)有的MES大都是針對某一特定領(lǐng)域或工作環(huán)境而設(shè)計的單一的應(yīng)用系統(tǒng),這種MES的通用性差,這種MES往往適用于連續(xù)型的生產(chǎn)企業(yè),且前提是該企業(yè)的生產(chǎn)管理非常完善,流水線生產(chǎn)程度極高,目前的實際情況是,我國大多數(shù)企業(yè),尤其是國企,很多都是非流水線的離散型生產(chǎn)企業(yè),因此這種MES并不適用于在我國的企業(yè)大范圍推廣,同時這種MES也不能適應(yīng)多變的市場需求。
1.2 我國MES的使用現(xiàn)狀
目前,國內(nèi)還沒有自主開發(fā)得很成熟的適用于多種生產(chǎn)類型的MES軟件。目前大多數(shù)MES都是針對連續(xù)型生產(chǎn)企業(yè)的,目前實施該類型MES比較成功的企業(yè)有廣州本田、TCL,NUFO中國、杭州士蘭集成電路公司。但是,由于我國大多數(shù)企業(yè)的管理并不完善,目前許多成功企業(yè)采用的MES都是從國外引進的,它們的價格昂貴。通常在一個企業(yè)實施MES少則幾百萬,多則甚至幾千萬,而且這些費用緊緊是MES的軟件部分。許多企業(yè)難以承受昂貴的MES開發(fā)費用,再者,國外的MES的開發(fā)對象是具有非常先進的制造技術(shù),和具有非常豐富的生產(chǎn)經(jīng)驗的企業(yè),并不一定都適用于國內(nèi)的企業(yè),在實施過程中通常會對策略進行修改,這又加長了實施周期。而如何降低MES的開發(fā)成本和增加MES的靈活性,使MES能夠適用于我國大部分生產(chǎn)方式相對落后的離散型制造企業(yè)是當前在國內(nèi)企業(yè)實施MES的當務(wù)之急。
1.3 服務(wù)程序支持的MES
服務(wù)程序支持的MES繼承了模塊化MES的優(yōu)點,并且以服務(wù)程序作為整個MES系統(tǒng)中的核心部分是溝通MES系統(tǒng)現(xiàn)場數(shù)據(jù)獲取、數(shù)據(jù)提交、數(shù)據(jù)整理、數(shù)據(jù)保存的橋梁,同時能夠完成生產(chǎn)計劃的制定、排序、下達(包括自動和手工)、暫停、恢復(fù)、插入、取消等,幾乎所有有關(guān)生產(chǎn)計劃執(zhí)行的操作都可以通過服務(wù)程序來完成。如圖2所示,可以看出在整個MES系統(tǒng)中,服務(wù)程序連接了下層的數(shù)據(jù)采集模塊和上層的管理模塊,并提供了與其他系統(tǒng)或設(shè)備的擴展接口,采取服務(wù)程序的架構(gòu),能夠連接產(chǎn)品在產(chǎn)過程 中所 經(jīng) 過的各個離散加工點,使得MES服務(wù)器成為各個離散加工點的加工信息處理中心。在企業(yè)內(nèi)部,為了保證系統(tǒng)的穩(wěn)定性、安全性以及降低開發(fā)成本,提高現(xiàn)有信息網(wǎng)絡(luò)的利用率,MES系統(tǒng)的上位設(shè)計宜采用C/S三層體系結(jié)構(gòu),這樣,服務(wù)程序又可以作為這種三層C/S結(jié)構(gòu)MES的中間層,并可以把部分業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問、合法性校驗等集成到服務(wù)程序中。
2 MES服務(wù)程序的具體設(shè)計
基于上述的MES的構(gòu)思,我們設(shè)計了一套服務(wù)程序支持的MES,其基本架構(gòu)如圖2所示。其中服務(wù)程序部分是該MES的核心部分其具體的設(shè)計及討論如下:

2.1 通信協(xié)議的設(shè)計
在本MES系統(tǒng)中,服務(wù)程序需要完成與下層通信模塊和上層管理模塊的通信,首先要考慮的必然是通信協(xié)議的選用,在計算機與計算機的網(wǎng)絡(luò)通訊中我們采用局域網(wǎng)中常用的TCP/IP協(xié)議,這一層協(xié)議的選用主要與MES系統(tǒng)建立的硬件網(wǎng)絡(luò)環(huán)境有關(guān)。除了網(wǎng)絡(luò)硬件層協(xié)議的選擇,在軟件層也需要設(shè)計一套請求應(yīng)答協(xié)議,許多軟件開發(fā)者認為程序在與不同的模塊間進行通信時應(yīng)該采用統(tǒng)一的請求應(yīng)答協(xié)議,并且將這些程序放在同一個程序文件中,雖然這種設(shè)計方式有利于減少程序的開發(fā)周期但是卻增加了軟件的后期維護難度,尤其在移植MES的部分模塊時甚至?xí)斐蓞f(xié)議混亂而導(dǎo)致移植失敗。因此,我們在設(shè)計MES的服務(wù)程序的請求應(yīng)答協(xié)議時把與不同模塊通信的協(xié)議及程序放在相互獨立的文件中以提高服務(wù)程序與其它MES模塊通信的效率以及這部分代碼的可讀性和可維護性。例如,與底層的通信模塊通信時可采用:CMDFlag +請求命令類型+CMDSplit+信息1+DataSplit+信息2+DataSplit+……+信息n+Data0ver其中CMDFIag為通信模塊向服務(wù)程序請求的命令類型起始分割符,MDSplit為請求命令類型的結(jié)束分割符同時表示請求命令中具體信息的開始,請求命令中的具體信息之間以DataSplit作為分割符,最后請求命令以Data0ver為結(jié)束符。
相應(yīng)的應(yīng)答協(xié)議或其它MES模塊與服務(wù)程序通信的請求應(yīng)答協(xié)議也可以仿照這種格式來制定,需要注意的是在具體的程序設(shè)計中要注意保持命令類型的唯一性,以避免系統(tǒng)在解釋命令類型時產(chǎn)生歧義,同時程序?qū)f(xié)議進行解釋時還必須具有一定的容錯能力。
2.2 服務(wù)程序的初始化設(shè)計
以服務(wù)程序為核心的MES要正常工作必須在運作前對服務(wù)程序進行初始化,服務(wù)程序的初始化包括與數(shù)據(jù)庫建立正確而穩(wěn)定可靠的連接、對最近的生產(chǎn)數(shù)據(jù)進行分析、最新生產(chǎn)參數(shù)的確定、更新待分配生產(chǎn)計劃隊列、更新日計劃隊列、更新材料隊列、更新操作工隊列、更新設(shè)備隊列、刷新數(shù)據(jù)庫等,其主要目的是在計算機內(nèi)存中設(shè)置生產(chǎn)過程中所涉及的各種要素,保持內(nèi)存數(shù)據(jù)與數(shù)據(jù)庫數(shù)據(jù)的同步從而正確而有效地指導(dǎo)生產(chǎn)。我們在設(shè)計程序時可以采用動態(tài)隊列以及類的概念來組織生產(chǎn)數(shù)據(jù),并且可以采用隊列嵌套以及指針的思想來提高數(shù)據(jù)的利用率。在設(shè)計隊列和類時必須包括服務(wù)程序所管瞎的各個生產(chǎn)要素,同時要理清各生產(chǎn)要素的關(guān)系,例如:設(shè)備隊列MachList由多個實例化的設(shè)備類Machltem?組成,而不同的設(shè)備可能能加工的工序集是不同的,這樣就要求每個實例化的設(shè)備類中要有一個能加工的工序集隊列Can-ProcList,這就需要用到隊列嵌套技術(shù)了。這些情況在實際的工廠生產(chǎn)中大量的存在。從程序的角度來看,服務(wù)程序初始化的實質(zhì)就是對各個隊列以及實例化的類賦予初值,為后繼生產(chǎn)創(chuàng)造基礎(chǔ)條件。
2.3 服務(wù)程序設(shè)計要點
工廠生產(chǎn)的連續(xù)性和合理性依賴于MES的正常運作,而MES的正常運作又依賴于服務(wù)程序的正常運行,提高服務(wù)程序的運行效率就是提高MES的運作效率,就是提高工廠的生產(chǎn)效率。服務(wù)程序承擔了包括生產(chǎn)計劃的排產(chǎn)、生產(chǎn)數(shù)據(jù)的保存以及質(zhì)量數(shù)據(jù)的處理等任務(wù),而處理這些任務(wù)時所涉及的數(shù)據(jù)量往往是很大的,因此,在程序設(shè)計時要提高內(nèi)存中數(shù)據(jù)的利用率和盡量減少程序?qū)Υ疟P的操作以及減少與數(shù)據(jù)庫服務(wù)器的數(shù)據(jù)交換。
1) 系統(tǒng)參數(shù)配置的獨立化:
許多程序的設(shè)計者直接將系統(tǒng)的配置放在程序當中,這樣做雖然提高了系統(tǒng)的集成度,也免去了用戶在使用系統(tǒng)前對系統(tǒng)進行配置,但這樣卻降低了系統(tǒng)的可移植性。服務(wù)程序為了提高服務(wù)程序的可移植性,將系統(tǒng)配置和參數(shù)設(shè)置獨立于程序之外而保存在ini文件中,當數(shù)據(jù)庫服務(wù)器被移植到其它地方或MES的其它模塊的配置發(fā)生變化時只需要修改ini文件即可,而不需要修改服務(wù)程序的源代碼,其中ini文件中的敏感配置,例如密碼、數(shù)據(jù)庫位置等完全可以通過各種加密措施來保證這些配置的安全。
2) 用好“池”的概念:
在實際的生產(chǎn)過程中,離散生產(chǎn)過程一般會存在以下實際問題使得某一工序的待加工計劃出現(xiàn)堆積現(xiàn)象:
1.同一個生產(chǎn)計劃在不同的工序階段所需要的工時是不可能相同的。
2.而不同的計劃在同一個工序中所消耗的工時也是不可能相同的。
3.不同計劃的工藝有可能不同但卻有交叉的工序。
以上三點是造成某一工序的待加工計劃出現(xiàn)堆積現(xiàn)象的主要原因,此外,一些例如:設(shè)備檢修、工人請假、停電、工人的熟練程度等也是造成堆積現(xiàn)象的原因。一般的工廠生產(chǎn)可以通過增加設(shè)備和增加工人的方法來解決,但問題是堆積現(xiàn)象的堆積度是不斷在變化的,需要增加的設(shè)備和工人的數(shù)量難以確定,因此服務(wù)程序中利用了‘他”的思想來解決這一問題。具體做法是為每一個工序設(shè)計一個待分配計劃工序隊列,隊列有兩個數(shù)據(jù)接口,輸人接口Input和輸出接口Output(以下Input指代輸人接口,Output指代輸出接口),而這個隊列就是所謂的‘他”這里可稱為“待分配計劃工序池”。輸入接口為上一工序,輸出接口為本工序。該隊列記錄的數(shù)據(jù)結(jié)構(gòu)至少包括計劃任務(wù)生產(chǎn)屬性、工序、優(yōu)先級,把上一工序完成的計劃任務(wù)按照工序從輸人接口Input放人到對應(yīng)的待分配計劃工序池中,可以通過該計劃任務(wù)所屬訂單的客戶重要程度、交貨期、批量的大小來計算出各個待分配計劃任務(wù)的優(yōu)先級。當本工序的某臺終端請求計劃時,服務(wù)程序就會在待分配計劃工序池中按待分配任務(wù)的優(yōu)先級和請求終端對應(yīng)設(shè)備的加工屬性通過輸出接口Output把待分配計劃下發(fā)給請求終端。并且可以動態(tài)的計算出每個待分配計劃工序池中的待分配計劃所需的總工時,這樣,有關(guān)人員就可以很容易地計算出需要如何安排設(shè)備和工人等生產(chǎn)資源。
3) 優(yōu)先級調(diào)度:
在流水線生產(chǎn)中,不同任務(wù)的產(chǎn)品在線內(nèi)的加工順序是按照計劃的投產(chǎn)先后順序來調(diào)度的,因而處理起來比較簡單,但在離散生產(chǎn)中,由于不同任務(wù)的加工品到達同一工序的時間和順序不完全取決于計劃的投產(chǎn)先后,還取決于計劃的生產(chǎn)工藝和相關(guān)的各種生產(chǎn)要素。這樣,在離散制造業(yè)中,服務(wù)程序設(shè)計的最大難點和重點在于生產(chǎn)計劃的自動排產(chǎn),即何時下發(fā)哪一個工序的待生產(chǎn)計劃給哪一個設(shè)備終端。生產(chǎn)計劃優(yōu)先級的計算并不太難實現(xiàn),根據(jù)事先給定的優(yōu)先級規(guī)則可以計算出來。但同一個優(yōu)先級若出現(xiàn)幾個待分配計劃時就需要計算解決計劃的選擇問題。
隨機服務(wù)(RS):即在幾個相同優(yōu)先級的待分配計劃中隨機的下發(fā)合適請求終端的待分配計劃。它的優(yōu)點是實現(xiàn)起來非常的容易,因此在許多場合被采用。但沒有利用請求終端對應(yīng)的設(shè)備的加工歷史,缺乏主觀控制接口。
先來先服務(wù)(FCFS):即在相同優(yōu)先級的待分配計劃中先處理最先加人到待分配計劃隊列中的待分配計劃。這種調(diào)度方式考慮了以前工序的因素,從某種程度上反映了該計劃任務(wù)的緊急程度,與RS算法相比具有更多的科學(xué)性,但也沒有考慮本工序的設(shè)備加工歷史,有可能增加了輔助時間。
服務(wù)程序的優(yōu)先級調(diào)度策略考慮了如何減少產(chǎn)品加工的輔助時間,在FCFS的基礎(chǔ)上加人了對本工序設(shè)備加工歷史因素的考慮,稱為優(yōu)化先來先服務(wù)(OFCFS)算法。該算法對待分配計劃工序隊列預(yù)掃描,預(yù)掃描計算出隊列中是否有與本工序最后一次加工相同的任務(wù),若沒有,則計算是否有與本工序最后一次加工參數(shù)相同或同一范圍內(nèi)的待分配計劃任務(wù),若沒有則繼續(xù)計算其它可以減少輔助時間的待分配計劃,若預(yù)掃描的某一過程計算出有合適的待分配計劃則立刻返回該待分配計劃并結(jié)束預(yù)掃描,若都沒有相關(guān)的待分配計劃再按照FCFS的算法來調(diào)度。這種算法雖然預(yù)掃描有可能會對待分配計劃進行多次掃描,但考慮到同一優(yōu)先級的待分配計劃通常情況下只是少數(shù)的幾條,預(yù)掃描所花費的時間可以忽略不計。
4) 同步修改內(nèi)存數(shù)據(jù)和數(shù)據(jù)庫數(shù)據(jù):
服務(wù)程序在設(shè)計時考慮了數(shù)據(jù)處理的平衡問題,比較合理地將數(shù)據(jù)操作分配到數(shù)據(jù)庫服務(wù)器和服務(wù)程序本身。即使這樣,也難以滿足工廠生產(chǎn)中處理大量實時生產(chǎn)數(shù)據(jù)的要求。任何系統(tǒng)都不可能立即同時對多個請求作出處理,但是系統(tǒng)必須在請求允許的等待時間內(nèi)作出回應(yīng),這就決定了服務(wù)程序不能頻繁的調(diào)用數(shù)據(jù)庫的數(shù)據(jù)來刷新內(nèi)存中的各生產(chǎn)要素隊列,一個解決的辦法就是在修改數(shù)據(jù)庫的同時立即修改內(nèi)存中相應(yīng)的值,這樣就避免了在某一時間大量的讀取數(shù)據(jù)庫數(shù)據(jù)同時又保證了服務(wù)程序運行數(shù)據(jù)的實時性,同時加人事務(wù)處理」以增加數(shù)據(jù)的安全性。
只要工廠的生產(chǎn)在進行,MES就必須不間斷地運作,只要MES在運作,服務(wù)程序就必須不間斷地運行,這意味著服務(wù)程序必須伴隨MES運作的始終,要保證工廠生產(chǎn)的連續(xù)性和正確性就要要求當生產(chǎn)數(shù)據(jù)出現(xiàn)錯誤時,服務(wù)程序仍然能夠下達正確的生產(chǎn)計劃指令。因此當生產(chǎn)過程中出現(xiàn)數(shù)據(jù)偏差時必須對錯誤的數(shù)據(jù)進行修正,服務(wù)程序提供了在線刷新和手工更正
3 運行情況
基于上述思想設(shè)計的服務(wù)程序支持的MES已被應(yīng)用到實際的離散型制造企業(yè)中,其中服務(wù)程序部分的相關(guān)設(shè)計信息和運行情況如下:
系統(tǒng)結(jié)構(gòu):三層Client/Serve;
開發(fā)工具:Windows 2000 Professional, Borland Delphi 6.0 Enterprise,Microsoft SQL 2000 Professional;
實施地點:廣東省肇慶市懷集縣懷集汽車配件制造有限公司;
運行環(huán)境:Windows 2000 Server;
以下是服務(wù)程序的運行性能數(shù)據(jù)統(tǒng)計:
表1對系統(tǒng)運行至2005年6月的綜合性能進行了統(tǒng)計,統(tǒng)計表明,這種服務(wù)程序支持的MES的可靠性極高,計劃誤發(fā)率低于0.001%,終端請求的響應(yīng)時間在正常情況下小于2秒,在峰值情況下小于4秒,而這樣的響應(yīng)時間完全能夠被大多的車間生產(chǎn)所接受。值得注意的是該MES的終端響應(yīng)時間90%是由于網(wǎng)絡(luò)通信而產(chǎn)生的。為了提高響應(yīng)時間可以從改善網(wǎng)絡(luò)方面人手,光纖網(wǎng)是目前最理想的通信網(wǎng)絡(luò),如果使用光纖作為通信網(wǎng)路,理論上響應(yīng)時間可以小于0.5秒。
4 結(jié)束語
本文形式地給出了支持MES的服務(wù)程序的設(shè)計方法,并且把這種系統(tǒng)應(yīng)用到了實際的生產(chǎn)中,測試也表明服務(wù)程序支持的MES與目前市場上的MES相比,同樣具有適應(yīng)性、靈活性、實時性、可靠性,同時也具有極高的計劃處理效率,這得益于服務(wù)程序可以獨立于MES的其它模塊,可以在專用的服務(wù)器運行,大大地減輕了系統(tǒng)運行的負擔,同時也使得這種MES系統(tǒng)更加安全,保證在模塊的升級過程中不會對其它模塊產(chǎn)生不良的影響。由于該MES可以充分利用企業(yè)現(xiàn)有的網(wǎng)絡(luò)設(shè)備,并且處于核心位置的服務(wù)程序是可以重復(fù)利用的,使得開發(fā)其它企業(yè)的MES時,大大地縮短了開發(fā)周期,有效地降低了開發(fā)和實施的費用。本文還統(tǒng)計了服務(wù)程序支持的MES的系統(tǒng)設(shè)計方案在廣東懷集汽車配件制造有限公司實施的情況,并且取得了良好的效果。