支持MES系統(tǒng)的服務(wù)程序設(shè)計(jì)
引言 上世紀(jì)90年代以來(lái),信息技術(shù)不斷的發(fā)展和成熟,同時(shí),在經(jīng)濟(jì)全球化趨勢(shì)不斷加強(qiáng)的背景下企業(yè)競(jìng)爭(zhēng)的市場(chǎng)環(huán)境已經(jīng)發(fā)生了根本的變化,市場(chǎng)的主要特征表現(xiàn)為以顧客的需求和企業(yè)的需求創(chuàng)造為主要特征,市場(chǎng)競(jìng)爭(zhēng)的要素涉及到了工控時(shí)間、質(zhì)量、價(jià)格、服務(wù)、環(huán)境和產(chǎn)品的更新率。為了提高企業(yè)的競(jìng)爭(zhēng)能力,企業(yè)必須重視把制造技術(shù)與信息技術(shù)、自動(dòng)化技術(shù)、現(xiàn)代管理技術(shù)和系統(tǒng)科學(xué)技術(shù)有機(jī)的融合在一起。 MES(Manufacturing Execution System)即“制造執(zhí)行系統(tǒng)”同企業(yè)資源計(jì)劃(ERP)一樣從理念發(fā)展到軟件平臺(tái),是信息技術(shù)發(fā)展的必然產(chǎn)物。然而,目前在國(guó)內(nèi)許多企業(yè)尤其是工廠企業(yè)對(duì)MES的重視程度遠(yuǎn)不及ERP,事實(shí)上在工廠型的企業(yè)里應(yīng)用MES不僅能夠迅速的提高該企業(yè)的市場(chǎng)競(jìng)爭(zhēng)能力,同時(shí)也能迅速的為企業(yè)現(xiàn)有的信息網(wǎng)絡(luò)投資獲取回報(bào)。 1 MES的架構(gòu)設(shè)計(jì) MES在整個(gè)企業(yè)的信息化系統(tǒng)中處于承上啟下的地位,是獲取生產(chǎn)實(shí)時(shí)信息的接口。如圖1所示 1.1 傳統(tǒng)的MES 在我國(guó),現(xiàn)有的MES大都是針對(duì)某一特定領(lǐng)域或工作環(huán)境而設(shè)計(jì)的單一的應(yīng)用系統(tǒng),這種MES的通用性差,這種MES往往適用于連續(xù)型的生產(chǎn)企業(yè),且前提是該企業(yè)的生產(chǎn)管理非常完善,流水線生產(chǎn)程度極高,目前的實(shí)際情況是,我國(guó)大多數(shù)企業(yè),尤其是國(guó)企,很多都是非流水線的離散型生產(chǎn)企業(yè),因此這種MES并不適用于在我國(guó)的企業(yè)大范圍推廣,同時(shí)這種MES也不能適應(yīng)多變的市場(chǎng)需求。 1.2 我國(guó)MES的使用現(xiàn)狀 目前,國(guó)內(nèi)還沒(méi)有自主開(kāi)發(fā)得很成熟的適用于多種生產(chǎn)類型的MES軟件。目前大多數(shù)MES都是針對(duì)連續(xù)型生產(chǎn)企業(yè)的,目前實(shí)施該類型MES比較成功的企業(yè)有廣州本田、TCL,NUFO中國(guó)、杭州士蘭集成電路公司。但是,由于我國(guó)大多數(shù)企業(yè)的管理并不完善,目前許多成功企業(yè)采用的MES都是從國(guó)外引進(jìn)的,它們的價(jià)格昂貴。通常在一個(gè)企業(yè)實(shí)施MES少則幾百萬(wàn),多則甚至幾千萬(wàn),而且這些費(fèi)用緊緊是MES的軟件部分。許多企業(yè)難以承受昂貴的MES開(kāi)發(fā)費(fèi)用,再者,國(guó)外的MES的開(kāi)發(fā)對(duì)象是具有非常先進(jìn)的制造技術(shù),和具有非常豐富的生產(chǎn)經(jīng)驗(yàn)的企業(yè),并不一定都適用于國(guó)內(nèi)的企業(yè),在實(shí)施過(guò)程中通常會(huì)對(duì)策略進(jìn)行修改,這又加長(zhǎng)了實(shí)施周期。而如何降低MES的開(kāi)發(fā)成本和增加MES的靈活性,使MES能夠適用于我國(guó)大部分生產(chǎn)方式相對(duì)落后的離散型制造企業(yè)是當(dāng)前在國(guó)內(nèi)企業(yè)實(shí)施MES的當(dāng)務(wù)之急。 1.3 服務(wù)程序支持的MES 服務(wù)程序支持的MES繼承了模塊化MES的優(yōu)點(diǎn),并且以服務(wù)程序作為整個(gè)MES系統(tǒng)中的核心部分是溝通MES系統(tǒng)現(xiàn)場(chǎng)數(shù)據(jù)獲取、數(shù)據(jù)提交、數(shù)據(jù)整理、數(shù)據(jù)保存的橋梁,同時(shí)能夠完成生產(chǎn)計(jì)劃的制定、排序、下達(dá)(包括自動(dòng)和手工)、暫停、恢復(fù)、插入、取消等,幾乎所有有關(guān)生產(chǎn)計(jì)劃執(zhí)行的操作都可以通過(guò)服務(wù)程序來(lái)完成。如圖2所示,可以看出在整個(gè)MES系統(tǒng)中,服務(wù)程序連接了下層的數(shù)據(jù)采集模塊和上層的管理模塊,并提供了與其他系統(tǒng)或設(shè)備的擴(kuò)展接口,采取服務(wù)程序的架構(gòu),能夠連接產(chǎn)品在產(chǎn)過(guò)程 中所 經(jīng) 過(guò)的各個(gè)離散加工點(diǎn),使得MES服務(wù)器成為各個(gè)離散加工點(diǎn)的加工信息處理中心。在企業(yè)內(nèi)部,為了保證系統(tǒng)的穩(wěn)定性、安全性以及降低開(kāi)發(fā)成本,提高現(xiàn)有信息網(wǎng)絡(luò)的利用率,MES系統(tǒng)的上位設(shè)計(jì)宜采用C/S三層體系結(jié)構(gòu),這樣,服務(wù)程序又可以作為這種三層C/S結(jié)構(gòu)MES的中間層,并可以把部分業(yè)務(wù)規(guī)則、數(shù)據(jù)訪問(wèn)、合法性校驗(yàn)等集成到服務(wù)程序中。 2 MES服務(wù)程序的具體設(shè)計(jì) 基于上述的MES的構(gòu)思,我們?cè)O(shè)計(jì)了一套服務(wù)程序支持的MES。其中服務(wù)程序部分是該MES的核心部分其具體的設(shè)計(jì)及討論 2.1 通信協(xié)議的設(shè)計(jì) 在本MES系統(tǒng)中,服務(wù)程序需要完成與下層通信模塊和上層管理模塊的通信,首先要考慮的必然是通信協(xié)議的選用,在計(jì)算機(jī)與計(jì)算機(jī)的網(wǎng)絡(luò)通訊中我們采用局域網(wǎng)中常用的TCP/IP協(xié)議,這一層協(xié)議的選用主要與MES系統(tǒng)建立的硬件網(wǎng)絡(luò)環(huán)境有關(guān)。除了網(wǎng)絡(luò)硬件層協(xié)議的選擇,在軟件層也需要設(shè)計(jì)一套請(qǐng)求應(yīng)答協(xié)議,許多軟件開(kāi)發(fā)者認(rèn)為程序在與不同的模塊間進(jìn)行通信時(shí)應(yīng)該采用統(tǒng)一的請(qǐng)求應(yīng)答協(xié)議,并且將這些程序放在同一個(gè)程序文件中,雖然這種設(shè)計(jì)方式有利于減少程序的開(kāi)發(fā)周期但是卻增加了軟件的后期維護(hù)難度,尤其在移植MES的部分模塊時(shí)甚至?xí)斐蓞f(xié)議混亂而導(dǎo)致移植失敗。因此,我們?cè)谠O(shè)計(jì)MES的服務(wù)程序的請(qǐng)求應(yīng)答協(xié)議時(shí)把與不同模塊通信的協(xié)議及程序放在相互獨(dú)立的文件中以提高服務(wù)程序與其它MES模塊通信的效率以及這部分代碼的可讀性和可維護(hù)性。例如,與底層的通信模塊通信時(shí)可采用:CMDFlag +請(qǐng)求命令類型+CMDSplit+信息1+DataSplit+信息2+DataSplit+……+信息n+Data0ver其中CMDFIag為通信模塊向服務(wù)程序請(qǐng)求的命令類型起始分割符,MDSplit為請(qǐng)求命令類型的結(jié)束分割符同時(shí)表示請(qǐng)求命令中具體信息的開(kāi)始,請(qǐng)求命令中的具體信息之間以DataSplit作為分割符,最后請(qǐng)求命令以Data0ver為結(jié)束符。 相應(yīng)的應(yīng)答協(xié)議或其它MES模塊與服務(wù)程序通信的請(qǐng)求應(yīng)答協(xié)議也可以仿照這種格式來(lái)制定,需要注意的是在具體的程序設(shè)計(jì)中要注意保持命令類型的唯一性,以避免系統(tǒng)在解釋命令類型時(shí)產(chǎn)生歧義,同時(shí)程序?qū)f(xié)議進(jìn)行解釋時(shí)還必須具有一定的容錯(cuò)能力。 2.2 服務(wù)程序的初始化設(shè)計(jì) 以服務(wù)程序?yàn)楹诵牡腗ES要正常工作必須在運(yùn)作前對(duì)服務(wù)程序進(jìn)行初始化,服務(wù)程序的初始化包括與數(shù)據(jù)庫(kù)建立正確而穩(wěn)定可靠的連接、對(duì)最近的生產(chǎn)數(shù)據(jù)進(jìn)行分析、最新生產(chǎn)參數(shù)的確定、更新待分配生產(chǎn)計(jì)劃隊(duì)列、更新日計(jì)劃隊(duì)列、更新材料隊(duì)列、更新操作工隊(duì)列、更新設(shè)備隊(duì)列、刷新數(shù)據(jù)庫(kù)等,其主要目的是在計(jì)算機(jī)內(nèi)存中設(shè)置生產(chǎn)過(guò)程中所涉及的各種要素,保持內(nèi)存數(shù)據(jù)與數(shù)據(jù)庫(kù)數(shù)據(jù)的同步從而正確而有效地指導(dǎo)生產(chǎn)。我們?cè)谠O(shè)計(jì)程序時(shí)可以采用動(dòng)態(tài)隊(duì)列以及類的概念來(lái)組織生產(chǎn)數(shù)據(jù),并且可以采用隊(duì)列嵌套以及指針的思想來(lái)提高數(shù)據(jù)的利用率。在設(shè)計(jì)隊(duì)列和類時(shí)必須包括服務(wù)程序所管瞎的各個(gè)生產(chǎn)要素,同時(shí)要理清各生產(chǎn)要素的關(guān)系,例如:設(shè)備隊(duì)列MachList由多個(gè)實(shí)例化的設(shè)備類Machltem?組成,而不同的設(shè)備可能能加工的工序集是不同的,這樣就要求每個(gè)實(shí)例化的設(shè)備類中要有一個(gè)能加工的工序集隊(duì)列Can-ProcList,這就需要用到隊(duì)列嵌套技術(shù)了。這些情況在實(shí)際的工廠生產(chǎn)中大量的存在。從程序的角度來(lái)看,服務(wù)程序初始化的實(shí)質(zhì)就是對(duì)各個(gè)隊(duì)列以及實(shí)例化的類賦予初值,為后繼生產(chǎn)創(chuàng)造基礎(chǔ)條件。 2.3 服務(wù)程序設(shè)計(jì)要點(diǎn) 工廠生產(chǎn)的連續(xù)性和合理性依賴于MES的正常運(yùn)作,而MES的正常運(yùn)作又依賴于服務(wù)程序的正常運(yùn)行,提高服務(wù)程序的運(yùn)行效率就是提高M(jìn)ES的運(yùn)作效率,就是提高工廠的生產(chǎn)效率。服務(wù)程序承擔(dān)了包括生產(chǎn)計(jì)劃的排產(chǎn)、生產(chǎn)數(shù)據(jù)的保存以及質(zhì)量數(shù)據(jù)的處理等任務(wù),而處理這些任務(wù)時(shí)所涉及的數(shù)據(jù)量往往是很大的,因此,在程序設(shè)計(jì)時(shí)要提高內(nèi)存中數(shù)據(jù)的利用率和盡量減少程序?qū)Υ疟P(pán)的操作以及減少與數(shù)據(jù)庫(kù)服務(wù)器的數(shù)據(jù)交換。 1) 系統(tǒng)參數(shù)配置的獨(dú)立化: 許多程序的設(shè)計(jì)者直接將系統(tǒng)的配置放在程序當(dāng)中,這樣做雖然提高了系統(tǒng)的集成度,也免去了用戶在使用系統(tǒng)前對(duì)系統(tǒng)進(jìn)行配置,但這樣卻降低了系統(tǒng)的可移植性。服務(wù)程序?yàn)榱颂岣叻?wù)程序的可移植性,將系統(tǒng)配置和參數(shù)設(shè)置獨(dú)立于程序之外而保存在ini文件中,當(dāng)數(shù)據(jù)庫(kù)服務(wù)器被移植到其它地方或MES的其它模塊的配置發(fā)生變化時(shí)只需要修改ini文件即可,而不需要修改服務(wù)程序的源代碼,其中ini文件中的敏感配置,例如密碼、數(shù)據(jù)庫(kù)位置等完全可以通過(guò)各種加密措施來(lái)保證這些配置的安全。 2) 用好“池”的概念: 在實(shí)際的生產(chǎn)過(guò)程中,離散生產(chǎn)過(guò)程一般會(huì)存在以下實(shí)際問(wèn)題使得某一工序的待加工計(jì)劃出現(xiàn)堆積現(xiàn)象: 1.同一個(gè)生產(chǎn)計(jì)劃在不同的工序階段所需要的工時(shí)是不可能相同的。 2.而不同的計(jì)劃在同一個(gè)工序中所消耗的工時(shí)也是不可能相同的。 3.不同計(jì)劃的工藝有可能不同但卻有交叉的工序。 以上三點(diǎn)是造成某一工序的待加工計(jì)劃出現(xiàn)堆積現(xiàn)象的主要原因,此外,一些例如:設(shè)備檢修、工人請(qǐng)假、停電、工人的熟練程度等也是造成堆積現(xiàn)象的原因。一般的工廠生產(chǎn)可以通過(guò)增加設(shè)備和增加工人的方法來(lái)解決,但問(wèn)題是堆積現(xiàn)象的堆積度是不斷在變化的,需要增加的設(shè)備和工人的數(shù)量難以確定,因此服務(wù)程序中利用了‘他”的思想來(lái)解決這一問(wèn)題。具體做法是為每一個(gè)工序設(shè)計(jì)一個(gè)待分配計(jì)劃工序隊(duì)列,隊(duì)列有兩個(gè)數(shù)據(jù)接口,輸人接口Input和輸出接口Output(以下Input指代輸人接口,Output指代輸出接口),而這個(gè)隊(duì)列就是所謂的‘他”這里可稱為“待分配計(jì)劃工序池”。輸入接口為上一工序,輸出接口為本工序。該隊(duì)列記錄的數(shù)據(jù)結(jié)構(gòu)至少包括計(jì)劃任務(wù)生產(chǎn)屬性、工序、優(yōu)先級(jí),把上一工序完成的計(jì)劃任務(wù)按照工序從輸人接口Input放人到對(duì)應(yīng)的待分配計(jì)劃工序池中,可以通過(guò)該計(jì)劃任務(wù)所屬訂單的客戶重要程度、交貨期、批量的大小來(lái)計(jì)算出各個(gè)待分配計(jì)劃任務(wù)的優(yōu)先級(jí)。當(dāng)本工序的某臺(tái)終端請(qǐng)求計(jì)劃時(shí),服務(wù)程序就會(huì)在待分配計(jì)劃工序池中按待分配任務(wù)的優(yōu)先級(jí)和請(qǐng)求終端對(duì)應(yīng)設(shè)備的加工屬性通過(guò)輸出接口Output把待分配計(jì)劃下發(fā)給請(qǐng)求終端。并且可以動(dòng)態(tài)的計(jì)算出每個(gè)待分配計(jì)劃工序池中的待分配計(jì)劃所需的總工時(shí),這樣,有關(guān)人員就可以很容易地計(jì)算出需要如何安排設(shè)備和工人等生產(chǎn)資源。 3) 優(yōu)先級(jí)調(diào)度: 在流水線生產(chǎn)中,不同任務(wù)的產(chǎn)品在線內(nèi)的加工順序是按照計(jì)劃的投產(chǎn)先后順序來(lái)調(diào)度的,因而處理起來(lái)比較簡(jiǎn)單,但在離散生產(chǎn)中,由于不同任務(wù)的加工品到達(dá)同一工序的時(shí)間和順序不完全取決于計(jì)劃的投產(chǎn)先后,還取決于計(jì)劃的生產(chǎn)工藝和相關(guān)的各種生產(chǎn)要素。這樣,在離散制造業(yè)中,服務(wù)程序設(shè)計(jì)的******難點(diǎn)和重點(diǎn)在于生產(chǎn)計(jì)劃的自動(dòng)排產(chǎn),即何時(shí)下發(fā)哪一個(gè)工序的待生產(chǎn)計(jì)劃給哪一個(gè)設(shè)備終端。生產(chǎn)計(jì)劃優(yōu)先級(jí)的計(jì)算并不太難實(shí)現(xiàn),根據(jù)事先給定的優(yōu)先級(jí)規(guī)則可以計(jì)算出來(lái)。但同一個(gè)優(yōu)先級(jí)若出現(xiàn)幾個(gè)待分配計(jì)劃時(shí)就需要計(jì)算解決計(jì)劃的選擇問(wèn)題。 隨機(jī)服務(wù)(RS):即在幾個(gè)相同優(yōu)先級(jí)的待分配計(jì)劃中隨機(jī)的下發(fā)合適請(qǐng)求終端的待分配計(jì)劃。它的優(yōu)點(diǎn)是實(shí)現(xiàn)起來(lái)非常的容易,因此在許多場(chǎng)合被采用。但沒(méi)有利用請(qǐng)求終端對(duì)應(yīng)的設(shè)備的加工歷史,缺乏主觀控 |