董 超,張曉偉,李 超
(天津理工大學(xué) 天津市復(fù)雜系統(tǒng)控制理論及應(yīng)用重點(diǎn)實(shí)驗(yàn)室,天津 300384)
工業(yè)循環(huán)水在石油化工等企業(yè)的生產(chǎn)過(guò)程中起著舉足輕重的作用,它的運(yùn)行狀態(tài)的好壞關(guān)系到生產(chǎn)設(shè)備的安全和產(chǎn)品的生產(chǎn)質(zhì)量及效率。然而,循環(huán)水通過(guò)反復(fù)使用后,會(huì)產(chǎn)生一系列的問(wèn)題,例如水中產(chǎn)生的一些微生物、沉淀物淤積在管道壁上、管道和設(shè)備腐蝕等。因此,為了使工業(yè)循環(huán)水水質(zhì)保持良好的運(yùn)行狀態(tài),需要遵循一定的技術(shù)要求,向循環(huán)水中投加相關(guān)的化學(xué)藥劑[1]。近年來(lái),隨著科學(xué)技術(shù)的發(fā)展,一些水處理公司研發(fā)了循環(huán)水自動(dòng)加藥裝置,目的是檢測(cè)PH、濁度、總磷、堿度等水質(zhì)指標(biāo),然后根據(jù)這些指標(biāo)數(shù)據(jù)投加化學(xué)藥劑,達(dá)到改善工業(yè)循環(huán)水水質(zhì)質(zhì)量的效果。與此同時(shí),工業(yè)循環(huán)水水質(zhì)指標(biāo)數(shù)據(jù)對(duì)石化企業(yè)生產(chǎn)具有舉足輕重的作用,通過(guò)對(duì)水質(zhì)指標(biāo)數(shù)據(jù)的綜合分析,監(jiān)控人員可以充分地掌握循環(huán)水的運(yùn)行狀態(tài),從而指導(dǎo)石化企業(yè)生產(chǎn)的正常運(yùn)行。
目前,石化企業(yè)主要采用基于C/S架構(gòu)的監(jiān)測(cè)系統(tǒng)對(duì)自動(dòng)加藥裝置檢測(cè)的水質(zhì)數(shù)據(jù)進(jìn)行監(jiān)測(cè)。其大致工作過(guò)程是:自動(dòng)加藥裝置將采集的水質(zhì)數(shù)據(jù)傳至現(xiàn)場(chǎng)數(shù)據(jù)采集箱,然后由現(xiàn)場(chǎng)數(shù)據(jù)采集箱通過(guò)企業(yè)內(nèi)部的工業(yè)以太網(wǎng)傳給后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,服務(wù)器端軟件對(duì)水質(zhì)數(shù)據(jù)進(jìn)行處理和保存,監(jiān)控中心的工作人員通過(guò)客戶(hù)端軟件連接至后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器,從而實(shí)現(xiàn)對(duì)循環(huán)水水質(zhì)數(shù)據(jù)的監(jiān)測(cè)。該監(jiān)測(cè)模式的優(yōu)點(diǎn)是客戶(hù)端的處理能力強(qiáng),系統(tǒng)響應(yīng)時(shí)間較短,實(shí)時(shí)性好。但是監(jiān)測(cè)終端需要安裝專(zhuān)門(mén)的客戶(hù)端軟件,隨著公司業(yè)務(wù)的變更,所有客戶(hù)端的監(jiān)測(cè)軟件都需要更新和升級(jí),不僅其升級(jí)和維護(hù)成本較高,而且不方便,難以滿(mǎn)足企業(yè)級(jí)應(yīng)用軟件需求[2]。
對(duì)此,文中提出一種基于B/S架構(gòu)的石化自動(dòng)加藥監(jiān)測(cè)系統(tǒng)。首先簡(jiǎn)要介紹了系統(tǒng)的總體結(jié)構(gòu),然后分別對(duì)監(jiān)測(cè)系統(tǒng)軟件架構(gòu)以及數(shù)據(jù)庫(kù)服務(wù)端程序和Web服務(wù)器程序進(jìn)行了重點(diǎn)設(shè)計(jì),實(shí)現(xiàn)了對(duì)石化企業(yè)水處理車(chē)間自動(dòng)加藥裝置檢測(cè)數(shù)據(jù)的監(jiān)測(cè)需求。該系統(tǒng)的優(yōu)越性表現(xiàn)在:客戶(hù)端軟件是瀏覽器,不需要安裝專(zhuān)門(mén)的監(jiān)測(cè)軟件;具有良好的開(kāi)放性,工作人員可在工業(yè)以太網(wǎng)覆蓋的任何地點(diǎn)通過(guò)客戶(hù)端瀏覽器對(duì)系統(tǒng)進(jìn)行訪問(wèn);系統(tǒng)維護(hù)和升級(jí)經(jīng)濟(jì)、便捷,軟件升級(jí)時(shí)僅需要對(duì)后臺(tái)服務(wù)器程序進(jìn)行更新,而無(wú)需更新所有的客戶(hù)端軟件。
以某石化企業(yè)水處理車(chē)間的循環(huán)水水質(zhì)監(jiān)測(cè)項(xiàng)目為例,自動(dòng)加藥監(jiān)測(cè)系統(tǒng)總體結(jié)構(gòu)如圖1所示。
圖1 自動(dòng)加藥監(jiān)測(cè)系統(tǒng)總體結(jié)構(gòu)
整個(gè)監(jiān)測(cè)系統(tǒng)由兩部分組成。第一部分由水處理車(chē)間的循環(huán)水自動(dòng)加藥裝置和數(shù)據(jù)采集箱組成。循環(huán)水自動(dòng)加藥裝置的組成部分包括西門(mén)子S7-300、傳感器、計(jì)量泵以及檢測(cè)儀表等組件,西門(mén)子PLC是自動(dòng)加藥裝置中的核心部分,主要作用是采集傳感器和檢測(cè)儀表中的循環(huán)水水質(zhì)指標(biāo)數(shù)據(jù),并通過(guò)Modbus通信協(xié)議將水質(zhì)數(shù)據(jù)傳輸至現(xiàn)場(chǎng)的數(shù)據(jù)采集箱。監(jiān)控中心的數(shù)據(jù)庫(kù)服務(wù)器端軟件采用TCP/IP協(xié)議,通過(guò)石化企業(yè)內(nèi)部的工業(yè)以太網(wǎng)采集現(xiàn)場(chǎng)數(shù)據(jù)采集箱中的循環(huán)水水質(zhì)數(shù)據(jù)。第二部分由數(shù)據(jù)庫(kù)服務(wù)器、Web服務(wù)器和監(jiān)測(cè)終端組成。監(jiān)控中心的工作人員在客戶(hù)端瀏覽器上輸入循環(huán)水自動(dòng)加藥監(jiān)測(cè)系統(tǒng)網(wǎng)址,登錄系統(tǒng)后向Web服務(wù)器發(fā)出查詢(xún)請(qǐng)求,Web服務(wù)器通過(guò)Ajax技術(shù)和ADO.NET技術(shù)與后臺(tái)數(shù)據(jù)庫(kù)進(jìn)行交互,并將結(jié)果發(fā)送到瀏覽器軟件,以網(wǎng)頁(yè)形式顯示,從而實(shí)現(xiàn)了對(duì)自動(dòng)加藥裝置檢測(cè)數(shù)據(jù)的實(shí)時(shí)監(jiān)測(cè)、曲線走勢(shì)分析、雷達(dá)圖分析、歷史數(shù)據(jù)查詢(xún)和報(bào)警提醒等功能。
循環(huán)水自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件采用B/S體系結(jié)構(gòu),主要包括表示層、功能層和數(shù)據(jù)層,如圖2所示。
(1)表示層:Web瀏覽器。該層涵蓋了循環(huán)水自動(dòng)加藥監(jiān)測(cè)系統(tǒng)的顯示邏輯功能,將以往的多種界面并存的狀況改變?yōu)橐环N界面形式。其主要功能是向石化企業(yè)局域網(wǎng)上的Web服務(wù)器發(fā)出訪問(wèn)要求,Web服務(wù)器根據(jù)請(qǐng)求信息將所查詢(xún)的內(nèi)容通過(guò)HTTP協(xié)議發(fā)送給監(jiān)測(cè)終端的瀏覽器,并進(jìn)行顯示[3]。
(2)功能層:Web服務(wù)器。該層是整個(gè)系統(tǒng)軟件中任務(wù)最繁重的一部分,涵蓋了自動(dòng)加藥監(jiān)測(cè)系統(tǒng)的所有事務(wù)處理邏輯。其主要作用是接受PC端Web瀏覽器的查詢(xún)請(qǐng)求,并通過(guò)數(shù)據(jù)庫(kù)技術(shù)和Web前端技術(shù)與系統(tǒng)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行數(shù)據(jù)交互,把數(shù)據(jù)庫(kù)服務(wù)器返回的結(jié)果發(fā)送到前端瀏覽器[4]。
圖2 B/S模式三層架構(gòu)
(3)數(shù)據(jù)層:數(shù)據(jù)庫(kù)服務(wù)器。該層包含了自動(dòng)加藥監(jiān)測(cè)系統(tǒng)的數(shù)據(jù)處理邏輯。其主要功能是接收Web服務(wù)器的訪問(wèn)請(qǐng)求,通過(guò)SQL語(yǔ)句對(duì)數(shù)據(jù)庫(kù)進(jìn)行增、刪、查、改等操作,并將結(jié)果發(fā)送給Web服務(wù)器[5]。
自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件采用B/S模式的三層體系結(jié)構(gòu),優(yōu)點(diǎn)是客戶(hù)端軟件只負(fù)責(zé)顯示邏輯,即實(shí)時(shí)顯示各個(gè)自動(dòng)加藥裝置檢測(cè)水質(zhì)參數(shù)的數(shù)據(jù)、趨勢(shì)曲線等功能,而不用負(fù)責(zé)數(shù)據(jù)庫(kù)的訪問(wèn)以及復(fù)雜數(shù)據(jù)的處理和計(jì)算。事務(wù)處理邏輯部分主要由Web服務(wù)器完成,這樣一方面減輕了客戶(hù)端軟件的壓力,另一方面減少了維護(hù)人員對(duì)客戶(hù)端軟件程序的維護(hù)工作,從而可以使他們?cè)赪eb服務(wù)器和數(shù)據(jù)庫(kù)服務(wù)器程序的更新上投入更多的精力[6]。對(duì)于這種三層體系結(jié)構(gòu)而言,它們之間的關(guān)系是相互獨(dú)立的,即層與層之間的改變互不影響。下面分別對(duì)數(shù)據(jù)庫(kù)服務(wù)器端程序和Web服務(wù)器端程序的設(shè)計(jì)進(jìn)行詳細(xì)介紹。
在石化自動(dòng)加藥監(jiān)測(cè)系統(tǒng)中,現(xiàn)場(chǎng)數(shù)據(jù)采集箱與系統(tǒng)數(shù)據(jù)庫(kù)服務(wù)器進(jìn)行通信的方式是使用Socket技術(shù)。后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器端軟件的功能是監(jiān)聽(tīng)某個(gè)固定的端口,接受現(xiàn)場(chǎng)數(shù)據(jù)采集箱的連接請(qǐng)求,當(dāng)連接成功后,將發(fā)送過(guò)來(lái)的循環(huán)水水質(zhì)數(shù)據(jù)保存在后臺(tái)數(shù)據(jù)庫(kù)。在程序主線程中,最大連接數(shù)的上限是11,程序主線程的流程圖如圖3所示。在本次設(shè)計(jì)中,數(shù)據(jù)庫(kù)采用Microsoft SQL Server 2016。
在圖3中,System.Threading.Timer是應(yīng)用比較普遍的定時(shí)器類(lèi),同時(shí)也是使用回調(diào)方法的計(jì)時(shí)器類(lèi),使用方法比較簡(jiǎn)單。另啟線程的源代碼如下:
System.Threading.Timer ti=new System.Threading.Timer(new TimerCallback(ReceiveData),cs,0,0);
TimerCallback函數(shù)委托指定System.Threading.Timer執(zhí)行的方法為ReceiveData(object obj),cs為回調(diào)方法時(shí)所使用的對(duì)象。當(dāng)serversocket.Accept()函數(shù)的后兩個(gè)參數(shù)的值都為零時(shí),啟動(dòng)計(jì)時(shí)器,然后ReceiveData()函數(shù)調(diào)用Receive()方法來(lái)接收現(xiàn)場(chǎng)數(shù)據(jù)采集箱的循環(huán)水水質(zhì)指標(biāo)數(shù)據(jù),調(diào)用insert_into_sql()方法將水質(zhì)數(shù)據(jù)保存到后臺(tái)的數(shù)據(jù)庫(kù)中[7]。
Insert_into_sql()函數(shù)的主要作用是通過(guò)調(diào)用ADO.NET數(shù)據(jù)庫(kù)操作類(lèi)來(lái)實(shí)現(xiàn)循環(huán)水水質(zhì)數(shù)據(jù)向Microsoft SQL Server 2016數(shù)據(jù)庫(kù)的高效導(dǎo)入[8],具體的程序代碼如下:
//連接數(shù)據(jù)庫(kù),數(shù)據(jù)庫(kù)服務(wù)器為XHS-PC,數(shù)據(jù)庫(kù)名為aspszdb
stringmyStr="Data Source=XHS-PC; Initial Catalog=aspszdb; Integrated Security=True";
SqlConnection myConn=new SqlConnection(myStr) ;
myConn.Open();
//使用SQL語(yǔ)言將數(shù)據(jù)導(dǎo)入數(shù)據(jù)庫(kù)
SqlCommand cmd=new SqlCommand(strSQL.ToString(),myConn)
Cmd.ExecuteNonQuery();
在實(shí)際的組網(wǎng)過(guò)程中,若后臺(tái)的數(shù)據(jù)庫(kù)服務(wù)器的IP地址是隨機(jī)變化的,則現(xiàn)場(chǎng)的數(shù)據(jù)采集箱與后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器端將無(wú)法進(jìn)行有效的連接。文中通過(guò)采用動(dòng)態(tài)域名解析服務(wù)的方法能夠有效地解決這種問(wèn)題。首先,與DNS(domain name system,域名系統(tǒng))服務(wù)商取得聯(lián)系,為數(shù)據(jù)庫(kù)服務(wù)器申請(qǐng)域名teckb.eopc.net,并將該域名寫(xiě)入現(xiàn)場(chǎng)數(shù)據(jù)采集箱的程序中[9]。然后,當(dāng)后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器接入石化企業(yè)的Intranet后,它會(huì)把自己當(dāng)前的IP地址發(fā)送給DNS服務(wù)器。再次,當(dāng)現(xiàn)場(chǎng)數(shù)據(jù)采集箱端建立TCP/IP連接時(shí),它會(huì)通過(guò)域名尋址方式與DNS服務(wù)器進(jìn)行連接,再由DNS服務(wù)器找到后臺(tái)數(shù)據(jù)庫(kù)服務(wù)器動(dòng)態(tài)IP地址,這樣數(shù)據(jù)庫(kù)服務(wù)器和現(xiàn)場(chǎng)數(shù)據(jù)采集箱就能夠成功地建立通信連接,從而進(jìn)行數(shù)據(jù)傳輸[10]。
ASP.NET是一種目前比較流行的基于.NET Framework平臺(tái)的Web應(yīng)用程序開(kāi)發(fā)技術(shù),由微軟公司研發(fā),而且可以使用微軟.NET Framework平臺(tái)所提供的全部功能。同時(shí),它采用高效率的面向?qū)ο蟮姆椒ㄩ_(kāi)發(fā)Web應(yīng)用程序,其開(kāi)發(fā)的程序可以支持動(dòng)態(tài)編譯、類(lèi)型安全以及異??刂频萚11]。ASP.NET支持多種類(lèi)型的語(yǔ)言進(jìn)行編程,例如Visual C++、Visual Basic和Visual C#等。
IIS(Internet information services)是目前微軟公司中最流行的Web服務(wù)器產(chǎn)品之一,它是能夠在Intranet或Internet上發(fā)布信息的Web服務(wù)器,許多著名的網(wǎng)站都是IIS服務(wù)器上構(gòu)建的[12]。
本設(shè)計(jì)采用C#作為開(kāi)發(fā)語(yǔ)言,Visual Studio 2013作為開(kāi)發(fā)環(huán)境,ASP.NET作為Web程序的實(shí)現(xiàn)技術(shù),并采用與之兼容性較好的IIS作為Web服務(wù)器平臺(tái)。Web服務(wù)器可以將設(shè)計(jì)好的網(wǎng)站內(nèi)容通過(guò)IIS進(jìn)行發(fā)布,實(shí)現(xiàn)循環(huán)水水質(zhì)監(jiān)測(cè)數(shù)據(jù)的可視化操作[13]。石化循環(huán)水自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件的功能結(jié)構(gòu)如圖4所示。
圖4 監(jiān)測(cè)系統(tǒng)軟件功能結(jié)構(gòu)
(1)用戶(hù)登錄模塊:監(jiān)控中心的工作人員可以通過(guò)此模塊進(jìn)入自動(dòng)加藥監(jiān)測(cè)系統(tǒng)的功能界面。此模塊可以設(shè)置每個(gè)員工的登錄密碼和登錄權(quán)限,根據(jù)員工的級(jí)別設(shè)置不同的訪問(wèn)權(quán)限,這樣有利于保證整個(gè)自動(dòng)加藥監(jiān)測(cè)系統(tǒng)的安全性。此外,該模塊的主要功能是由ASP.NET網(wǎng)站管理工具來(lái)實(shí)現(xiàn)的。
(2)實(shí)時(shí)信息顯示模塊:該模塊的主要功能將每個(gè)水處理車(chē)間的循環(huán)水水質(zhì)指標(biāo)數(shù)據(jù)以表格的形式實(shí)時(shí)顯示在Web前端頁(yè)面,從而使石化企業(yè)的工作人員可以掌握最新的循環(huán)水運(yùn)行狀態(tài)。
(3)趨勢(shì)曲線分析模塊:將石化企業(yè)各個(gè)循環(huán)水自動(dòng)加藥裝置的檢測(cè)數(shù)據(jù)以曲線的形式顯示出來(lái),能夠更加直觀形象地表明循環(huán)水水質(zhì)指標(biāo)數(shù)據(jù)的走向趨勢(shì),監(jiān)控人員可以一目了然地準(zhǔn)確了解每項(xiàng)水質(zhì)指標(biāo)的變化情況,進(jìn)而判斷循環(huán)水的運(yùn)行狀態(tài)是否正常。
(4)雷達(dá)圖分析模塊:將雷達(dá)圖分析技術(shù)應(yīng)用于自動(dòng)加藥監(jiān)測(cè)系統(tǒng)中的水質(zhì)數(shù)據(jù)分析具有重要意義。通過(guò)將PH、濁度、余氯、總磷等水質(zhì)參數(shù)經(jīng)過(guò)歸一化處理后顯示在雷達(dá)圖上,有助于工作人員直觀地分析出各項(xiàng)水質(zhì)參數(shù)是否正常,進(jìn)而判斷循環(huán)水的整體運(yùn)行質(zhì)量。文中通過(guò)采用Web前端技術(shù)Javascript中的ProcessArray()函數(shù)編程實(shí)現(xiàn)水質(zhì)數(shù)據(jù)的歸一化處理,使各個(gè)水質(zhì)參數(shù)處于同一數(shù)量級(jí),然后又主要使用Highcharts控件中的highchart.js和jquery.js文件編程實(shí)現(xiàn)各個(gè)水質(zhì)參數(shù)數(shù)據(jù)在雷達(dá)圖上的顯示。
(5)歷史數(shù)據(jù)查詢(xún)模塊:循環(huán)水水質(zhì)指標(biāo)的歷史數(shù)據(jù)對(duì)石化企業(yè)有著重要意義。工作人員可以自定義區(qū)間對(duì)石化廠區(qū)各個(gè)水處理車(chē)間的水質(zhì)指標(biāo)歷史數(shù)據(jù)進(jìn)行查詢(xún),然后通過(guò)對(duì)歷史數(shù)據(jù)的分析,可以全面掌握每項(xiàng)水質(zhì)參數(shù)的變化情況。對(duì)于經(jīng)常出現(xiàn)異常的水質(zhì)參數(shù),可以進(jìn)行針對(duì)性地處理,有助于提高企業(yè)的生產(chǎn)效率和循環(huán)水系統(tǒng)的正常運(yùn)行。
(6)報(bào)警提示模塊:該模塊是自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件功能模塊的重要組成部分。通過(guò)對(duì)循環(huán)水的超標(biāo)水質(zhì)參數(shù)進(jìn)行報(bào)警提示,有助于石化工程技術(shù)人員第一時(shí)間采取有效措施進(jìn)行處理,防止工業(yè)事故的發(fā)生,保證生產(chǎn)正常運(yùn)行。由于各項(xiàng)水質(zhì)參數(shù)都有衡量自己是否正常的閾值,所以在報(bào)警模塊的程序設(shè)計(jì)中,會(huì)為每項(xiàng)水質(zhì)參數(shù)設(shè)定自己的閾值,如果系統(tǒng)采集的水質(zhì)參數(shù)的實(shí)時(shí)數(shù)據(jù)超過(guò)該閾值,則會(huì)在前端的瀏覽器頁(yè)面進(jìn)行報(bào)警提示。
基于B/S架構(gòu)的石化自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件的設(shè)計(jì)實(shí)現(xiàn)了客戶(hù)端的零安裝、零維護(hù),工作人員可以在企業(yè)內(nèi)網(wǎng)覆蓋的任何地方通過(guò)監(jiān)測(cè)終端的瀏覽器對(duì)系統(tǒng)進(jìn)行訪問(wèn),提高了系統(tǒng)的靈活性和開(kāi)放性,降低了系統(tǒng)的開(kāi)發(fā)和維護(hù)成本[14]。同時(shí),自動(dòng)加藥監(jiān)測(cè)系統(tǒng)軟件基于B/S的三層架構(gòu)模式,每層之間相互獨(dú)立,并且都有自己的封裝代碼,在設(shè)計(jì)方面滿(mǎn)足了循環(huán)水水質(zhì)監(jiān)測(cè)數(shù)據(jù)的查詢(xún)和顯示需求,在程序方面代碼聚合程度較高,維護(hù)比較方便,擴(kuò)展相對(duì)容易[15]。因此,基于B/S架構(gòu)的循環(huán)水自動(dòng)加藥監(jiān)測(cè)軟件在石化企業(yè)的工業(yè)生產(chǎn)中具有重要的工程應(yīng)用價(jià)值,未來(lái)發(fā)展前景非常廣闊。