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