胡桃英
(飛馬智科信息技術(shù)股份有限公司,安徽馬鞍山 243000)
隨著轉(zhuǎn)爐檢測(cè)技術(shù)的發(fā)展,生產(chǎn)現(xiàn)場(chǎng)一級(jí)冶煉信號(hào)越來越密集,對(duì)轉(zhuǎn)爐冶煉過程信息的獲取、傳輸與顯示能力要求越來越強(qiáng),傳統(tǒng)的通信機(jī)制已經(jīng)無法滿足現(xiàn)有的自動(dòng)化技術(shù)[1]。因此,選擇合適的數(shù)據(jù)通訊方式尤為重要。針對(duì)系統(tǒng)數(shù)據(jù)傳輸?shù)囊?guī)模性、實(shí)時(shí)性以及通訊的可靠性、安全性,采用了WCF技術(shù)作為煉鋼轉(zhuǎn)爐二級(jí)控制系統(tǒng)的通信方式,并驗(yàn)證了其可行性。
WCF(Windows Communication Foundation) 是由微軟開發(fā)的一系列應(yīng)用程序之間進(jìn)行數(shù)據(jù)通信的通用基礎(chǔ)結(jié)構(gòu),是開發(fā)和部署在Windows環(huán)境中運(yùn)行服務(wù)的開發(fā)工具和環(huán)境[2]。本系統(tǒng)是基于Win7操作系統(tǒng),開發(fā)平臺(tái)是Visual Studio2010。
WCF技術(shù)允許創(chuàng)建服務(wù),可以跨進(jìn)程、計(jì)算機(jī)和網(wǎng)絡(luò)從其他應(yīng)用程序訪問這些服務(wù)。由服務(wù)類(Service Class)、宿主(Host)和終端點(diǎn)(Endpoints)組成。其中Endpoints是WCF核心技術(shù)要素,WCF Service由一個(gè)Endpoints集合組成,每個(gè)Endpoints就是用于通信的入口,客戶端和服務(wù)器端通過Endpoints交換信息[3]。即通過配置和綁定,識(shí)別出要使用的服務(wù)和終端點(diǎn),知道要使用的綁定和依從的協(xié)議后,就可以與WCF服務(wù)進(jìn)行通信。
煉鋼轉(zhuǎn)爐二級(jí)控制系統(tǒng)根據(jù)一級(jí)冶煉信號(hào)自動(dòng)生成爐次號(hào),實(shí)時(shí)顯示冶煉過程,包括:鐵水,廢鋼加入量,槍位,氧流量,氧總量,底吹氬流量,各種散裝料的添加量,測(cè)溫和化驗(yàn)結(jié)果,模型計(jì)算的溫度和成分曲線等;顯示爐次處理的所有過程步驟以及時(shí)間;顯示冶煉歷史數(shù)據(jù)等。與多個(gè)模型系統(tǒng)進(jìn)行通信,為模型提供必要的實(shí)時(shí)和歷史數(shù)據(jù),并接受模型計(jì)算結(jié)果。
煉鋼轉(zhuǎn)爐二級(jí)控制系統(tǒng)數(shù)據(jù)采集來自于多個(gè)不同系統(tǒng),從基礎(chǔ)自動(dòng)化(一級(jí)冶煉)系統(tǒng)獲取生產(chǎn)事件(如開吹、測(cè)溫取樣、出鋼等),處理的過程信息(如槍位,氧流量,底吹氬流量等),物料消耗量(比如各類散裝量和氧總量),能源介質(zhì)消耗等;從MES(三級(jí)生產(chǎn)計(jì)劃)系統(tǒng)獲取生產(chǎn)計(jì)劃內(nèi)容等;從行車系統(tǒng)獲取鐵水包的包號(hào)(相應(yīng)的獲取了鐵水來源、成分和溫度),兌入量,兌鐵時(shí)間,廢鋼的編號(hào),出鋼量和鋼包號(hào);從脫硫系統(tǒng)獲取可用鐵水的包號(hào),來源,鐵水成分,溫度等;從檢化驗(yàn)系統(tǒng)獲取爐前快速化驗(yàn)結(jié)果和出鋼成分等。系統(tǒng)將采集的數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫,終端畫面訪問數(shù)據(jù)庫,并實(shí)時(shí)顯示冶煉過程和歷史冶煉數(shù)據(jù),實(shí)現(xiàn)生產(chǎn)現(xiàn)場(chǎng)數(shù)據(jù)采集與跟蹤功能。龐大的數(shù)據(jù)量勢(shì)必造成數(shù)據(jù)庫訪問和畫面功能荷載過大,頻繁的畫面操作和數(shù)據(jù)庫訪問很可能導(dǎo)致系統(tǒng)崩潰。為了保證系統(tǒng)的實(shí)時(shí)性、穩(wěn)定性、安全性和可靠性,放棄了傳統(tǒng)的通信機(jī)制,采用了跨平臺(tái)的分布式通信方式——WCF技術(shù)。WCF技術(shù)為我們提供了事件驅(qū)動(dòng)機(jī)制,當(dāng)數(shù)據(jù)發(fā)生變化時(shí),通過訂閱事件,消息通知客戶端去訪問數(shù)據(jù)庫、刷新畫面功能。
在數(shù)據(jù)量規(guī)模較小的情況下,一般通過設(shè)置定時(shí)器,每隔若干秒定時(shí)器觸發(fā)訪問數(shù)據(jù)庫,根據(jù)獲取的數(shù)據(jù)刷新畫面功能。該技術(shù)最大的優(yōu)點(diǎn)是實(shí)現(xiàn)起來非常方便,編程容易。但是本系統(tǒng)數(shù)據(jù)量龐大,無法保證系統(tǒng)的實(shí)時(shí)性和穩(wěn)定性。并且有些數(shù)據(jù),如:檢化驗(yàn)數(shù)據(jù),它的更新周期較長(zhǎng),一般為3~4 h。若每隔若干秒訪問數(shù)據(jù)庫,刷新界面,會(huì)無端加大數(shù)據(jù)庫的訪問荷載。
當(dāng)然,針對(duì)本系統(tǒng)出現(xiàn)的問題,我們通常采用的技術(shù)是DCOM。DCOM也是微軟創(chuàng)建的一種分布式通信機(jī)制,支持不同的兩臺(tái)計(jì)算機(jī)的組件間通信,也是采取服務(wù)器和客戶端通信接口訪問的方式。但是該技術(shù)早在2011年,微軟停止了對(duì)其進(jìn)行技術(shù)支持。
以開發(fā)環(huán)境VS2010為例,在新建項(xiàng)目中選擇“WCF”|“WCF服務(wù)庫”,會(huì)自動(dòng)生成一個(gè)WCF服務(wù)程序,客戶端通過“添加引用”的方式實(shí)現(xiàn)服務(wù)的調(diào)用。
4.1.1 創(chuàng)建服務(wù)端
通過在接口上應(yīng)用ServiceContractAttribute特性將一個(gè)接口定義為服務(wù)契約。定義服務(wù)契約主要是以接口的方法來實(shí)現(xiàn),通過抽象接口和實(shí)現(xiàn)服務(wù)進(jìn)行分離。以下是測(cè)試程序,修改接口文件名為MyIWcfService.cs,服務(wù)接口名為MyWcfService.cs。的接口代碼:
當(dāng)定義好了接口之后,便可以在服務(wù)頁面實(shí)現(xiàn)具體的接口功能。代碼如下:
WCF需要在宿主程序中寄宿,沒有辦法單獨(dú)存在。宿主程序是為消息請(qǐng)求監(jiān)聽、消息處理、服務(wù)激活等操作提供一個(gè)運(yùn)行環(huán)境。本系統(tǒng)WCF服務(wù)寄宿方式通過Windows服務(wù)部署。在部署服務(wù)之前需要配置相關(guān)參數(shù),即修改配置文件app.config。右擊app.config文件,選擇“編輯WCF配置”。主要配置三個(gè)要數(shù):地址、綁定和契約。配置好參數(shù)即可以部署服務(wù)。
4.1.2 創(chuàng)建客戶端調(diào)用WCF服務(wù)
編寫好客戶端程序之后,就可以調(diào)用WCF服務(wù)。本系統(tǒng)WCF服務(wù)只有一個(gè),可以通過“添加服務(wù)引用”的方式調(diào)用。調(diào)用地址:“net.tcp:// localhost:9988/WcfService/mex ”。如果服務(wù)部署在不同的計(jì)算機(jī)上,將“l(fā)ocalhost:9988”替換成對(duì)應(yīng)機(jī)器的IP地址即可。
4.2.1 系統(tǒng)功能介紹
各系統(tǒng)的數(shù)據(jù)接口(如一級(jí)冶煉系統(tǒng)、三級(jí)MES系統(tǒng)、行車系統(tǒng)、檢化驗(yàn)系統(tǒng)等)采集現(xiàn)場(chǎng)數(shù)據(jù)。當(dāng)數(shù)據(jù)發(fā)生變化時(shí),接口將數(shù)據(jù)存儲(chǔ)于數(shù)據(jù)庫服務(wù)器,同時(shí)將變化以消息的方式在WCF服務(wù)創(chuàng)建一個(gè)消息體。客戶端根據(jù)需要不同系統(tǒng)的數(shù)據(jù),向WCF服務(wù)訂閱不同的事件,WCF服務(wù)返回對(duì)應(yīng)的消息,即通知客戶端對(duì)應(yīng)系統(tǒng)數(shù)據(jù)是否發(fā)生變化,如果有變化,客戶端再去訪問數(shù)據(jù)庫,獲取最新的數(shù)據(jù)。本系統(tǒng)的主要結(jié)構(gòu)如下圖1所示。
圖1 系統(tǒng)結(jié)構(gòu)
4.2.2 監(jiān)控WCF服務(wù)
由于本系統(tǒng)應(yīng)用在傳統(tǒng)鋼鐵廠煉鋼區(qū)域,現(xiàn)場(chǎng)環(huán)境非常惡劣。為了進(jìn)一步提高系統(tǒng)的穩(wěn)定性和實(shí)時(shí)性,防止出現(xiàn)網(wǎng)絡(luò)掉線等異常通信中斷等情況。本系統(tǒng)開發(fā)了監(jiān)控WCF服務(wù)機(jī)制,利用心跳技術(shù)有效避免長(zhǎng)時(shí)間通信中斷,導(dǎo)致事件訂閱失敗現(xiàn)象。監(jiān)控程序中,設(shè)置定時(shí)器,每隔10秒掃描WCF服務(wù)的客戶端數(shù)量,掃描發(fā)現(xiàn)某個(gè)訂閱沒有收到,心跳計(jì)數(shù)加1。若心跳計(jì)數(shù)超過一定值,很有可能出現(xiàn)通信中斷事件,此時(shí)監(jiān)聽程序通知WCF重新啟動(dòng)訂閱事件,若回調(diào)成功,心跳計(jì)數(shù)重設(shè)置為0。
利用WCF技術(shù)為煉鋼轉(zhuǎn)爐二級(jí)控制系統(tǒng)提供了有效的解決方案,保證了系統(tǒng)的穩(wěn)定性、安全性和可靠性。目前,本系統(tǒng)在生產(chǎn)實(shí)踐中已經(jīng)驗(yàn)證了方案的可行性。