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